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.

[参考译文] TM4C1230C3PM:I2C 通信

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/790584/tm4c1230c3pm-i2c-communication

器件型号:TM4C1230C3PM

您好!  

我的客户正在使用 Tiva 处理器。 该处理器使用 i2c 与外部 IC 通信。  

在 EMI 暴露期间、i2c 通信中存在一些单一故障。 这不是一个大问题。

如果在3个连续请求中发生3个故障、则应重置并初始化 i2c。 这在大多数情况下都适用、但有时复位不起作用、在 Tiva 中复位 i2c 控制器的唯一方法是移除电压、这当然不好。  

我的客户已经在硬件中进行滤波、但他们仍然需要解决为什么有时复位不起作用(不可能进行系统复位、只能进行 i2c 控制器复位)。 这是复位代码:  

//禁用外设

   ROM_SysCtlPeripheralDisable (ui32Peripheral);

   //复位外设

   ROM_SysCtlPeripheralReset (ui32Peripheral);

   //启用外设

   ROM_SysCtlPeripheralEnable (ui32Peripheral);

   //等待它准备就绪

   while (!ROM_SysCtlPeripheralReady (ui32Peripheral))

   {

   }

您认为他们缺少什么吗?  

此致、

Jon

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

    您好!
    当它不复位 I2C 时、行为是什么?

    您可以更改订单吗? 您能否在调用 ROM_SysCtlPeripheralDisable 之前先尝试调用 ROM_SysCtlPeripheralReset()并查看这是否会产生影响?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jon、
    我没有听到您的声音。 我认为问题已经解决了。 我现在将关闭该线程。 如果您有新问题、请打开新主题、如果问题未得到解决、请回复此主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉、我休假时的回答延迟了。 恐怕这不是问题。 我们仍然看到相同的行为。 大多数情况下、复位工作正常、但有时无法复位 I2C。 非常奇怪。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    在调用 ROM_SysCtlPeripheralDisable 之前、您是否首先尝试调用 ROM_SysCtlPeripheralReset()? 有什么区别?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charls、

    是的、我试过这种情况。 没有区别。

    此致!

    Michael

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

    [引用用户="Michael Buchner">]大多数时候复位正常、但有时无法复位 I2C。[/引用]复位不起作用时、是因为从器件将 SDA 保持在低电平吗?

    如果是、 当 SDA 一直处于低电平时、I2C 初始化技术 可能会有所帮助(示例代码是针对 TM4C129器件的线程)。

    另请参阅 TMS320F28034:I2C 总线挂起的可能原因 、以了解有关 C2000器件上类似恢复技术的说明。

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

    非常感谢您提供的有用信息。 我将在接下来的几天内尝试一下。

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

    这就是解决方案! 非常感谢! 如果您了解问题,解决方案就像往常一样简单:-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢切斯特提供提示:对主器件的复位会导致从器件在中间挂起。 只需在复位后循环使用 SCL、即可使从器件恢复到解除挂起状态。