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.

[参考译文] AMC131M03:CRC 问题

Guru**** 2392095 points
Other Parts Discussed in Thread: ADS131M04, AMC131M03, SN74LVC1G17, AMC3336, AMC1336, AMC0386, SN6501, UCC33020, ADS1204, ISO6761

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1524202/amc131m03-crc-issue

器件型号:AMC131M03
主题中讨论的其他器件:ADS131M04SN74LVC1G17、AMC3336、AMC1336、AMC0386、SN6501UCC33020ADS1204ISO6761

工具/软件:

您好、使用 AMC131M03 和 ADS131M04 时、CRC 中存在问题、CRC 不匹配错误会以什么方式出现、输入 CRC im 不使用、im 仅使用从器件接收到的输出 CRC、im 使用 CCITT CRC 多项式。 我的 SPI clk 为 5.3mhz、模式 16 位、时钟为 8MHz 且 OSR 为 64ksps。 在我的情况下、启用转换器开关 (PWM) 时、CRC 不匹配。 在此期间、我的 CRC 是一半时间不匹配、原因可能是 CRC 不匹配。 每 50us 读取一次数据、使用由两个器件组成的单个 SPI 总线、我不知道发生 CRC 不匹配的方式是什么。 完成参数配置后、初始化 1 次或 2 次 CRC 不匹配、之后这两个器件都非常合适。 开始切换时、会变为 CRC 错误、而我的切换基于从 SPI 读取的值。这是任何时序问题、时钟问题或任何影响的噪声。

  如果数据未就绪、则在此期间读取数据可能会发生或不会发生 CRC 不匹配? 由于中断处理、我不使用 drdy 引脚、因此每 50us 读取一次数据。 任何人都可以建议或帮助我找出发生 CRC 不匹配的原因吗? 为什么它也在参数配置后的首次读取期间发生。  

此致、  

