正弦波的产生
已有 779 次阅读2008-12-28 23:50
|个人分类:学习日志|
一.使用查找表
1)通过TurboC或Matlab,可以预先计算出正弦数据表: DataTblSine=ValueScale*sin(2.0*pi*n*f/Fs), 生成数组或H文件;
2)每Ts周期发生中断,在ISR中,从数据表中取出一数据点至DAC;
注意:浮点与定点转换及误差,ADC/DAC的满刻度值......
二.使用迭代法
1)使用差分方程y(n)=Ay(n-1)-y(n-2), 其中A=2cos(wT), y(-1)=-sin(wT), y(-2)=-sin(2wT), y(-1)与y(-2)是两个初始条件, w=2*pi*f, 取样周期T=1/Fs, Y(z)=z*sin(wT)/(z^2-Az+1).
2)每Ts周期发生中断,在ISR中,进行上述差分方程计算并输出一数据点至DAC;
注意:浮点与定点转换及误差,ADC/DAC的满刻度值......