AT24C02 能写不能读的问题!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27508477/article/details/84677231

自己制作的PCB上,IIC总线上挂载了MPU6050和AT24C02两个设备,使用正点原子探索者F4的IIC例程时,提示“24C02 Check Failed!”

开始以为是买到了劣质芯片,便从可以使用的电路中拆了个芯片下来,发现也不行,而开始拆下来的放到其他板子上,发现芯片并没有问题,初步怀疑是IIC线路问题。

因为上拉电阻开始焊接的是10K,觉得可能是因为驱动电流不够,换成了1K的,依然不行,换成设计时用的4.7K,还是不行。

翻开手册,看到SCL工作频率最大400MHz,检查了程序改了延时,依然不行。

也把设备地址+(1~7)<<1都试过了,排除A2、A1、A0引脚内部电平错误的问题。

先不管EEPROM芯片,发现同样在IIC总线上的MPU6050能正常读数,怀疑是芯片读数错误。
于是上了逻辑分析仪:
在这里插入图片描述
显示的波形为单片机写数据成功(有ACK返回),但是读取却没有ACK,说明至少芯片外围电路应该是没有问题的。

在这里插入图片描述
再次看手册,发现这里有个5ms的数据,Write Cycle Time?

在这里插入图片描述
再看看下面的写时许,Note 1 说明了写时序还包含芯片内部写入,这个写入过程最大可以长达5ms,手动在写入代码后面加了一个delay_ms(1),读写成功!

果然是xx体质……

猜你喜欢

转载自blog.csdn.net/qq_27508477/article/details/84677231