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

avatar
作者
猴君
阅读量: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;		     %一个周期内的数据点数  Ph = 0; 		 %信号1初始相位  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上波形。 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!