通过两个单片机和DA产生幅度和频率可调的正弦波,主单片机发送的程序如下:
void SpiSend() { //发送频率 iFreq= (unsigned long)(1717.9869184*Freq+0.5);//1717.9869184=1.6777216*2*512
TsineH= iFreq>>16; TsineM= iFreq>>8; TsineL= iFreq;
SPI_STC(0xfa); SPI_STC(0xf5); SPI_STC(TsineH); SPI_STC(TsineM); SPI_STC(TsineL); SPI_STC(TsineH+TsineM+TsineL); .... } 不明白上述公式是怎么计算出来的?正弦波数据表采样点数为512点,iFreq为发送到从单片机的频率,Freq为实际的频率的10倍。各位有何见解? |