已回答假定已回答

AD5934发不出正弦波

DIS4 在 2017-9-26 詢問的問題
最後回覆由DIS4於2017-9-27提供

/*I2C写*/

 

 

        /*   第一步,将频率扫描参数编程写入相应寄存器*/

 

 

        I2C_write(0x0D,0x82,0x10);//起始频率为5KHZ  A3D70A

        I2C_write(0x0D,0x83,0x62);

        I2C_write(0x0D,0x84,0x4D);

        I2C_write(0x0D,0x85,0x00);

        I2C_write(0x0D,0x86,0x53);//频率增加10HZ    53E2

        I2C_write(0x0D,0x87,0xE2);

        I2C_write(0x0D,0x88,0x00);//150个点

        I2C_write(0x0D,0x89,0x96);

        I2C_write(0x0D,0x8A,0x01);//511*2=1022个周期。延迟时间为 511*2*1/激励信号频率(30KHZ)建立时间

        I2C_write(0x0D,0x8B,0xFF);

       // SysCtlDelay(SysCtlClockGet()/(2000*3));

 

 

        /*   第二步,待机模式  */

 

 

 

 

        I2C_write(0x0D,0x80,0xB0);

        I2C_write(0x0D,0x81,0x08);//用过外部晶振1M

        I2C_write(0x0D,0x80,0x01);

        /*   第三步,向控制寄存器发出以起始频率初始化命令  */

        I2C_write(0x0D,0x80,0x10);

        I2C_write(0x0D,0x81,0x08);

         /*   第四步,建立足够的时间周期      */

      // I2C_write(0x0D,0x8A,0x03);//511*2=1022个周期。延迟时间为 511*2*1/激励信号频率(30KHZ)

      //  I2C_write(0x0D,0x8B,0xFF);

      // SysCtlDelay(SysCtlClockGet()/(2000*3));

        /*   第五步,向控制寄存器发出启动频率扫描命令      */

        I2C_write(0x0D,0x80,0x20);

              /*I2C读*/

        /*   第一步,轮询状态寄存器,检查DFT转换是否完成      */

       I2C_read(0x0D,0x8F);

 

 

       while (!0x02==(datarecieve&0x02))

               {

             }//判读D1这一位是否为1,如果为1,则DFT转换完成可以继续进行,如果没有,则等待

        /*   第二步,读取实部虚部值     */

      //  UARTprintf("  Re: '%c'  . . .  ");

      I2C_read(0x0D,0x94);

 

以上是我的程序,麻烦大家帮我看看哪里错了。读0x8F的值是70,VOUT口没有正弦波。设置MCLK的外部晶振为1Mhz,起始频率是500Hz。

結果