某一块板子在更换LT6911UXC芯片后,无法进行I2C通信,且电脑也无法识别出芯片ID导致不能刷写固件。
错误打印
[ 6.540379] hibvt-i2c 1211b000.i2c: wait idle abort!, RIS: 0x611
[ 6.549772] hibvt-i2c 1211b000.i2c: wait idle abort!, RIS: 0x611
[ 6.557561] hibvt-i2c 1211b000.i2c: wait idle abort!, RIS: 0x611
~ # i2c_write 0xb 0x56 0xff 0x80
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/c[ 51.712842] hibvt-i2c 1211b000.i2c: wait idle abort!, RIS: 0x611
mdshell.c:168}cmdstr:i2c_write
i2c_num:0xb, dev_addr:0x56; reg_addr:0xff; data:0x80; reg_width: 1; data_width: 1.
i2c write error!
do errro
[END]
~ #
排查外围
电源:5V 3.3V 1.2V正常
复位:上拉和控制正常
I2C上拉:3.3正常
I2C通信:SDA有波形数据,SCL有波形,100K
晶振:24MHz正常
焊接三极管确保上电时序如下,但还是无改善:
逻辑分析仪抓波形
正常波形
异常波形,阈值电压选择3.3V时是1.65V,就抓不到SCL时钟线上的波形,使用示波器抓波形如下:
可发现视频频率是100K正常的,但是低电平没有到0V,示波器测试出来是1.92V,所以这个就很异常了,设置逻辑分析仪阈值为2V,就能抓到时钟信号了:
原因分析
I2C通信:
SDA有波形数据,
SCL没有抓到波形,使用示波器看频率100K,但是低电平没有为0,高电平是3.3正常
怀疑:
SCL线的电阻问题导致分压
R150 2K上拉电阻被莫名改为了33欧,导致CPU端拉低时,被33/33分压为1.9V,所以时钟波形异常
改进:
R150 33上拉改为2K后I2C通信功能正常