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.

[参考译文] TM4C1294NCPDT:有关 I2C 时钟的问题

Guru**** 2449010 points
Other Parts Discussed in Thread: ISO1540, SW-TM4C

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623477/tm4c1294ncpdt-a-question-about-i2c-clock

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:ISO1540SW-TM4C

您好!

我对 TM4C1294的 I2C 有疑问。 我的 TivaWare 版本是 2.1.0.12573、CCS 5.4、编译器是 TI v5.0.4。

我的问题如下、上图是从逻辑分析仪捕获的、而下图是从示波器捕获的。 I2C 的速度为100KHz。 您可以看到第二个字节的第4个时钟丢失、仅保持非常短的脉冲。 它不会在每次 I2C 传输时发生、但 机会很高、可能是10%。

TM4C1242的 I2C 通道上有两个组件、一个光学传感器(从器件)和一个 I2C 隔离器(TI ISO1540、SCL 和 SDA 都 是双向的)。 光学传感器的 SCL 引脚是一个简单的输入引脚、它没有 I2C 时钟拉伸功能。

示波器上的黄色通道是 TM4C 和隔离器之间的波形、绿色通道是隔离器和光学传感器之间的波形。

我没有启用 TM4C1294 I2C 通道的毛刺脉冲滤波器、并且我将 I2CMCLKOCNT 设置为0xFF、我尝试了其他值不会改变这个问题。

现在、我有三种解决方案可以解决此问题: (1) TM4C 支持干扰滤波器、(2)将光学传感器上的上拉电阻从10K 欧姆降低到1K 欧姆、使上升沿更好、(3)在光学传感器的 SCL 上添加一个小电容器(例如100pF)。

但我不明白为什么缺少该时钟脉冲、如果隔离器此时拉至低电平并且 TM4C 时钟拉伸正常工作、为什么只有8个时钟脉冲? 为什么干扰分析器可以解决此问题?

[我的 I2C 初始化代码]

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
ROM_GPIOPinConfigure (GPIO_PB2_I2C0SCL);
ROM_GPIOPinConfigure (GPIO_PB3_I2C0SDA);
ROM_GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、 GPIO_PIN_2);
ROM_GPIOPinTypeI2C (GPIO_PORTB_BASE、 GPIO_PIN_3);
ROM_I2CMasterInitExpClk (I2C0_BASE、 ui32SysClock、 false);
ROM_I2CMasterIntDisable (I2C0_BASE);

谢谢、

Snaku

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在示波器图中看不到时间标度、但我认为您不符合传感器侧 I2C 的上升时间要求。 请参阅 www.ti.com/.../slva689.pdf 以确定正确的上拉电阻值、或参考原始的 Phillips I2C 规范。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bob Crosby"]或引用原始 Phillips I2C 规范。

    太棒了!   ***喜欢***  喜欢***喜欢***  (只有常规/外部海报 Robert 保证有三种新的(额外的努力)(目前/错误的被禁止)喜欢!

    通常情况下、难道不会"支付此类海报以"证明其 I2C 实现方式具有"已知良好"的简单 I2C 器件(例如小容量 EEPROM?)   这种"证明"将证明用户的 I2C MCU 实现的正确性。   

    I2C 通道对"奇怪器件"的未知影响的负担(或"劫持人质")证明不是最有效的处理方式。

    KISS -在这里得到了很好的体现-要求"小、简单、可衡量(因此可以证明)的步骤"-系统地实施-这一点在这里的海报中没有揭示...

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

    此外、还想在稍微偏离主题但重要的注意事项时听到蜂鸣声。 如果您正在进行新的开发、则应使用最新的 TivaWare、即2.1.4。 您可以在此处获取最新的 TivaWare:www.ti.com/tool/sw-tm4c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确实、建议充分、但建议也不要"不从未知、过于复杂的 I2C 器件开始"、这可能会挑战(完全无辜) MCU!

    必须注意的是、"性能不佳、过于复杂的国外设备"完全可以"劫持(性能完美且功能强大)供应商 MCU!

    KISS -在这里被坚决/反复拒绝-阻止这种(不明智)做法!   (然而,吻沉默(因此拒绝)依然存在----这是毫无道理的!)   (肯定是因为这是没有道理的-这种"mc<->过于复杂/未经证实的器件"的"不专业"婚姻会在无界重复的情况下发生!)