您的位置:首页 > 其它

I2C总线被拉低引起的问题

2012-05-03 16:44 211 查看
该I2C控制器本身没有内部上拉电阻,因此在PCB设计中在该I2C总线上做了外部上拉设计,但是该上拉电阻使用的是电容屏的供电,因此只有当电容屏上电后该I2C总线才会被拉高,而当电容屏断电时,I2C总线便会被拉低。

总线的这种被拉高拉低的状态可能引起一定概率的I2C 控制器状态紊乱。

测试发现当TP掉电后再重新上电时,某些情况下I2C驱动会检测到I2C控制器的状态 为“忙”从而放弃继续数据传输。

实验证实当I2C控制器正常工作时,若通过某种方式在I2C总线上产生一个Start信 号,该start信号会导致I2C控制器的状态寄存器被标 记为“忙”,直到一个Stop信 号产生后,总线状态才会被重新标记为“空闲“。

由以上实验可推测:当TP断电时,若SDA先于SCL被拉低,则可产生一个Start信 号,从而引出问题。

由于示波器和逻辑分析仪无法捕获到该出错信息,因此上述结论系理论推测。

解决方案:

1. early suspend 时TP不断电。

或者

2. late resume时强制执行I2C reset

或者

3. I2C的上拉电阻和TP的供电控制分离 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c 测试 工作