正弦波用sin函数来产生数据,放大一定倍数(比如2047)后再加上偏移(比如2047)后取整数作为即可,一般根据精度可选40点或80点的。或者网上直接下载现成的正弦数据表也可以啊!
三角波更简单,y=kx。在输出一个周期波形的数组中数据从0开始以等差方式递增到某个值,然后再以等差的方式减少回到0.
根据输入频率信息,生成正弦波/余弦波数组
用固定的时间间隔将数据经DAC输出。
具体来说如果DAC最小间隔时间Ts对应的采样率是f0;
信号频率是fs;
生成数组的函数就是
for(i=0;i { Buff[i]=2048+4095*sin (2*3.14*fs*i/f0); } 输出可以通过定时器中断进行DAC
通过修改定时器的初始值、预分频、及系统时钟即可。