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.

[参考译文] CCS/TMS320C6657:TMS320C6657通过 i2c 故障访问 CDCM6208

Guru**** 2618415 points

Other Parts Discussed in Thread: CDCM6208, TMS320C6657, TMS320C6678, PCA9306, TCA9517

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/655622/ccs-tms320c6657-tms320c6657-access-to-cdcm6208-via-i2c-failure

器件型号:TMS320C6657
主题中讨论的其他器件:CDCM6208TMS320C6678PCA9306TCA9517

工具/软件:Code Composer Studio

我使用的是具有2个 C6657的定制板。 它们都通过 i2c 总线连接到 CDCM6208。 在 code composer 7中、对 CDCM6208寄存器进行多次读取访问后、i2c 函数要么返回超时、要么在更糟糕的情况下返回 DSP 停止、只有硬复位才能使其恢复正常运行。 在10到1000次连续寄存器读取之间、i2c 读取速度非常快。

在探测信号时、我们注意到可能会出现2个问题:一个是从器件不返回 ACK (只需重置主器件 i2c 接口即可解决此问题)
另一个问题是、当 Salve 将 SDA 保持低电平并且简单地重置 i2c 主器件不会导致从器件释放 SDA 时。

CDCM6208似乎偶尔会将重复的寄存器读取错误地解释为写入、并破坏 DSP 时钟。

您是否对问题可能是什么有任何了解?

任何建议都是非常欢迎的。

此致、

