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.

[参考译文] TM4C1290NCPDT:I2C NACK 问题

Guru**** 2455560 points
Other Parts Discussed in Thread: TM4C1290NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638955/tm4c1290ncpdt-i2c-nack-issue

器件型号:TM4C1290NCPDT

您好!

我将 TM4C1290NCPDT 控制器用于我的产品、我几乎完成了开发。 产品介绍如何使用 I2C 协议对 EEPROM 进行编程。 在开发的初始阶段、我遇到了很多问题、但感谢 e2e ti 社区通过阅读不同线程的解决方案、我找到了我的答案。 现在、在最终测试阶段、我发现了器件中的一个错误。  

错误说明:我用于使用 NACK 状态检测 EEPROM 的通信错误、发现 一旦检测到通信错误、下一次进行正确通信时、I2C 模块的行为也异常。 为此、我 找到了一个解决方案、在每次执行单次操作后、我都会复位外设并每次初始化 I2C 设置。 设备工作正常,但我的问题是,这是否是指定问题的有效解决方案? 或者是否有其他解决方案?

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

    我的朋友-您已经很好地解释并详细说明了您的问题-但是您的主题行"TM4C:TM4C"传达了您感兴趣的帖子包含哪些内容的"没有提示"!

    在这里(和多个其他论坛)活动了一段时间-实施不当的"标题"(主题、此处)不会吸引"最佳/最明亮!" 由于"盲目/无用的重复"和完全不存在帖子的目标!   (本记者不符合该"资格"—出于好奇心和协助的尝试...)

    您可以快速/轻松地"编辑主题行、方法是返回打开帖子的"编辑"-并创建更"艺术和描述性的标题!"   (即,减少这种"脑死"重复. 这样总是有帮助的-就像添加"紧急"一样、很少有人会"阅读您的帖子!"

    您的主题-我不记得这样,“重置和初始化”... "每一次操作后"。   至少对于我们的 LX4F (现场有几个 K 单元)和4C123 (仅200以下)、我们不遵循此类"每后"协议。   (虽然不会伤害-但很麻烦)    

    您的电路板可能会遇到"电源问题"或严重噪声-这两种情况都可能导致 MCU 的 I2C 模块或从器件(某种程度上)混淆?   此外、我们的长期经验告诉我们、依靠 MCU 的内部上拉 Rs 可以证明、"傻瓜金"-实际(外部)上拉性能要好得多、而且可靠!    (MCU 上拉电阻必然是"高值"-导致信号反射和圆角边-不好-很容易避免!)

    您不提供出现此问题的"此类板的数量"、这很重要、不是吗?   (防止可怕的"单板异常")

    您选择的特定 EEPROM 是否可能证明是"轻松/快速"确认检查的因果关系-您是否替代了其他人?   我们已将 I2C 用于类似的应用(外部 EEPROM、ADC、温度传感器和 GPIO 扩展器)、到目前为止-每次 I2C 事务之后都不需要"复位和初始化"!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起,先生,
    由于我不在办公室,我无法迅速答复,并原谅我的主题,因为我是这个论坛的新老头。

    关于您对问题的答复:电源不是问题,因为其它外围设备工作正常。
    已提供外部上拉电阻。 不依赖于内部上拉电阻器。
    目前试验数量有7个器件,所有7个器件都面临同样的问题。
    我已尝试使用不同的 EEPROM、相同的问题仍然存在。

    每次不需要复位和初始化操作、只有在发生错误时才需要复位和初始化操作。 否则、如果没有错误、那么在没有 ANTANT 复位/初始化的情况下、读取/写入操作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您-您注意到电源"不是问题"-但"其他外设"可能"敏感"像"I2C 外设"吗? (因对噪声问题的敏感性而闻名...)

    您不会注意到此类干扰的"频率"。 (即、它是20、50还是100个 I2C 事务中的一次?)

    有多少器件共享 I2C 总线? MCU 和(最远) I2C 从设备之间的最大距离是多少? (最远的)设备是最常"错误"的设备吗?

    是否有与2条 I2C 信号线路并联的"高速布线"? "噪声"或"电源开关"的情况如何-这可能会导致尖峰和瞬变(已知都会影响 I2C 和/或其他"敏感"输入)。

    而且、与往常一样、靠近"最远" I2C 从设备的示波器电容器将证明具有高价值...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、db1、
    感谢您提供所有优秀的调试技巧。 我喜欢您关于检查电源和噪声的提示。 如果从器件容易应答 NACK、则表明 SCL/SDA 上的电压电平可能不符合从器件的输入阈值电压、或者一些尖峰导致从器件误认为是一个 SCL 周期。 如果所描述的 I2C 问题仅在高速(400k)时出现、甚至在标准速度(100k)时出现、也是一个好问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SPI 等外设用于存储器接口、用于 LCD 的 EPI 接口、与 PC 的 USB 通信都可以正常工作。

    干扰的频率就像器件从下一个故障运行中获得通信错误时的频率一样。 例如:如果我执行1000次成功操作、则根本没有问题、但如果任何时候发生通信错误、则会开始出现故障。
    当时我习惯重新启动器件,一切正常,所以我决定重置 I2C 模块并初始化,以解决我的问题。

    I2C 专用于单个器件。 MCU 和 I2C 从设备之间的最大距离为0.75 mTR。 每个器件都有相同的问题。

    没有这样的高速布线与 I2C 信号并行运行。 当我跟踪 CRO 中的信号时、未发现任何噪声问题。 由于电容效应、不会得到完美的方波、否则电压电平会好得多。

    每次在软件中执行复位和初始化操作时、我都可以、但我最关心的是每次执行复位和初始化会缩短 I2C 模块的生命周期??
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这里、我不认为这是速度问题、我使用的是400k 速度、但如果我执行1000次成功操作、则没有问题、但单次错误操作会使下一次操作发生故障。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    [引用 USER="Jijo Thomas6]I2C 专用于单个器件。   MCU 和 I2C 从设备之间的最大距离为0.75 mTR。   每个器件都有相同的问题。[/quot]

    需要进行一些澄清:您首先注意到"单个 I2C 器件"-然后使用"每个器件"这两个词(有相同的问题!)    当您与"每个器件"对话时、您可能意味着"其他相同的电路板?"  如果不是-我无法判断您的电路板上是否只有一个 I2C 从设备...

    您是0.75米(I2C 独立)且运行频率为400kHz (在单独的帖子中注明)、这一事实为我提供了一个强有力的指示 、表明这种"综合"距离和速度证明了您问题的(可能)原因。    

    有一件事(可能)可以为您节省-即使在"过度距离""非常高速!"的情况下也是如此!    这就是"您使用 MCU 的内部上拉电阻器"-如果使用的话、您的"替换4K7-10K 外部电阻器"-可能"节省您的一天!"    尽管仍然如此-更短的间隔和更低的速度只会有所帮助!

    与往常一样-当此类故障出现时-转至较慢速度(并在可能的情况下)更短和更直接的 MCU <->从器件分离-可提高 I2C 事务的稳健性!    请注意、执行(重复)外设复位时、"太频繁"要求"闲置"、这会否定您的高速。。