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.

[参考译文] TMS320F2800137:不上拉 I2C 引脚、在初始化 I2C 模块后设置总线繁忙位

Guru**** 2931100 points

Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1422520/tms320f2800137-i2c-pin-is-not-pulled-up-bus-busy-bit-is-set-after-initialize-i2c-module

器件型号:TMS320F2800137
主题中讨论的其他器件:SysConfigC2000WARE

工具与软件:

大家好、我将学习将 F2800137 MCU 中的 I2C 模块用于我的应用。

当我使用 SysConfig 1.21和初始化 I2C 模块(如 ex1_i2c_master 示例)并使用了 I2CA 时、我在开始传输之前立即检查了所有 I2C 寄存器值、它们的值与示例相同、因此 config right 没有问题?

但 我在循环检查字节发送位时卡住了、尽管我有外部上拉寄存器、但我的 I2C 引脚从未上拉、因此数据从未发送。

以下是我的配置:

  

后来我意识到它们在 JTAG 中使用 TDI 和 TDO、所以在调试时可能会有问题、有人可以为我确认这一点吗?

因此、我尝试了以相同的配置使用 I2CB (用于不同的引脚、因为我耗尽了应用的可用引脚)、但在我初始化该模块并检查其寄存器后、BUSY 位 BB 被设置、但在初始化后我什么也没做。

我读取了 TMR、因此我必须"等待一个比应用程序中最长的数据传输所用的总时间长的周期"、但我不知道如何计算它。 是否有任何其他方式、或者如何阅读?

下面是我如何知道我的 BB 位被设置:  

有人给我提供建议吗? 感谢阅读。

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

    最新动态:

    我在初始化后添加了延迟时间、但繁忙位 BB 仍然为1、这与我在数据传输之前添加开始和停止条件时相同。

    因此、我曾尝试为 SCL 和 SDA 引脚使用推挽输出/悬空输入、它们工作正常、繁忙位 BB 在初始化后立即为0。 但是、如果我使用开漏设置、那么他们的信号始终是低电平、问题仍然存在。

    C2000ware 库本身有问题吗? 我使用的是 C2000ware 5.3

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

    嗨、

    感谢您的耐心。

    如前所述、SysConfig 存在错误、您需要  对 SCL 和 SDA 引脚使用推挽输出/悬空输入。

    我们将在下一个版本中修复此问题。

    谢谢!

    哈迪