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.

[参考译文] ADS131A04:ADS131A04 在 ESD 测试期间会出现 F_SPI 故障、但不能通过读取 STAT_S 来清除该位

Guru**** 2769405 points

Other Parts Discussed in Thread: ADS131A04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1613121/ads131a04-ads131a04-raises-f_spi-fault-during-esd-test-but-bit-cannot-be-cleared-by-reading-stat_s

器件型号: ADS131A04

提交CS3207303 后、会根据 TI 的要求重新创建此工单(我无法打开该工单,因此我将尝试在此处修改内容)。

我们正在开发一款将多个 ADS131A04 连接到 FPGA 的产品。 ADC 在同步从模式下工作、有些则是菊花链式工作。

在 ESD 放电期间、我们定期观察到在 STATUS 寄存器中设置 F_SPI 位。 读取 STAT_S 后、我们可以看到 F_CS 通常被置位。 但是、即使 F_CS 被清除、F_SPI 仍被设置、无法清除。 在测试过程中我们无法测量信号、因此我们对确切发生的情况有点盲目。

  1. 在 ESD 之后设置 F_CS 的确切根本原因是什么?
  2. 不清除 F_SPI 的原因可能是什么?

请注意、问题发生后、ADC 工作正常(在问题发生期间我们确实得到了 0 值,但这是预期结果)。

