I.问题现象 我司仪表产品开发过程中,将24CL256跟RX-8025T挂一个I2C总线上, 调试发现当RX8025T不焊接时,会造成24L256工作不正常: II.问题分析 问题原理图如下: 经查看芯片手册,I2C驱动状态标注如下: 驱动中通过传输完成 bit2位来确认是否完成传输。 经仿真确认,启动:如果I2C地址不匹配,传输完成标志位也会置位,从而导致后续的I2C总线冲突。 代码修改如下:通过地址匹配确定start是否发送成功,可有效解决该问题。 III.解决方法 1、通过match位检查判断start是否发送成功。 IV.总结和建议 采用集成的I2C驱动时,必须搞清楚每个状态的作用。