大家好,最近在调试android 8660 平台,碰到一个i2c 的问题:i2c有时无法通讯,在这个i2c总线上只挂载了一个设备:触摸屏,上拉电阻是:2.2K ,总线在触摸屏 probe时,通讯没有问题,在正常用触摸屏时(没有进入sleep),会逐渐的增加通讯失败的次数。刚开始失败率:10% , 过了几秒后增加到90% ,测量触摸屏上的电源, reset, 中断没有问题。用逻辑分析仪获取波形,读i2c的波形发现从cpu上发送读数据时发送读命令没有问题,接着发送读的寄存器地址出错了,ACK位时SDA, SCK全变成了高电平。打印了kernel log:
<3>[  233.725185] qup_i2c qup_i2c.0: @@@@@@@@QUP: I2C status flags :0x1121c4, irq:183<3>[  233.725193] qup_i2c qup_i2c.0: QUP: I2C status flags :0x1121c4, irq:183
通过这个log qualcomm 分析是slave端出错了,询问触摸屏的厂商:他们认为只要触摸屏能够上报中断,就认为触摸屏是正常的。现在搞不清楚是什么问题,希望有人能帮助我一下。非常感谢!