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.

[参考译文] TCA6416A:I2C 总线上的干扰导致寄存器损坏

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1253984/tca6416a-glitches-on-i2c-bus-causing-register-corruption

器件型号:TCA6416A

您好!

我将通过 TI 电机驱动器 DRV8874PWPR 控制直流放大器电机、并通过端口扩展芯片控制电机驱动器芯片。 电压为24伏时、电机的拉电流约为1.0安。 一切都正常、但当电机命中极限开关并停止时、一些电压尖峰会 由于一些无法解释的原因引入 I2C 总线(至少到目前为止我无法找到这些尖峰)、这会导致发生寄存器损坏。 以下是我的设置:

  • VCCI = 3.3伏且 VCCP = 5.0伏
  • I2C 总线速度为100kHz
  • I2C 数据通过长度为6英寸的带状电缆传输、电压为5V (VCCP)。
  • SDA、SCL、Int 和 Rst 上的上拉电阻均为10K、靠近 TCA6416A 端口扩展器。
  •  TCA6416A 是 I2C 总线上的唯一从器件。
  • 微控制器电路板上的两条 I2C 线路上都没有上拉电阻。
  • 数据表未显示任何标准旁路电容器、因此我忽略了自行添加任何电容器。 器件的 VCCI (3.3V)由附近的线性电源提供。


对于我应该如何解决这个问题、您有什么建议吗?

此外、我不确定如何计算会影响 SDA 和 SCL 线路上拉电阻选择的各种电容。 如果这是问题所在(10k 上拉电阻太大)、请参考有关计算总线电容的任何指导。

谢谢。

斯科特

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

    首先、您应该使电机的尖峰远离电路板的其余部分。 电机是否具有反激式二极管或其他类型的缓冲器电路? 其电源是否正确去耦?

    其次、为了使 I²C μ F 总线不易受高频噪声的影响、添加电容器。 这可能需要降低速度。 (总线电容包含器件的输入电容、布线电容和电缆电容。 存在估算值、但您可以仅使用示波器检查波形。)

    (我假设您添加了大家现在知道需要的去耦电容器。)

    其次、I²C Ω 没有校验和。 要避免传输错误、请在每次写入后读回寄存器并根据需要重复。

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

    Scott、您好、

    您是否能够在问题发生后验证寄存器值是多少(您是否能够读取器件的寄存器)?

    通常、要配置器件中的寄存器、您需要通过调用器件地址、然后写入寄存器、再将数据设置到寄存器来直接写入器件。 我不确定电机的高频噪声可能影响这一点、但我的假设是寄存器未损坏、但如果复位引脚或 Vcc 线路电压降至其 VPOR 以下、器件可能会进行复位/下电上电。 如果您能够在发现问题发生后读取器件的寄存器、我们应该能够验证这一点。  

    -鲍比