Srinath

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

    Srinath 你好、  

    AMC131M03 系列在数据表中描述了多种 CRC 机制。 我了解您讨论微控制器在 SPI 传输后接收到的 CRC 的方式。  不同原因 PWM 、我还假设您谈论的是电源转换应用。

    如果在启用 PWM 时 CRC 有问题、则问题可能出在 SPI 接口的信号完整性方面。 一般而言、我建议在 SPI 线路上添加一个 10 Ω 电阻器、在信号布线两端添加一个 15pF 电容器。  

    此外、请确保 CLKIN 信号 干净、没有任何反射或干扰。 某些微控制器无法足够快地驱动 CLK 信号。 下面是 MCU 无法在容性负载下驱动更长 PCB 布线时的 CLK 示例。  

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/73/pastedimage1749541539081v1.png

    以下是与 SN74LVC1G17 极为相同的信号的示例:

    /resized-image/__size/320x240/__key/communityserver-discussions-components-files/73/pastedimage1749541706525v2.png

    摘要:

    • 添加带有所有数字信号 (DIN、DOUT、CS、SCLK、CLKIN) 的 10 Ω 串联电阻器。  
    • 在上述信号与将 DGND 接地之间放置 15pF 电容器。 请尽可能靠近 MCU 和 AMC131 放置
    • 确保 MCU 可以驱动 CLKIN 而不会出现过多失真。 如果需要、添加交流端接电路 (100 Ω、220pF)。

    PS:建议值是经验法则、您可能仍需要调整这些值以匹配 PCB 设计。

    随附的是包含关键建议的 PDF。 我为隔离式调制器创建了此概述、但这些逻辑和原理也适用于 AMC131M0x。  

    /cfs-file/__key/communityserver-discussions-components-files/73/modulators_2D00_interfacing.pdf

    此致、  

    Jiri Panacek

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

    Hi Jiri 感谢您的答复。

    上面提到的 CLKIN 是来自 MCU 的 SPI clk 或 OSR CLKIN。 由于 SPI 时钟只合适、因此 8MHz 的采样 CLKIN 看起来像正弦波、而不是方波。

    电路上添加了一个 47 Ω 和 100pf 电容器。 有四条 SPI 线。 我们有两块 PCB 板:MCU 和检测板、从检测板到 MCU、信号通过以太网电缆传输。 因此、在以太网电缆中、这些 SPI 线路 MISO、MOSI 和 SPI 时钟将作为差分对信号传输、然后再次更改为相应区域中的单端信号。  

    我已将 SPI 时钟降低至 2.65mhz、CLKIN 为 7.7mhz、AMC131M03 时间将为 30us、ADS131M04 时间为 35us。 再次更改后、我将 PWM 打开 4 秒。 第一次我在 AMC131M03 中有 7 倍的 CRC 不匹配、第二次我在 AMC131M03 中有 3 倍的 CRC 不匹配。 在这两次期间、ADS131M04 是可以的、因此在这些情况下我不会收到任何单个 CRC 错误。 我的 CRC 在两个没有 PWM 的器件和仅 PWM 的器件中始终匹配、一段时间内出现 CRC 错误。

    在我运行 PWM 达到 50ms 之前、根据我的第一个问题、我会在两个器件上收到 150 - 200 个周期的 CRC 错误。

    如何处理此 CRC 错误。

    此致、

    Srinath

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

    感谢 Srinath 的澄清、  

    关于 CLKIN、我是指 AMC131M0x 器件内 Δ — Σ 调制器的时钟、而不是 SPI 时钟。  

    我个人认为、如果 CLKIN 信号看起来更像正弦波、只要逻辑电平阈值周围没有任何干扰、这就不是一个大问题。 CLKIN 输入没有任何抗尖峰脉冲滤波器。

    您能否分享电路图和 CRC 例程的一部分?

    我与 AMC131M0x 合作了很多、从未遇到 CRC 问题。  

    您是否还在读取和检查状态寄存器? 是否报告了任何故障?  

    有趣的是、当发生 CRC 问题时绘制(或保存)ADC 数据。 我确实对整个帧损坏或仅 CRC 感兴趣。  

    我仍然认为问题在于信号完整性。 您使用哪种差分驱动器来驱动以太网电缆? 电缆需要多长时间?

    我知道这有很多问题。但是、如果不能看到波形并确认 SPI 主器件和从器件、很难看到未失真的正确波形、从而提供建议。

    此致、Jiri   

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

    还有一件事 — 您可以关闭功率级(任何高电压)并再次启用 PWM 吗?

    如果您在系统中没有高压时再次出现问题、您可能会在 PWM 信号和 SPI 信号之间产生串扰。

    或者、MCU 中可能存在竞态条件(例如,在 CRC 计算过程中触发中断等)。

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

    尊敬的 Jiri:

    e2e.ti.com/.../CRC-ERROR-FRAME.pdf

    感谢您的答复。 我们将 ADC 配置为 16 位模式、8ksps、直流/直流转换器使能。 我们接收的 10 字节数据为 0407 FF6C 38D0 C082 23FF。 CRC 不匹配。 连接了 SPI 时钟和 DOUT (MISO) 的波形、在 ADC 附近捕获。 它看起来在 SPI 总线上正确接收了数据。 我们如何才能进一步发展? 正在寻找您的帮助...

    此致、

    Jitendra

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

    尊敬的 Jiri:

    有关此问题的更多信息:

      - CLKIN 信号被捕获,图像如下

        

      -原理图如下

         

      -当 CRC 失败事件发生时,ADC 值和 CRC 也不正确(对应于模拟输入)。 直到现在、每次它是 ADC 通道 2、其数据都不正确。 ADC0 和 ADC1 看起来不错。

      -在 MCU 中, DRDY 被配置为高优先级中断,并且 SPI 帧在 DMA 的帮助下被读取,这样 10 字节 SPI 帧就不会有其他中断

    我们尝试了在 DVDD 引脚上使用不同容值的旁路电容器、但问题仍然存在。

    器件中是否有任何电路对 DVDD 电压敏感并导致器件部分复位? 我们观察到 DVDD 引脚上几乎没有振荡、这可能是个问题吗? 如何解决该问题?

    此致、

    Jitendra

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

    感谢您提供所有数据。 我将对此进行消化、然后与我们的数字工程师交流。  

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

    尊敬的 Jitendra:  

    首先、非常感谢您提供所有信息。 客户寻求帮助并不是每天都能提供清晰明确的分析数据。

    我与我们的数字工程师一起审查了 AMC13xM0x 器件的材料。  

    根据缓冲区的内容 (0x0407、0xFF6C、0x38D0、0xC082、 + CRC ) 我们也来到匹配的 CRC 0x8A7F。 这样可确认您的固件正确计算数据。

    然而,我们发现了两件事情,我们不清楚,可能表明问题的根源。

    1. 您通过 DVDD = 3.3V 为器件供电。 观察 SPI 波形时、主机控制器似乎使用 5V 逻辑电平。 这意味着 SPI 时钟信号会过驱引脚。 数字信号必须保持在 DVDD、DGND 范围内。 否则、可能会导致内部保护单元 (ESD) 开路、产生额外电流等异常行为
    2. 第二个问题是 CH3 数据传输。 即使查看表示整个帧的前一个波形、逻辑电平也会出现一些意外压降。 当我更深入地查看 CH3 波形时、我看到 DOUT 引脚会意外地发生电平变化。 (这可以是 ESD 二极管触发)。  

      我们的器件在来自 SPI 主器件的 SPI 时钟上升沿更改数据(电平)。 这在其他 DOUT 变化中很明显、DOUT 在 SPI 时钟上升沿后短短几纳秒就会发生变化。 但是、在本示例中、DOUT 甚至在边沿到达之前就会发生变化。 我假设系统级出现问题、这可能是由脉冲噪声导致的。 发生这种情况时、您也可以监测 DVDD 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jiri:

    感谢您的建议。 建议、SPI CLK 电压从 5V 降低到 3.3V。 问题仍然存在。 下面要求的是 DVDD 捕获。

    SYNC/RESET 引脚上的噪声是否会导致您在第 2 点中确定的行为?

      

    此致、

    Jitendra

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

    你好、Jitendra、  

    您是否对电源轨发生的情况有任何解释? 什么开始下降?振荡? 这是波形中最令我担忧的部分。  

    关于 SYNC-RESET 引脚:

    乍一看,我不预测那里的问题。 发生器件复位时、DC/DC 转换器将禁用、必须再次重新启用。 此外、SPI 帧的默认配置为 24 位。

    实际上、我以前没有问过:

    控制器如何对 CRC 错误做出反应? 它是否指示错误但继续操作? 后续帧是否正确?

    如果您停止固件(例如断言)、您能否检查 AMC131 内部的 DC/DC 转换器是否仍在运行? 您可以使用万用表在电容器 C19 上对其进行测量。  

    我们需要了解器件的复位(这也会在 STATUS 寄存器中指示)或者完全困惑并输出错误的 CRC。  

    我已经看到器件在恶劣条件下复位、但我们尚未能在 SPI 上收到错误的 CRC。  

    Br、Jiri

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

    嗯、我一直在考虑这一点、我想我有一个理论、我自己的问题有一些答案(请查看)。  

    我认为、在我用箭头突出显示的时间内、器件会复位。 缓冲区中的最后两个字节为 0xFF 和 0x23 这不是巧合。 该器件会在复位后发送 0xFF23、如器件数据表中所述:

    发生这种情况时、您是否总是获得 FF23 或 23FF?  

    我敢 打赌、在您检测到此 CRC 错误后、DC/DC 转换器会保持禁用状态。

    令人困惑的是,你得到 23FF 而不是 FF23 的事实。 尽管如此、您也可以在 16b 模式下运行、而我们的大多数客户(以及我自己的设计)都使用 24b 模式。 通常、成功复位后、器件需要一段时间才能开始新通信。 但是、如果在 SPI 传输期间发生复位、那么器件也会在内部将 SPI 从 16b 帧重新配置为 24b 帧。 我可以想象、由于从 16b 帧转换到 24b 帧、有一些垃圾或竞态条件会导致 23fF 而不是 FF23 帧。  

     现在我非常猜测、但 0xFF 和 0x23 不是巧合。  

    您还应尝试:

    • 如果您使用微控制器的 GPIO 驱动 CLKIN 引脚、请尝试获得 SN74LVC1G17 等缓冲器。 它的驱动能力明显高于大多数现代 MCU。  
    • 确保 CLKIN 信号具有 3.3V 逻辑电平
    • 如果需要、使用交流端接:
    • 如果您的系统噪声过大而难以控制、则可能需要在软件中实施恢复机制。 例如、在其中一个用于极端测试的电路板中、我有用于 F_RESYNC、REG_MAP、CRC_ERR、RESET、FUSE_FAIL、 SEC_FAIL、CRC 不匹配、RST 确认等
    • 应更好地控制 3.3V 电源轨上的噪声和由此产生的振铃。   
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jiri、

    感谢您的建议。

      -噪声与电源轨耦合,我们正在研究这可能的根本原因

      -我们根据接收到的 ADC 值运行电源转换器控制。 一旦发生 CRC 错误、我们就会停止控制。 我们尚未在发生 CRC 错误时检查直流/直流的输出电压、但后续帧会返回 0x0407 的状态、这与 CRC 错误之前接收到的状态相同。 在每个帧之间、芯片选择再次变为高电平和低电平。

      -我们将检查 DC/DC 转换器电压,并告诉您

      - 23FF 或 FF23 在 CRC 帧中是一致的。 CRC 字段会发生变化、出错时并不相同

      -我们在 SYNC/RST 上有 RC 滤波器,并将 C 替换为 100nF 的高值,并在一段时间内没有观察到 CRC 错误,但这件事需要在全功率转换条件下确认。 您是否认为此引脚电压的轻微下降会导致该问题?

         

      -最后,我们想使用 24b 模式,但现在由于 SPI 上可用的带宽有限,并有意减慢 SPI 来调试此错误,我们已经切换到 16b 模式

      -我们将纳入您提供的建议

      -还有没有任何 3 通道器件直接输出 Sigma-Delta ADC 的 3 HF 位流,而不是集成滤波器。  

    此致、

    Jitendra

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

    你好、Jitendra、

    不幸的是、我没有其他想法要尝试。 我必须承认我的想法已经耗尽。 同步/复位引脚没有任何抗尖峰脉冲滤波器、这可能是您看到 100nF 电容得到改善的原因。

    关于您的第二个问题:

    -我们没有一个具有电隔离的多通道输入器件,除了你一直使用的 AMC13xMx。 对于控制应用、我们的客户通常使用单端器件、例如 AMC1306(电流检测)或 AMC1336 等。 还有一些具有集成电源的器件、例如 AMC3336 或 AMC3306。

    这里概述的很好。 隔离式 ADC |德州仪器 TI.com

    请注意、我们的最新器件 AMC0386 集成了高压电阻分压器。

    对于隔离式电源、您可以实现 SN6501、SN6505 等器件或集成式 DC/DC(例如 UCC33020)。

    如果要实现非隔离式 Δ — Σ,则 ADS1204 为四通道。 您可以使用数字隔离器进行隔离 (ISO6761)

    希望这对您有所帮助。

    此致、Jiri