bq76940 I2C读取问题
大家好:
目前我在使用MSP430与BQ76940通信(带CRC校验),用的是网上的一段例子,只有例子的代码时候运行没有任何问题,但是整合到我的代码里面的时候发现有时候I2C会出现通信错误(CRC校验错误),而且一般会出现在读状态时;有时候一个子函数内,连续用I2C读数据都没有问题,有时候在一个子函数内只读一个字节也会出现CRC校验错误,用的都是同一种函数,只是在不同的地方使用到而已,这让我很困惑,请问大家对于I2C读写有什么方法没?谢谢
“有时候一个子函数内,连续用I2C读数据都没有问题,有时候在一个子函数内只读一个字节也会出现CRC校验错误,用的都是同一种函数,只是在不同的地方使用到而已”
楼主,需要确认出现CRC校验错误时,是在特定的子函数,指每次执行到那个子函数时就会出现这个现象,还是不限定在某一个子函数。或者在执行了一段时间后,就会随机出现在某一个子函数,即使之前读操作表现良好的子函数,如果再次调用也会出现这个现象?谢谢
应该说是不确定在某一个子函数中会出现I2C读取不正确的情况,因为我多次删减或者修改过代码,比如增减代码或者子函数,之前有一个连续读取电压的函数是能够全部读到,但是调用了一些子函数,就会出现某些电池电压不能够被读取到的情况,这让我很疑惑,因为这些代码都不影响应该是,而且我在后面I2C操作中也做过相应的延时处理
IIC是一个对时序要求很高档协议,在通讯过程中应该首先保证时序不能被打乱,建议采用中断模式编写IIC主程序。IIC读写函数驱动在网上很多,有些官网上比如美光包括TI对器件的驱动中都有,可以直接借鉴。
这应该是程序稳定性的问题,大体功能实现了 就是一些小的bug。没有程序的话,很难做出解答;只能说应该是你的通讯不稳定,大多出现驱动和整体程序的分配上面,在通讯过程中应该保证其他子程序不能影响通讯的进行。希望对你有所帮助。