芯片I2C通信异常无法读写寄存器破解
时钟芯片PCF2129在批量生产过程中,有客户反馈PCF2129有0.2%左右芯片I2C通信异常,无法读写寄存器,芯片BAT供电比VCC低或者断开VCC和BAT供电后恢复正常。经过测试发现0x02地址寄存器值异常为0x88,改为默认值0x00,芯片恢复正常。
在很多设计中都会用到时钟芯片,PCF2129是NXP推出的内置晶振高精度时钟芯片,芯片带有补偿寄存器,精度可达3ppm。该时钟芯片具有精度高、功耗低、使用方便等特点。
在使用PCF2129,有客户反馈出现0.2%的芯片在电池上电后,I2C读写寄存器异常如图 1,通信失败,在将电池断开又接上后,芯片恢复正常工作。如果设置BAT供电电压比VCC低,芯片也能通信上,但将BAT电压调到比VCC高,通信又异常了。客户VCC使用3.3V.电池也是3.3V的。
图 1 PCF2129没有ACK应答
从客户反馈的情况分析,芯片从新上电后由于寄存器重新初始化,芯片恢复正常。在调试BAT电压比VCC电压低后,通信也能正常如图 2,可以看出,芯片异常应该是某个寄存器值偏离默认值,而且这个寄存器值和BAT的供电电压有关。在PCF2129中,只有地址0x02寄存器和BAT供电电压有关如图 3。
图 2 PCF2129 IIC通信正常
图 3 PCF2129 0x02寄存器
0x02寄存器默认情况下为0x00,在BAT不断电情况下外接电源,VCC电压调到比BAT高后,IIC通信正常,读取0x02寄存器值如图 4所示,为0x88。
图 4 0x02寄存器异常值
PCF2129断电后,或者直接将0x02寄存器值改为0x00后,PCF2129 I2C通常正常,芯片正常工作。
图 5 0x02寄存器默认值
从测试结果可以得出,PCF2129 I2C通信异常是由于0x02寄存器值异常导致的,修改为默认值后,PCF2129就能正常工作。
- 什么是LED驱动时序?LCD背光驱动程序设计(04-26)
- LCD驱动的移植及其GUI仿真如何进行,LCD数模转换现实原理及其源代码(04-25)
- wince代码写入LCD驱动参考,数码产品怎样分别是不是LCD坏点(04-26)
- ARM微处理器助记符指令及其功能描述(04-30)
- 布线工程师如何充分“掌控”时钟信号?(02-21)
- FPGA组成、工作原理和开发流程(10-13)