admin 发表于 2019-1-27 21:23:01

AT24C16 一个小Bug 记录

在板子上预留了AT24CXX 芯片接口,但是目前没有用到,也没有焊接芯片。

最近打算将其用起来,在里面存点东西,但是调试起来总是遇到问题。
1 HW IIC方法,OLED用的就是HW IIC,想通过简单修改地址方式读写AT24CXX芯片,发现失败,度娘说STM32 HW IIC 不是很好用,自己也没有时间去深入学习STM32 IIC知识。

2 SW IIC方法,这个很早之前就用51玩过,找出一份代码调试,毕竟只需要控制两个GPIO就可以了。

但是遇到问题:有些数据可以对,有些不对。很是诡异,在IIC 函数里面加打印,发现连着第二次写的时候,芯片没有应答。

于是拿出单片机调试神器:逻辑分析仪(20多块那种廉价产品),抓波形

从波形上看到第二次确实芯片没有应答(绿色表示一整次Start,红色stop),而且显示第一次写完stop到第二次start只有不到1ms,这个时间。。。
查数据手册发现最少需要5ms

在调用程序中增加两次写之间的延时,结果正常了。
之前51 估计太慢了,忘记了这么重要的一个延时函数。

附件是简单读写IIC 的库函数,可供参考,后期实现page 读写





页: [1]
查看完整版本: AT24C16 一个小Bug 记录