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.

TMS570LC4357: 请问使用LAUNCHPAD XL2开发板上的I2C1的两个引脚可以直接与其他I2C设备通信吗

Part Number: TMS570LC4357
Other Parts Discussed in Thread: HALCOGEN

你好,

我现在使用了LAUNCHXL2 570LC43开发板,我尝试使用板子上引出的I2C1的两个引脚与其他板子上的I2C设备通信。

我使用了下图中的J2的1号(GND) 8号和9号 分别连接到其他板子上的GND和I2C管脚。

我的HALCoGen配置如下

我在main函数中先调用了i2cInit()函数,然后我尝试与我的设备通信,但是程序一直开在i2cIsMasterReady或者i2cSendByte函数无法往下继续。

我用示波器抓取了两个管脚没有看到任何波形。

请问能否像我这样直接连接呢?

  • 您好我们已收到您的问题并升级到英文论坛寻求帮助,应该会在下个工作日给到您答复,谢谢!

  • 您好,

    1) 请问I2C SCL 和 SDA 有没有通过电阻器上拉? TMS570 开发板在 I2C 线路上没有外部上拉电阻器。 I2C SCL 和 SDA 线路均为开漏,因此 I2C 模块可以驱动 SCL 和 SDA 低电平,但不能置高。为了使这两条线路能够高电平,您必须提供外部上拉电阻器。

    2)在 TMS570LC43x 器件上,I2C 信号与 MibSPI 信号复用,默认情况下引脚用于 MibSPI。 请问您是否配置了 Pinmux ?

  • 请您看下我的回复,谢谢

  • 您好,

    1) 我要通信的从机设备的板子上是有上拉的,我可以使用另外的开发板直接和那个设备通信,这个验证过了。

    2)我之前没有配置pinmux。关于pinmux我有个疑问,我在Driver Enable里没有使能MibSPI模块,只使能了I2C1,这样仍然需要配置pinmux吗?

    另外,我按照您的说明配置了pinmux,同时在我的程序里调用了muxInit();

    但是 仍然无法通信,i2cIsMasterReady仍然无法返回。

  • 看到了哈,因为是升级到英文论坛等国外工程师的答复,正常情况下都会在24小时内给您答复的。

    我在Driver Enable里没有使能MibSPI模块,只使能了I2C1,这样仍然需要配置pinmux吗?

    无论模块是否使能,都应配置 Pinmux。

    但是 仍然无法通信,i2cIsMasterReady仍然无法返回

    调用 i2cSendByte() 后,在 SCL 线路上能看到时钟信号吗?以及在 SDA 线路上有没有数据波形?

  • 好的,我看到给的例程里也没提到需要配置PINMUX,还有我在HALCoGen中配置了PINMUX,是不是需要在程序初始化的时候调用muxInit()?

    我没有看到时钟波形。

  • 好的感谢您提供的信息,已经跟进给工程师了哈。

  • 您好,

    是不是需要在程序初始化的时候调用muxInit()?

    muxInit()在 HAL 代码的 systemInit()中调用,您不需要再次调用此函数。

    连接 I2C 从机后,SCL 和 SDA 是否为高电平? 不是的话,在I2C 从板上的上拉电阻器将无法工作。

    如果 SCL 和 SDA 被正确上拉,这两条线路应该为高电平。当你调用 i2CStart() API 时,I2C 模块将发出一个启动条件并发送从机地址。 

  • 谢谢,我确认了是上拉的问题