1)I2C设置为硬件400k模式。
2)开启多线程。
3)以100Hz频率读取从设备,每次读写数据20字节左右。
4)读写驱动为官方提供驱动。
错误一、运行一段时间后器件无法正常运行。停止仿真发现一直停留在
I2CTransact函数的
while((MAP_I2CMasterIntStatusEx(I2C_BASE, false)
& (I2C_INT_MASTER | I2C_MRIS_CLKTOUT)) == 0)
{
}
错误二、正常退出,显示读写失败并一直失败。
Viki Shi:
论坛有类似的问题【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)
Eric Wang7:
回复 Viki Shi:
有,在运行代码下面,还没运行到这里就已经停止了。这一句是获取出错状态并处理,论坛里说的那个应该是主、从设备通信速度不一致引起的,此问题从设置设置为400K与主设备一致。