细说MCU的DAC输出含谐波的正弦波形信号的方法

36 篇文章 0 订阅
34 篇文章 0 订阅

目录

一、参考硬件

二、 建立新工程

三、代码修改

1.用MATLAB生成含谐波的波形数据

2. 修改代码PV

四、查看结果


一、参考硬件

        本项目依赖的软件和硬件工程参考本文作者写的文章:细说MCU的DAC1和DAC2各自输出一通道模拟信号的方法-CSDN博客  https://wenchm.blog.csdn.net/article/details/140791751icon-default.png?t=N7T8http://xn--https-rfa//wenchm.blog.csdn.net/article/details/140791751        要输出含谐波的正弦波形,关键是生成一个周期的含谐波信息的波形数据。

二、 建立新工程

         本文示例的工程配置与参考文件一样。不再重复进行配置说明。

三、代码修改

         本文示例的软件代码除了送给DAC2的波形数据与参考文件不一样外,其他的软件代码部分均与参考文件一致。

1.用MATLAB生成含谐波的波形数据

A = 4096/2-1;    %信号幅值
N = 50;		     %一个周期内的数据点数 
Ph0 = 0; 		 %信号1初始相位 
Ph2 = pi/2; 	 %信号2初始相位
y1 = sin(Ph:2*pi/N:2*pi*(1-1/N)+Ph);	%基波
y3 = sin(Ph:6*pi/N:6*pi*(1-1/N)+Ph); 	%三次谐波
SineData = ceil(0.8*A*y1+0.25*A*y3+A);
Fid = fopen('SineData.txt','w');
fprintf(Fid,'%d,',SineData);
fclose(Fid);

        上面用了两条语句分别生成基波和三次谐波,最后一句将它们按一定比例相加。根据这些语句,可以得到包含谐波的波形数据,然后将该数据放入数组SineWaveDataPh0中。

2. 修改代码PV

/* USER CODE BEGIN PV */
uint16_t SineWaveDataPh90[DAC_BUFFER_SIZE] = {3071,3063,3039,2999,2944,2876,2794,2700,2596,
		2483,2364,2239,2112,1983,1856,1731,1612,1499,1395,1301,1219,1151,1096,1056,1032,1024,1032,
		1056,1096,1151,1219,1301,1395,1499,1612,1731,1856,1983,2112,2239,2364,2483,2596,2700,2794,
		2876,2944,2999,3039,3063
};

uint16_t SineWaveDataPh0[DAC_BUFFER_SIZE] = {2047,2630,3155,3576,3858,3983,3957,3802,3558,
 3275,3003,2792,2676,2676,2792,3003,3275,3558,3802,3957,3983,3858,3576,3155,2630,2048,1465,
 940,519,237,112,138,293,537,820,1092,1303,1419,1419,1303,1092,820,537,293,138,112,237,519,
 940,1465
 };
/* USER CODE END PV */

四、查看结果

        修改数组SineWaveDataPh0之后,编译工程并下载到硬件中,将程序运行起来。分别用示波器查看PA4和PA6上波形。 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wenchm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值