This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1261: ADS1261与stm32进行通信问题

Part Number: ADS1261

你好,我正在做的使用ads1261进行双通道切换采集数据。

以上是我的部分代码,AIN0与AIN1组成一个通道一的差分输入,TEMP_P与TEMP_N组成一个通道二差分输入,但是奇怪的是,当我全速运行代码时,code1变量的值变为通道二的值,code2变为通道一的值(如下图a所示),理论应该是code1为通道一的值,code2为通道二的值(如下图b所示),并且当我单步调试时或者加入一个较大的delay函数,就会出现图b所示正确结果。

 图a

 图b

同时我发现当我发送stop指令之后,ADC似乎不能停止工作,它的DRDY引脚依旧在周期性变化,请问这个是什么原因?

  • 您好

    https://www.ti.com.cn/tool/cn/download/ADS1261-C-EXAMPLE-CODE

    这是官方提供的C的源代码。

    可能的原因

    1. 数据读取顺序问题

      • 确保在读取数据前,ADC的通道配置已经正确设置,并且在每次转换后读取数据时要确保读取的是正确的通道数据。有时候,如果代码执行速度太快,可能会在ADC还未完成通道切换或数据转换时就读取数据,导致数据错位。
    2. 代码执行时序问题

      • 你的描述中提到,当全速运行代码时出现问题,而单步调试或加入较大延时后问题消失,这很可能是代码执行速度与ADC转换速度不匹配造成的。检查你的代码中是否有适当的等待或延时,确保在ADC完成转换后再读取数据。
    3. 配置寄存器写入错误

      • 确保在配置ADC时,所有相关的寄存器都写入了正确的值。有时候配置寄存器的某些位被错误设置,可能会导致ADC行为异常。