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.

多线程状态I2C处于400k模式长时间运行时无法通信



1)I2C设置为硬件400k模式。

2)开启多线程。

3)以100Hz频率读取从设备,每次读写数据20字节左右。

4)读写驱动为官方提供驱动。

错误一、运行一段时间后器件无法正常运行。停止仿真发现一直停留在

I2CTransact函数的

while((MAP_I2CMasterIntStatusEx(I2C_BASE, false)

& (I2C_INT_MASTER | I2C_MRIS_CLKTOUT)) == 0)

{

}

错误二、正常退出,显示读写失败并一直失败。

  • 论坛有类似的问题【https://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc31xx_cc32xx/f/968/p/554947/2029436】,你看一下是不是代码里有这句
    /* Check for any errors in transfer */
    if(MAP_I2CMasterErr(I2C_BASE) != I2C_MASTER_ERR_NONE)

  • 有,在运行代码下面,还没运行到这里就已经停止了。这一句是获取出错状态并处理,论坛里说的那个应该是主、从设备通信速度不一致引起的,此问题从设置设置为400K与主设备一致。