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.

[参考译文] ADS1147:从寄存器读取的数据与配置不一致。

Guru**** 2535750 points
Other Parts Discussed in Thread: ADS1147

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1561316/ads1147-the-data-read-from-the-register-is-inconsistent-with-the-configuration

部件号:ADS1147


工具/软件:

 在电阻检测功能的长期测试中、我们发现了 2 个问题

对于通过 SPI 配置的寄存器、在重复读取它们时、从寄存器读取的数据可能不一致(一小时内发生大约两到三次)、但再次读取它们将是一致的。

下图显示了通过 SPI 读取寄存器 0x03(在通信期间需要添加 0x20、因此为 0x23)的操作。 预期从该寄存器读取的数据为 0x01、但实际读数为 0x07。

2.对于固定电阻值,连续读取其转换后的 ADC 结果时,读取值可能偶尔会突然下降,但再次读取会恢复该值。

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

    尊敬的 Yuchun Guo:

    我假设您在读取/写入命令之前发送了 SDATAC 命令、对吗?

    是否在发送这些命令之前停止转换?

    您的系统中是否存在数字隔离? 您能发送原理图吗?

    是否有任何其他器件与 ADS1147 共享 SPI 总线

    您能否解释一下“读取值突然下降“的含义? 您能否提供您获得的数据、以便我们查看? 请提供 ADC 寄存器设置以及以十六进制表示的原始 ADC 数据

    -布莱恩

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

    您好 Bryan、

    我假设您在读取/写入命令之前发送了 SDATAC 命令、对吗?

    ——在连续读取寄存器的过程中,没有发送 SDATAC。

    是否在发送这些命令之前停止转换?

    --在连续转换模式下,在连续读取转换结果的过程中,我们不写入寄存器,只读取寄存器。

    您的系统中是否存在数字隔离? 您能发送原理图吗?

    是的,在 MCU 和 ADS1147 之间有一个数字隔离器。 抱歉、我无法分享 原理图。

    是否有任何其他器件与 ADS1147 共享 SPI 总线

    “不会的

    您能否解释一下“读取值突然下降“的含义?

    我提供的固定电阻器的实际值为 3000、但读数为 2950、然后下一个值返回 3000。

    您能否提供您获得的数据、以便我们查看? 请提供 ADC 寄存器设置以及以十六进制表示的原始 ADC 数据

    以下三个寄存器是固定的,配置如下:

    REG_MUX1 = 0x20

    REG_IDAC1 = 0x01

    REG_GPIOCFG = 0x0C

    以下三个寄存器将根据电阻值动态调整:

    示例 1:如果电阻在 10000Ω 范围内、则 REG_IDAC0 = 0x02、REG_GPIODAT = 0x08、REG_SYS0 = 0x01

    示例 2:如果电阻在 500Ω 范围内、则 REG_IDAC0 = 0x06、REG_GPIODAT = 0x04、REG_SYS0 = 0x11

    正常寄存器值

    寄存器值异常

    -Karl

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

    我们使用全双工模式读取 ADC 转换结果。

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

    你好 Bryan Lizon86 

    非常感谢你回答这个问题、但我也希望收到你对任何其他问题的答复。 谢谢你。

    -泽维

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

    李泽伟:

    我已经离开办公室了,感谢你的耐心

    您能帮助回答一些其他问题吗:

    • 这些问题是否随机发生? 换句话说、寄存器读取是否有任何模式或数据错误? 就频率(例如,它们是否每 5 分钟发生一次) 或任何其他方面而言(例如寄存器 0x03 的寄存器读取总是错误吗?)
    • 电阻值“3000"和“和“2950"的“的代码有何差异?
    • 如果此问题是随机发生的、则很难进行故障排除。 这可能是随机的通信错误 — 您说过,如果您读取同一寄存器的 2x 或相同的数据的 2x、那么这样总是可以接受的?

    -布莱恩

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

    你好 Bryan Lizon86 ,

    感谢您的答复

    • 这些问题是随机发生的、从 ADC 采样结果读取的数据中偶尔会出现大约每小时一次的异常;从寄存器读取的数据偶尔会遇到异常、该异常每小时发生大约两到三次。 异常寄存器不是每次都固定的。 我们捕获了三个寄存器异常、其中两个是 0x0A、一个是 0x03。
    • 寄存器读取异常偶尔会发生、然后恢复正常、因此我们目前仅在三个连续的寄存器读取异常后响应进一步的处理情况;
      由于采样时间为 100ms、读取 ADC 数据的时间间隔为 30ms、因此如果连续读取三次 ADC 数据的值相同、则该数据被认为是可靠的;
      您认为这两种临时处理方法适合我们吗?
    • 就目前的情况而言、我们需要从根本上解决这个问题。 我们可以采取什么方向?

    -泽维

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

    李泽伟:

    关于您发送的逻辑分析仪捕获结果:您是否在探测 ADC 引脚以获得这些捕获结果? 还是在控制器 (MCU) 引脚处进行探测? 您至少可以尝试这两种方法以确保它们一致、即数据不会因穿过隔离栅而损坏

    我真的不知道该怎么说。 如果您可以随意重现此问题、我们可能会提供额外支持、但此处似乎并非如此。 在一小时内进行一些随机读数可能不会表明 ADC 有问题。 这听起来像是一个通信问题、可能是由于电源毛刺脉冲、接地漂移、 外部干扰(例如 EMI)或相邻信号耦合造成的。 再次,这些只是猜测

    您可以尝试进一步调查、看看是否可以确定问题的原因、或者您可以实施通信错误检查。 这基本上就是您现在执行的操作、连续读取相同的数据或寄存器 2-3 次。  

    -布莱恩