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.

[参考译文] ADS1292R:间歇性地遇到从器件接收到的所有数据均为零的问题。

Guru**** 2362840 points
Other Parts Discussed in Thread: ADS1292R, ADS1292
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1519056/ads1292r-intermittently-experiencing-an-issue-where-all-received-data-from-the-device-is-zero

器件型号:ADS1292R
Thread 中讨论的其他器件: ADS1292

工具/软件:

我当前使用的是 ADS1292R、因此遇到从器件接收到的所有数据均为零的问题。
有趣的是、发生此问题时、读取 ADS1292R 的寄存器仍会正确返回值、就像在初始化期间配置的值一样。 这表明 SPI 通信和寄存器设置看起来正常、但输出数据保持为零。
大约每20个下电上电周期发生一次此问题(不是精确测量)。 一旦器件进入此状态、它将继续输出零数据、直到电源完全循环或仅重新初始化 ADS1292R、同时保持主板通电。
我的 ADS1292R 初始化序列如下:

[我的初始化序列]
主板通电
ADS1292R RESET HIGH:1秒
ADS1292R RESET LOW:100 ms
ADS1292R RESET HIGH:100 ms
SPI 收发器虚拟10字节、具有零值
延迟10ms
SDATAC (连续停止读取数据模式)
延迟10ms
配置 ADS1292R
延迟10ms
验证配置(读取 ADS1292R 寄存器)-->始终正常
延迟10ms
RDATAC (启用连续读取数据模式。)
START 引脚处于高电平