我通过邮件将此问题传达给 Olrik Maier 和  Christoph Weitz、但尚未收到回复。

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

    您好、 Sebastiaan Merckx、

    我需要更多信息来了解问题/条件并回答您的问题。

    1. 可能由于条件仍然存在、F_SPI 位仍处于设置状态。    ESD 测试完成后、F_SPI 位和 F_CS 是否仍会持续设置?
    2. 有多少个 ADC 通过菊花链连接在一起? 您能分享您的原理图吗? 您可以通过消息与我共享。
    3. 您是否可以尝试仅使用一个 ADC 并重新测试并检查 F_SPI 位和 F_CS 是否仍设置? 然后可以增加 ADC 数量。

    关于 F_SPI 和 F_CS 故障、这些是接口故障。 检查 SPI 时序 是 查看错误内容的唯一方法。 如果没有时间、就不容易识别问题。

    BR、

    Dale

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

    尊敬的 Dale Li :

    1. 发生故障后、F_CS 位会被清除 (STAT_S 读数为 0)、但 F_SPI 位不会被清除。
    2. 我们的链最多为 2 个 ADC、但问题也发生在非链式 ADC 上。 我必须检查是否可以分享原理图。 但从布线的角度来看、一切都应该正常、我们已经在使用这个星座了一年多。
    3. 请参阅第 2 点:我们也会在单个 ADC 上观察到该问题。

    我同意很难确定问题并找到解决接口故障的方法。 我们正在开发软件来处理丢失的 ADC 样本。 但我们仍然担心 F_SPI 保持置位状态、即使在读取和清除 STAT_S 后也是如此 这是我们的主要关注点:我们希望确保 ADC 在此后仍能正常工作。

    此致、

    Sebastiaan

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

    您好、 Sebastiaan、

    感谢您的信息。

    1.当  故障发生后 F_SPI 位仍置位时、您是否再次读取 STAT_S 寄存器? 如果是、您读取的 STAT_S 寄存器的寄存器数据是什么?  读取 STAT_S 寄存器后是否会清除 F_SPI 位?

    ESD 是一个瞬态事件、/CS 可能会受到 ESD 瞬态 的影响、并 设置了导致的不正确事件 F_CS。 您可能必须检查/CS 和 PCB 布局的布线、看看是否可以对其进行改进以使该信号稳定可靠且不易受影响。

    BR、

    Dale

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

    尊敬的 Dale:

    感谢您的答复。

    我读取了 STAT_S 寄存器、出错时读数为 0x2(F_CS 位已置位)。

    我刚刚发现了一些新的东西,虽然... 复制和清除后、读取 STAT_1 寄存器(其中未设置 F_SPI)的输出不再显示 F_SPI 位、但对 NULL 操作的响应(也应只是对 STAT_1 的回读)返回 0x2230。 0x22 与 001aaaaaaaa 响应匹配、但 0x30(数据位 dddddddd)显示 F_SPI 仍在其中设置。 (它还表明已设置 F_ADCIN,但这在我们的用例中是正常的)。

    因此、NULL 操作响应明显没有正确反映 STAT_1 的读数。 这可以用某种方式解释吗?

    仅供参考设置 F_ADCIN 的原因、只是因为我们使用手动命令异步设置 ADC、并且仅在配置 ADC 后切换到实时信令(同步模式)。 这没问题。

    另请注意、我们不会始终如一地检查所有 NULL 响应、我们每秒只定期检查一次、而数据路径始终以更高的速率运行。

    Sebastiaan

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

    您好、 Sebastiaan、

    我很快就会回来的,谢谢。

    BR、

    Dale

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

    您好、 Sebastiaan、

    一旦您发现  设置了 STAT_1 寄存器中的 F_SPI(例如 0x2230)、便会立即读回 STAT_S 寄存器。 如果 STAT_S 寄存器中的 F_CS 位仍被设置、这表明 条件仍然存在、并且当 SCLK 引脚为高电平时/CS 仍转换、您必须监测并检查/CS 引脚以查看正在发生的情况。 如果 设置了 STAT_S 寄存器中的其他位、我们必须知道设置了哪个位。 请注意、 ADS131A04 上的 SPI 设置应为 CPOL = 0 和 CPHA = 1。

    BR、

    Dale

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

    尊敬的 Dale:

    我们肯定使用 CPOL=0 和 CPHA=1。

    操作顺序:

    1. 数据路径初始化和激活
    2. 触发 ESD 问题、对 NULL 的响应不符合预期(预期为 0x10(F_ADC 位设置)、但我们得到 0x30、因此也会设置 F_SPI)。
    3. 读取 STAT_S、值为 0x2
    4. 读取 STAT_1、值为 0x4 或 0x14、具体取决于 ADC。 一些 ADC 并未连接所有通道、因此可以设置 F_ADC 位。
    5. ADC 被重新初始化(解锁,启用所有通道,写入寄存器,再次锁定)
    6. 重新发送到 NULL 命令、但仍为 0x30(F_SPI 设置)
    7. 读取 STAT_S、值为 0x0
    8. 从步骤 4 中重复。

    我希望这对您有所帮助?

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

    您好、 Sebastiaan、

    感谢您的信息。  “F_SPI 是读取“您在步骤 3 和 7 中说是“STAT_S 已读取“? 我想您正在读取 STAT_S 寄存器以检查步骤 3 和 7 中的 F_CS 位。 如果是、您的测试会在步骤 6 中指示 F_SPI 位已设置、但在步骤 7 中 F_CS 位已清除。

    您能否捕获步骤 6 和 7 的 SPI 时序 (/CS/SCLK、DIN 和 DOUT) 并在此处发布图像? 您能分享您的原理图吗?

    BR、

    Dale

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

    尊敬的 Dale:

    你是完全正确的混合“F_SPI"和“和“STAT_S",“,我已经纠正了。

    此时序图可在下图中找到、并且可以用于链式 ADC。 这是一个图、不是示波器测量值、但我之前已经验证过这一点。 它用作 FPGA 实现的规范。

    关于原理图、我不确定是否可以分享所有内容... 我不知道这是一张公共票吗? 我可以分享以下图像开始。

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

    您好、 Sebastiaan、

    您能否澄清以下两个困惑?

    1. 您的时序显示 0x2200、它不会显示 0x2230 来指示 F_SPI 错误、如您在步骤 6 中所述。  
    2. 此外、您时序会在 SCK 上显示 2 个字节+ 17 个字节+ 1 个字节、但是您还在帧 SPI 读数 1 中突出显示了“每个 ADC 5 个字、每个字 2 个字节“、字节数不匹配。

    您是否对 D_SYS_CFG 寄存器进行了编程?

    原理图足以进行检查。 我稍后会检查原理图。

    BR、

    Dale

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

    尊敬的 Dale:

    1. 我展示的图只是 FPGA 团队设计规格的一部分、它并不代表我们观察到的实际 ESD 问题、因此它与所述的顺序不一致。
    2. 17 个字节是位于前 2 个字节和单个最后字节中间的块。 总的来说、发送了 20 个字节、后跟 4 个字节的间隙(32 个时钟)。

    是的、我们  在初始化时将 D_SYS_CFG 编程为值 0、如果重新初始化 ADC、我们也会重新写入该值(步骤 5)。

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

    您好、 Sebastiaan、

    感谢您的澄清。 我想根据您分享的信息对此问题进行澄清: 您的测试表明在步骤 6 中设置了 STAT_1 寄存器中的 F_SPI 位、但当您在步骤 7 中读取 STAT_S 寄存器时、F_CS 位已清零。    根据 ADS131A04 数据表读取 STAT_S 寄存器后、STAT_1 寄存器中的 F_SPI 位应清零。 您可以再次读取 STAT_S 寄存器、以仔细检查  STAT_1 寄存器中的 F_SPI 位。

    您的原理图中底部 ADS131A04 ADC 上的/DONE 引脚应 在同步从模式下连接到 GND、现在它会在您的原理图中悬空、请查看数据表中的图 100。

    BR、

    Dale

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

    尊敬的 Dale:

    这正是我最好奇的事情之一。 复制后、我已经多次重新读取 STAT_S 寄存器和 STAT_1 寄存器、一旦读取和清除 F_CS 位、便不会再发生、F_SPI 也会清零。 但是、对 NULL 命令的响应(应与 STAT_1 寄存器相同的内容)仍会保持 F_SPI 的设置。 我可以探索将其清除的条件、因为现在我们只能通过下电上电来清除它。

    关于底部的 ADS DONE 引脚、我只能在数据表中找到:
    如果未使用 DONE 或 DRDY 输出、则将这些引脚(分别为引脚 18 和 19)保持未连接或连接状态
    这些引脚使用弱上拉电阻器连接到 IOVDD。 上拉电阻器消耗的电流流入器件
    因此会增加功耗
    那么、您是否确定您所说的内容?

    此致、

    Sebastiaan

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

    您好、 Sebastiaan、

    在 ADS131A04 上、 F_SPI 故障是 STAT_1 由几个特定的 SCLK 和 时序违规触发的寄存器中的集体标志。 这些错误通常 F_FRAME  F_CS 在 STAT_S 寄存器中表现为(帧大小)或(时序)错误。   如果 F_SPI  STAT_1 寄存器中的故障和F_CS  STAT_S 寄存器中的错误持续被设置、请检查以下可能的根本原因:  

     时序违规 (F_CS): /CS 信号必须遵守相对于 SCLK 的严格时序、以确保 SPI 状态机正确复位。  

    • 早期/CS  高电平 : 在一个字的中间或整个帧完成之前将/CS 置为高电平会立即触发接口故障。
    • 最小值  高电平时间 帧之间需要一个恢复时间 (tw (csh))。 如果 /CS 再次切换至低电平的速度太快、则器件可能不会复位其内部位计数器、从而导致“粘滞“故障。
    • 异步  状态 :在同步模式下、 转换必须与 /DRDY 信号或主时钟协调。 如果 /CS 下降到相对于内部转换周期的意外时间、则可能会导致同步错误。  用于创建/DRDY 的信号必须是 与主时钟同步 才能使接口正常工作。 或者、您可以使用异步中断模式与器件交互。 该模式与传统的 SPI 接口非常相似。 您可能必须略微调整硬件才能适应不同的引脚功能。

    清除“粘滞“故障: 持续 F_SPI 故障(通常在 ESD 事件或重大时序干扰后出现)可能很难清除、因为:

    • 器件需要 三个连续的无错误帧 来清除状态位
      1. 帧 1:检测 F_SPI 已设置并发送 READ 的命令 STAT_S
      2. 帧 2:ADC 移出 STAT_S 数据(完成此读取后清除内部锁存器)。
      3. 帧 3:更新的状态(现在希望为 0)最终反映在 STAT_1 新帧的字中。
    • 如果时序仍然略微关闭、则每次“清除“尝试实际上都会生成一个新故障。  例如、如果在  这三个帧中的任何一个帧期间发生任何时序干扰或噪声(例如您的链路中提到的 ESD 事件)、则会立即重新触发故障、使其看起来像从未清除过一样。

    /done 引脚:您重点介绍的说明适用于单个 ADC 电路。 如您在 ADS131A04 数据表中看到采用同步从模式的多器件配置的图 100 所示、底部(最后一个)的 ADS131A04 ADC 应连接到 GND。

     BR、

    Dale

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

    尊敬的 Dale:

    从图 100 中可以看出、/DONE 应该连接到 GND。 底部箭头指向下一个器件、而不是接地。

    至于你的其他发言,我当然也是这样看的,但它仍然没有完全回答我的问题。 也许我们可以在联机会议中达成一致?

    总结:

    • ESD 放电会导致一些问题、如果我们能够更好地了解确切的信号偏差、我们可以尝试改进屏蔽或进行其他反向测量、但我同意这可能很困难、并且不太可能就此得出结论。 设置了 F_CS 和 F_SPI 这一事实可能会有所帮助。
    • ESD 放电后、该行为再次正常、STAT_1 和 STAT_S 再次符合预期、但对 NULL 命令的响应(应返回与 STAT_1 相同的内容)仍会设置 F_SPI 位。 我们在数据路径运行时使用此响应来验证 ADC 正确性。 现在、我们忽略该响应中的 F_SPI 位。

    请随时预订会议。 我的时区是 CET、我的电子邮件地址是 sebastiaan.merckx@verhaert.com。

    此致、

    Sebastiaan

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

    您好、 Sebastiaan、

    感谢您突出显示该图。 让我再次与团队核实,我很快就会回来给你。

    对于 F_SPI 位、我已经介绍了上述详细信息、您必须进行调试、以便根据建议找出导致 SPI 故障的原因。 如果您可以接受、您可以忽略它。

    BR、

    Dale