今天弄了一天的时钟芯片:PCF8563,改芯片为I2C接口。
下面说下遇到了什么问题和解决思路
第一:能正确读写,但是读回来的东西不动!
思考1:代码错误
思考2,能读写,时间不会变,所以写了二个数据到00H和01H寄存器中在读。能读到。怀疑写到了24C64中。
思考3, 能读写,但是时间不变化,怀疑晶振不起振(想法错误的),然后测量晶振,确实不起振。
思考1:解决步骤,检测代码。没有错误。
思考2:把24C64拿下来,在运行,发现I2C在写地址那里等到ACK时候进入了死循环。得出结论是8563那里出了问题。
思考3:晶振不起振.--->看电路(因为板子不是我画的), 发现晶振二个电容是30pf,还加了一个1M电阻。果断拿掉.电阻。电容换5Pf的、
运行代码,发现成功了。因为之前把24C64卸掉之前是能读写的,所以担心会影响了。
所以在焊上试试,发现没有任何影响
错误解决。刚做完,嘿嘿!
总结下错误原因:因为晶振电路的电容太大,外加接了一个1m的电阻,导致时钟芯片不工作,I2C读写就变成操作24c64了。所以能正常的读写。但是毫无变化。 |