ADI 技术
直播中

陈具松

8年用户 156经验值
私信 关注
[问答]

AD5934发不出正弦波,请问是什么情况?

/*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。

回帖(2)

李波

2018-8-7 07:57:15
这个的代码应该不难,建议在确定硬件电路没问题的情况下,再检查代码问题。
举报

陈具松

2018-8-7 08:15:17
硬件没有问题啊,连接很简单,应该就是软件出错了 但是不知道错误在哪
举报

更多回帖

发帖
×
20
完善资料,
赚取积分