通过两个单片机和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倍。各位有何见解? |