阅读量:0
目录
一、参考硬件
本项目依赖的软件和硬件工程参考本文作者写的文章:细说MCU的DAC1和DAC2各自输出一通道模拟信号的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/140791751http://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上波形。