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.

[参考译文] ADS1118:多路复用器的最长切换时间是多少?

Guru**** 2539500 points
Other Parts Discussed in Thread: ADS1118

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/572013/ads1118-what-is-the-maximum-switching-time-for-the-mux

部件号:ADS1118

我正在使用ADS1118读取四个独立模拟输入。 微控制器以循环方式读取每个通道(加温度)。 要使其显式,以下是SPI事务:

  1. 将config设置为“CH1”
  2. 从CH1读取转换结果,将config设置为Read CH2
  3. 从CH2读取转换结果,将config设置为读取ch3
  4. 从ch3读取转换结果,将config设置为读取CH4
  5. 从CH4读取转换结果,将CONFIG设置为读取温度
  6. 读取温度结果,将CONFIG设置为CH1

然后重复步骤2-6。 这通常有效并产生良好的结果。 但是,我注意到了我最初认为的噪音。 经进一步调查后,噪音很正常。 有时,数据流中的所有通道都被一个通道偏移。 请参阅下面的数据表以了解发生的情况示例。

Temp,Ch1,Ch2,Ch3,CH4
25 1 2 3 4
25 1 2 3 4
25 1 2 3 4
4 25 1 2 3
25 1 2 3 4
25 1 2 3 4 

但是,有时它更微妙,如以下内容:
Temp,Ch1,Ch2,Ch3,CH4
25 1 2 3 4
25 1 2 3 4
25 1 2 3 4
25 1 1 2 4
25 1 2 3 4
25 1 2 3 4 

我已经执行了多次检查,以验证这不是我的端的代码问题。虽然我不会完全低估软件错误的可能性,但这确实看起来像是UC和ADC之间的计时问题。

另一个线程中的某个人有类似问题: e2e.ti.com/.../46.7305万

在该线程中,建议最大采样时间应为 2*(1/data rate)。 我独立得出了同样的结论,但不幸的是,这是无效的。 即使以50Hz的速率从ADS1118读取数据并将ADC上的数据速率设置为860SPS,我也发现错误仍会继续发生,只是频率较低。 如果使用860SPS以低于10Hz的频率读取数据,则不会出现错误。

该线程还建议使用单激发模式而不是连续模式。 我尝试过这两种模式,在两种模式下都看到类似的错误率。  

我已从16位事务更改为32位事务,以验证配置寄存器是否与我的预期命令匹配。 它没有以任何方式改变结果。  

还进行了更新,以单次读取模式读取每个通道2x,希望仅在第一次读取时出现错误。 仍然会看到偶尔出现的错误(尽管这确实会产生较低的错误率)。  

mux是否有切换时间? 它未在数据表中列出。 在所有通道中循环使用是否有任何其他提示或最佳实践?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Philip:

    感谢您的查询。 对于信道到信道多路复用,我们强烈建议使用单触发模式

    在32位传输模式下,您是否可以读回寄存器设置以确保mux设置已更新。 您还可以检查输出数据是否代表先前或更新的通道设置。 您是否可以在连续模式和单次激发模式中确定SPI通信波形的范围,以供我们查看? 在 使用32位传输的连续转换模式下,确定前三个数据样本以及寄存器值的范围非常有用

    在单次激发模式下,您是在DOUT/DRDY引脚上轮询还是在发送命令以切换mux之后使用固定延迟?

    MCU中是否存在内存偏移问题?

    谢谢!

    克鲁纳尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。  

    我们最终确定问题是MCU上的软件错误。 有时,MCU会从ADC读取多次而无需等待转换完成。 因此,它将从上次转换中读取数据。 我们现在已经纠正了该错误。  

    我们现在配置为使用单次激发模式,因为这是建议的。 我们使用固定的时间延迟从ADC读取数据(使用DOUT/DRDY引脚时未成功,但对于我们的应用来说,时间延迟是正常的)。

    再次感谢,此问题是由我们自己的软件错误造成的。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    菲利普

    很高兴知道问题已解决。 如果您有任何其他问题,请告知我们。

    谢谢!

    克鲁纳尔