作为一种临时权变措施、我实施了一项检查、如果接收到的数据的第一个半字节不是0xC、系统会自动重新初始化 ADS1292R。
如果能深入了解导致这种行为的根本原因、以及为防止这种行为而提供的任何推荐解决方案或设计注意事项、我将不胜感激。
提前感谢您的支持。

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

    您好、Young、

    感谢您发送编修。

    /RESET 和/PWDN 信号共用同一引脚。  我认为这个问题可能是由于使器件保持在复位状态的时间过长而引起的、这会触发断电状态。 提供复位脉冲时、脉冲低电平持续时间必须介于1和512 * tMOD = 7.8125µs 至4ms (fmod = 128kHz)之间。

    您是否可以尝试调整初始化例程以将复位低电平脉冲减少到4ms 以下(即100µs)? 此外、在发出复位脉冲之前、确保时钟信号持续运行并且电源已完全斜升(请参阅图72)。

    此致、

    Ryan  

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

    您好、Ryan、

    感谢您的答复。

    最初、我将复位脉冲宽度设置为1ms、比建议的4ms 短。
    稍后、为了尝试解决问题、我将复位脉冲宽度增加到100ms。

    我还注意到、在几个示例和开源项目(例如 GitHub 存储库)中、许多实现方案施加的复位脉冲时间超过4ms。
    即使较长的复位脉冲导致器件进入断电模式、我的理解是、它仍然会经历复位和唤醒过程、因此不会导致任何功能问题。

    因此、我认为问题的根本原因不是由于更长的复位脉冲而进入断电模式。
    如果有任何我可能误解的地方、我将感谢您的指导。

    此外、我目前使用的是内部时钟、而不是外部时钟。
    主板采用超小型 BGA 封装构建、因此执行硬件级测量或探测非常困难。

    再次感谢您的支持。

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

    您好、Young、

    即使较长的复位脉冲导致器件进入断电模式、我的理解是它仍会执行复位和唤醒过程、因此不会导致任何功能问题。

    从理论上讲、是的、这是正确的。 但是、我们仍然建议在上电后使用复位脉冲、以确保正确加载内部 OTP (一次性可编程)寄存器。 如果该器件进入断电模式、则它将在下一次上电期间再次读取 OTP (与初始上电序列相同)。 为确保可靠性、最好在电源完全斜升后复位器件、以确保正确读取 OTP。

    在发送10个虚拟字节之前、您是否可以检查/DRDY 引脚并确认它正在以默认数据速率切换?

    此致、

    Ryan

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

    您好、Ryan

    • 如前所述、我已经使用了 1ms 的复位脉冲 、它比进入的4毫秒阈值短 省电模式
      因此、根据测试结果、我认为是这样 意外进入断电模式不是根本原因 一个问题。
    • 但是、我们仍然建议在上电后使用复位脉冲、以确保正确加载内部 OTP (一次性可编程)寄存器。 如果该器件进入断电模式、则它将在下一次上电期间再次读取 OTP (与初始上电序列相同)。 为确保可靠性、最好在电源完全斜升后复位器件、以确保正确读取 OTP。[/报价]
      • 但是、我不太清楚 这是要防止的具体问题 、和 这项建议在原则上和实践中如何作为一种对策 ,考虑到我已经发出了一个适当的复位后加电,并且脉冲持续时间远高于所需的最小值。
    • [报价 userid="99143" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1519056/ads1292r-intermittently-experiencing-an-issue-where-all-received-data-from-the-device-is-zero/5843941 #5843941"]

      在发送10个虚拟字节之前、您是否可以检查/DRDY 引脚并确认它正在以默认数据速率切换?

      [/报价]
      • 该检查的目的到底是什么?  

        遗憾的是、由于主板上的硬件限制、我无法使用示波器或逻辑分析仪直接测量/DRDY 引脚。
        但是、我使用调试消息间接确认了其行为:

        • 在发出 复位脉冲(100ms) 、我插入了一个 测试延迟为1000ms。

        • 在此延迟期间、 /DRDY 每2ms 切换一次 、与匹配 默认数据速率 (500SPS)。

        • 完成我的配置后、 /DRDY 每4ms 切换一次 、这正是我通过 config1寄存器配置的。

    提前感谢。

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

    您好、Young:

    感谢您的确认。 我同意、我们可以排除将上电复位作为潜在的根本原因。 此外、了解/DRDY 在器件配置之前和之后以预期的数据速率切换很有帮助。

    接收零数据的另一种可能是完成寄存器配置后、器件不会重新进入 RDATAC 模式。 我看到您在例行程序中发送 RDATAC 命令、但可能存在时间或数据损坏问题。 一旦器件进入 RDATAC 模式、就应该进入 不会 能够发送任何其他命令(SDATAC 以外)。 您能否通过在 RDATAC 命令之后尝试读取另一个寄存器来测试此情况? 如果器件一直处于 SDAT 模式、那么您将获得寄存器数据输出。 如果器件处于 RDATAC 模式、则应忽略此命令并开始输出状态字节。

    此致、

    Ryan

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

    您好、Ryan、

    没错、发生问题时、我可以发送 SDATAC 命令之前读回寄存器值、并且所有设置看起来都是正确的。
    这表明了 未正确接受或执行 RDATAC 命令 、设备仍处于 SDATAC 模式。

    我觉得令人困惑的是 所有其他 SPI 命令 例如寄存器写入、寄存器读取和测量数据读取、似乎可以正常工作
    信号 只有 RDATAC 命令间歇性失败 生效。

    您对原因有任何见解或建议吗 这个特定的命令 尽管 SPI 接口的其余部分工作正常、但是否更容易出现间歇性故障?

    任何指导或方向都将非常感谢。

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

    您好、Young、

    感谢您的确认。 我不确定为什么 RDATAC 命令会出现间歇性故障。

    • 您能否在发送 RDATAC 时捕获单个 SPI 帧并确认时序符合第6.6节中的规范?
    • 是否在命令之间切换/CS?
    • 您是否使用了正确的 CPOL 和 CPHA 设置?
    • 您是否注意到 DIN 上有任何可能破坏通信的噪声伪影或过冲/下冲?

    一种潜在的解决方案可能是在单独的连续 SPI 帧中重新发送 RDATAC 命令、而不是重新初始化器件。  

    此致、

    Ryan

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

    您好、Ryan、

    此外、还应遵循中的时序要求 6.6. 、我还确保我的软件符合中的指导 第8.3.7节(时钟) 、其中说明:

    "SCLK 在寄存器读取或写入…期间只能是 fCLK 速度的两倍 拥有2.048 MHz 选项允许以高达4.096 MHz 的 SCLK 速度执行寄存器读取和写入。"

    为了便于参考、我使用 内部时钟(512kHz) 已配置 SCLK 为625kbps 、满足 sclk≤2 ×fCLK 的要求。
    遗憾的是、在我的当前设置中、基于硬件的波形测量不可行、但我经过了仔细配置 CPOL 和 CPHA 指定的传播延迟。

    /CS会针对每个命令适当切换。

    该设置几乎在所有情况下都能可靠地工作、并且我能够正常读取测量数据。 问题只会出现 这种情况 也许 数十次下电上电 ,如前所述。

    如何将 ADS1292R 配置为 连续传输已知的固定图形 这样我就可以进行测量 SPI 通信错误率 通信?

    我正在寻找一种方法来验证 SPI 链路的完整性、方法是让器件发送可预测的数据、可以检查这些数据的一致性。

    此致、

    年轻

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

    您好、Young、

    感谢您确认请求的详细信息。 对于罕见的数据读取问题、即器件未按预期进入 RDATAC 模式、我不确定还有什么建议。 只是为了确认-当问题发生时、 是否可以通过在后续帧中重复 RDATAC 命令来恢复正常行为? 或者、您是否发现绝对有必要将器件断电并重新初始化?

    ADS1292不 提供固定模式输出来进行 SPI 完整性验证;但是、有一个直流和一个交流方波内部测试信号可多路复用到任何通道(CHnSET[3:0]= 0101b)。 可在 CONFIG2寄存器中找到测试信号的寄存器设置。

    此致、

    Ryan

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

    您好、Ryan、

    我发现当问题发生时、只需通过即可恢复正常运行 重新发送 RDATAC 命令

    在这一点上、我相信任何进一步的调查都属于我应自行处理的范围。

    非常感谢您迄今为止提供的宝贵支持。 我会考虑这个问题 闭合

    此致、

    年轻