TI论坛
直播中

王健

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

ADS1216Y转换后的数据读出来随机,不正确,为什么?


  • 如题,硬件:AN0,AN1差分,内部参考2.5V,DSYNC及DRDY悬空。IO用来选在外部输入。单片机IO模拟SPI。
    软件读写ADS1216寄存器正常,AD转换后的数据读出来随机,不正确。
    请大侠赐教,急等,谢谢!
    void AD_Convert(void)
    {
      BYTE temp;  
      SPI_CSN_CLR;
      DrvSYS_Delay(3000);//Ñ¡ÔñADS1216Y

    SpiTxRxByte(0xfe);
    DrvSYS_Delay(100);//¸´Î»¼Ä´æÆ÷

      SpiTxRxByte(0x50);
      SpiTxRxByte(0x02);
      SpiTxRxByte(0x0e);//0x00ÅäÖÃSETUP¼Ä´æÆ÷
      SpiTxRxByte(0x01);//ÅäÖÃMUX¼Ä´æÆ÷,Ñ¡ÔñͨµÀ0+¡¢Í¨µÀ1-²î·Ö
      SpiTxRxByte(0x00);//ÅäÖÃACR,ÔöÒæÑ¡1µµ
    DrvSYS_Delay(100);
    //test    ¼Ä´æÆ÷¶Áok
    //  SpiTxRxByte(0x19);
    //  SpiTxRxByte(0x00);
    //  AD0_VALUE[0] = SpiTxRxByte(0);
    //test  
      SpiTxRxByte(0x58);
      SpiTxRxByte(0x01);
      SpiTxRxByte(0x80);//ÅäÖòÉÑùƵÂʼĴæÆ÷0x780
      SpiTxRxByte(0x07);
    DrvSYS_Delay(100);
      SpiTxRxByte(0x57);//ÅäÖÃIOȫΪÊä³ö
      SpiTxRxByte(0x00);
      SpiTxRxByte(0x00);
    DrvSYS_Delay(100);

      SpiTxRxByte(0x5D);//ÅäÖÃÂú¿Ì¶È¼Ä´æÆ÷
      SpiTxRxByte(0x02);
      SpiTxRxByte(0xFF);
      SpiTxRxByte(0xFF);
      SpiTxRxByte(0xFF);
    DrvSYS_Delay(100);

      SpiTxRxByte(0x59);
      SpiTxRxByte(0x00);
      SpiTxRxByte(0x37);//Ñ¡ÔñÂ˲¨Ä£Ê½,SINC3£¬Ë«¼«ÐÔ£¿
    DrvSYS_Delay(100);

      SpiTxRxByte(0x56);
      SpiTxRxByte(0x00);
      SpiTxRxByte(0x08);//08hΪͨµÀ0(0aH,0cH,0eH)
    DrvSYS_Delay(1000);

    SpiTxRxByte(0xfc);

    DrvSYS_Delay(500);
    wait:    SpiTxRxByte(0x19);//¶ÁM/DEC1,È¡/DRDY
    SpiTxRxByte(0x00);
      temp=SpiTxRxByte(0);
      temp=temp&0x80;
    if(temp)goto wait;//µÈ´ýÊý¾Ý×¼±¸ºÃ


      SpiTxRxByte(0x01);
      DrvSYS_Delay(100);
    SpiTxRx3Byte(0);
      SPI_CSN_SET;
    }

回帖(2)

陆欣楠

2025-1-9 14:51:35
你应该需要跟 DRDY 同步.
举报

杜喜喜

2025-1-13 11:45:50
根据您提供的信息,您在使用ADS1216Y进行AD转换时遇到了数据读出来随机、不正确的问题。以下是一些可能的原因和解决方案:

1. 硬件连接问题:请检查您的硬件连接是否正确。确保AN0和AN1之间的差分输入连接正确,以及内部参考2.5V是否稳定。此外,检查DSYNC和DRDY引脚是否正确悬空。

2. SPI通信问题:请确保您的单片机IO模拟SPI通信是否正确。检查SPI_CSN_CLR、SpiTxRxByte等函数是否正确实现。您可以尝试使用示波器或逻辑分析仪检查SPI通信波形,以确保数据传输正确。

3. ADS1216Y配置问题:请检查您的ADS1216Y寄存器配置是否正确。根据您的代码,您已经设置了0x50、0x02和0x0e。请确保这些寄存器值符合您的应用需求。您可以查阅ADS1216Y的数据手册,了解各个寄存器的功能和配置方法。

4. 软件读取问题:请检查您的软件读取AD转换结果的代码是否正确。确保在读取数据之前,您已经正确地发送了读取命令,并且正确地处理了返回的数据。

5. 电源问题:请检查您的电源是否稳定。不稳定的电源可能会导致AD转换结果不稳定。

6. 干扰问题:请检查您的电路是否存在电磁干扰。电磁干扰可能会导致AD转换结果不稳定。您可以尝试使用屏蔽线和地线来减少干扰。

综上所述,您需要从硬件连接、SPI通信、ADS1216Y配置、软件读取、电源和干扰等方面进行排查,以找到问题的根本原因并解决。希望这些建议对您有所帮助。
举报

更多回帖

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