IIC读写AT24C64记录
背景:项目要求产品有日志查询的功能,也就是记录使用时接收到的每条指令,方便查询产品在某时接收了某个指令执行了什么动作。
说明:产品内部主控芯片是HK32F103,带有IIC外设,所以想起外挂EEPROM记录数据。
注意:AT24C64存储空间大小为64Kbit,也就是65536bit,能存放65536/8 = 8192Byte数据。
根据数据手册,写入一个字节的时序如下图所示。

发送了起始信号后,第一部分要先发送从机地址,第二部分发送访问的存储地址,第三部分发送写入的一字节数据。
从机地址按硬件上EEPROM芯片的A2 A1 A0引脚接线来定义。
存储地址可以看到由13位组成,最左三位是无意义的位,因为按照上面所说,AT24C64可以存储8192个字节的数据,实际以0为起始的话就只有8191个数据,8191换算成二进制为00011111 11111111,可以看出刚好能由13位表示EEPROM内部数据的存储地址。
上图还可以知道AT24C64每页存放32个字节,那么就有8192/32 = 256页,页写入的时序如下图所示。

与按字节写入相比,页写入在第一个字节写完后再写了x个数据,因为AT24C64每页32个字节,所以这里的x = 3,也就是再写3byte后结束按页写入。
需要注意的是,每写一个Byte的数据页内地址+1,红线画出来的地方表示当前页写满后会重新覆盖掉这一页前面的数据,而不会自动跳转到下一页。
读数据的时序如下图所示。

有三种读取数据的操作,1.当前地址读取数据。 2.选定地址读取数据 。3.连续读取数据。


可以看出,与写操作相比大致相同,但是写操作不能连续写,读操作可以连续读。
其他AT24CXXX类型EEPROM的读写可以参考(14条消息) 读写EEPROM_AT24CXXX_Crazzy_M的博客-CSDN博客_at24读写

浙公网安备 33010602011771号