艾米利

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

    [引用]在探测信号时、我们注意到可能会出现2个问题:一个是从器件不返回 ACK (只需重置主 i2c 接口即可解决此问题)
    另一个问题是、当 Salve 将 SDA 保持为低电平并且简单地重置 i2c 主器件不会导致从器件释放 SDA。

    这是 I2C 规范中描述的一个已知问题:
    " 3.1.16总线清零
    在时钟(SCL)一直处于低电平的不太可能的情况下、如果 I2C 器件具有硬件复位输入、优先步骤是使用硬件复位信号复位总线。 如果 I2C 器件没有硬件复位输入、则对器件循环供电以激活强制内部上电复位(POR)电路。 如果数据线(SDA)一直处于低电平、主器件应该发送九个时钟脉冲。 将总线保持在低电平的器件应在这九个时钟内的某个时间将其释放。 如果没有、则使用硬件复位或循环通电以清除总线。"

    您是否为 CDC6208提供了释放 sda 总线所需的超时(9个时钟周期)?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我与 Emilie 合作、想添加一些硬件详细信息来帮助解释问题:

    我们有2个不同的板、一个带有单个 TMS320C6678、另一个带有双 TMS320C6657 DSP。 两个电路板都有一个可生成 DSP 时钟的 CDCM6208、并且 CDCM6208从 DSP 连接到1V8 I2C。 两个板上还有许多其他 I2C 器件、我们与这些器件的 I2C 通信没有问题。 在两个电路板上、与 CDCM6208的 I2C 通信具有非常高的故障率、平均每个所有寄存器的只读转储一次故障。 故障似乎是随机的、从不正确的读取数据到 NACK 响应、再到无限期保持低电平的 I2C 数据线路。 我们编写了纠错软件、该软件完全了解有关如何清除数据线卡在低电平的 I2C 规范。 它将通过使用 DSP 中的 I2C 本地回路选项并执行几次读取来发出9个时钟脉冲。

    我们已经观察到持续 CDCM6208 I2C 寄存器读取(无写入)会导致 DSP 时钟损坏和整个系统故障、直到执行上电复位。 我们怀疑这是由于 CDCM6208寄存器损坏所致、但很明显、我们无法证明这一断言。

    100kHz 数据速率下的时序以及 I2C 上的1V8信号电平已经过非常仔细的检查、我们不会发现任何错误或异常。

    假设问题是由 I2C 信号上的高频噪声引起的、我使用56pF 电容器将设置为100MHz 的射频信号发生器连接到 CDCM6208 I2C 时钟输入引脚。 我发现只有20mV rms 的附加射频噪声改变了 CDCM6208的行为、因此它不能在没有错误的情况下完成单个 I2C 事务。 我的意思是故障率从所有寄存器的每个转储1个下降到每个寄存器读取。 这似乎表明6208对 I2C 时钟信号上的高频射频噪声敏感。

    尝试使用电容器对 I2C 信号上的高频射频进行去耦失败、这大概是因为电容器将接地噪声注入 CDCM6208 I2C 引脚并使情况更糟。

    我找到了采用单个 TMS320C6678的电路板部分解决方案、该解决方案旨在提高高频下 I2C 信号的阻抗、从而使6208输入引脚电容足以用作低通滤波器。 时钟 SCL 上的简单电阻器是可以的、因为时钟始终是6208输入。 这在数据 SDA 上不起作用、因为它是一个 I/O、所以它必须是铁氧体磁珠。 一个与时钟引脚串联的470欧姆电阻器、一个与数据引脚串联的100MHz 频率下为600欧姆的铁氧体磁珠、将10000寄存器转储中的错误率更改为优于1。 虽然我仍在尝试量化改进、但此修复在使用双 TMS320C6657的电路板上不起作用。

    Sundance 欢迎您提出任何问题或建议、因为我们目前由于此问题无法发货。

    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据所描述的行为、您对 CDCM6208寄存器损坏的怀疑很可能是问题的原因。 但是、我不熟悉该器件及其细节。

    我会咨询设计团队、看看他们是否有任何建议。 反馈将直接发布在此处。

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

    Yordan、您好!

    感谢您的支持。 期待收到您的设计团队的回复。

    中间、这里是我们板原理图的一部分、其中 I2C 连接到 DSPA 和 DSPB (c6657)以及 CDCM6208。

    以防有任何用途。

    e2e.ti.com/.../i2c_5F00_schematics.zip

    此致、

    艾米利

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

    艾米利

    I2C 接口速度非常慢、信号转换速度非常慢。  它还被设计成在转换期间能够抵抗信号上的噪声。  所做的测量表明、HF 噪声会导致问题的行为不当、听起来更像是一个微不足道的设计问题。  您是否在示波器上捕获了 I2C 波形?  电平和边沿转换是否看起来正确?

    您的电源和接地端有多少噪声?  您是否有足够的去耦合?  您的接地回路中是否有足够的铜?

    您首先意味着双 C6657实现失败、C6678板稳健耐用。  稍后您会指出 C6678设计不可靠。  使用 CDCM6208时、C6678设计是否稳健?

    您对 CDCM6208时钟发生器进行重新编程的频率如何?  这些寄存器可被写入 NV 存储、然后 CDCM6208在启动时已经包含配置。

    Tom

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

    您好、Tom、

    我已在随附的 word doc 中撰写了一篇回复、因为它比这篇在线 Web 编辑器更易于编辑。 我希望这可以。

    谢谢、致以诚挚的问候

    Steve

    e2e.ti.com/.../Sundance-CDCM6208-I2C-answers-30JAN18.docx

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

    Steve、

    PCA9306是一款非常有用的器件、但您需要了解它的局限性。  它是一个浮动栅极电压转换器。  它不会将输出信号驱动为低电平或高电平。  它允许连接的器件将信号下拉至接地、并允许它们驱动不高于低侧电源的信号。  当所连接的器件为输入时、高侧上的任何更高电压都是上拉电阻器的结果。

    使上拉电阻器更小会导致上升时间更快。  但是、由于连接的器件中的驱动强度有限、流经这些电阻器的电流会增加 VOL 电平。  如果该电平超过 VIL (max)、则可能会发生数据错误。  这可能是您看到的内容。

    TI 还有其他执行 I2C 电平转换的器件、这些器件不是浮点栅 极转换器。  其中一个是我们在某些 EVM 上成功使用的 TCA9517。  有关 TI 类似器件的完整列表、请参阅以下链接:   我相信类似 TCA9517的器件可以解决您看到的问题。  

    Tom

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

    您好、Tom、

    非常感谢您的回复。

    我能否指出、在我提供的显示误差与上拉电阻值的表中、我们看不到上拉电阻值较低的误差、我们确实看到了上拉电阻值较高的误差。

    这不符合您的观点、即减小上拉电阻会导致误差、因为它会提高低电平电压阈值。

    它向我建议、该问题与上升时间更相关、这就是我提供上升和下降时间测量的原因。 你怎么看?

    感谢您关于将电平转换器从 PCA9306更改为 TCA9517的建议。 这是一个很难在没有电路板旋转的情况下进行更改的地方、因为9517仅在 VSSOP 中提供、VSSOP 大于我们使用的 PCA9306DCU 封装、并且引脚排列完全不同。 在我看来、与9517类似的所有器件也都采用 VSSOP 封装。 我们将看到、这种变化可能太困难了。

    此致

    Steve

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

    Steve、

    我本应该更加清楚。  我假设已了解较弱的上拉电阻器(较高的值)直接影响上升时间。  较慢的上升时间存在多个问题。  一种是较慢的 I2C 交互、因为在主器件感测时钟线路采样低电平时、时钟被选通。  这也会导致主器件和从器件之间的时序不匹配、因为它们可能会在不同的时间对缓慢上升的信号进行采样。  第二个上升时间较慢的问题是更容易受到噪声和其他干扰源的影响。  请注意、虽然 I2C 接口速度非常慢、但所连接的器件具有运行速度快数百或数千倍的逻辑。  I2C 时钟上升时间上的"可忽略的毛刺脉冲"可由主器件或从器件作为时钟脉冲进行采样、从而导致协议通信中断。  这可能是观察到挂起情况的原因。

    这种情况的自然解决方案是一个更刚性的上拉电阻器、但正如您已经注意到的、这会导致 VOL 上升、并且会导致错过时钟位或位采样错误。

    您还可以在滤波器元件或电阻器串联的地方运行测试。  这些是一种糟糕的解决方案、会导致接收器处的 VOL 出现更多问题。  由于 I2C 可以使用大量的总线电容(高达400pF)运行、因此您可以通过在 I2C 总线的所有端点添加接地电容来抑制噪声。

    您希望使用最小的电阻器来提供最快的上升时间、同时仍允许 VIL (max)条件始终有效。  在仔细调整时、您必须考虑电源电压、芯片温度和芯片工艺强度的变化、以便您的生产线不会出现下降。  为此、我建议您执行全面的 IBIS 仿真、以证明在所有条件下均可稳健运行。  我相信、如果您继续使用 PCA9306、将需要这样做。  使用 TCA9517等总线中继器时、可以更轻松地控制 VOL 电平。

    Tom