利用AT24C02进行数据存储 |
您所在的位置:网站首页 › 24c04a是什么芯片 › 利用AT24C02进行数据存储 |
简介
24C02是一个2K Bit的串行EEPROM存储器(掉电不丢失),内部含有256个字节。在24C02里面有一个8字节的页写缓冲器。 来看引脚: A0,A1,A2:硬件地址引脚 WP:写保护引脚,接高电平只读,接地允许读和写 SCL和SDA:IIC总线 可以看到对于4K及以上,硬件地址管脚不一定存在,若不存在就写0,所以一条总线上可挂的该类芯片也减少了。 附上开发板上芯片的连接方式 向AT24C02中写数据写一个字节 操作时序: 启动总线-----发送设备地址+写-----等待应答-----发送数据的储存地址(0x00-0xFF,256个字节)-----等待应答-----发送数据-----等待应答-----停止总线 注意: 在写数据的过程中,每成功写入一个字节,E2PROM存储空间的地址就会自动加1,当加到0xFF后,再写一个字节,地址就会溢出又变成0x00。 写数据的时候需要注意,E2PROM是先写到缓冲区,然后再“搬运到”到掉电非易失区。所以这个过程需要一定的时间,AT24C02这个过程是不超过5ms!如果在这个时候去让它应答是没有响应的! 所以,当我们在写多个字节时,写入一个字节之后,再写入下一个字节之前,必须等待E2PROM再次相应才可以。 但是当我们单字节写数据时,不用考虑得不到应答的问题,直接停止总线即可。 代码: //向24C02写入一个字节的数据 void Write_24C02(uchar add,uchar dat) { IIC_Start(); IIC_SendByte(0xa0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_SendByte(dat); IIC_WaitAck(); IIC_Stop(); } 从AT24C02中读数据1、读当前地址的数据 2、读随机地址的数据 3、连续读数据 若想要读某一地址的数据,也需要一定的操作时序: 启动总线-----发送设备地址+写-----等待应答-----发送数据存储地址-----等待应答-----发送设备地址+读-----等待应答-----读取数据-----主机发送是否应答…… 代码: //从24C02读出一个字节的数据 uchar Read_24C02(uchar add) { uchar temp; IIC_Start(); IIC_SendByte(0xa0); IIC_WaitAck(); IIC_SendByte(add); IIC_WaitAck(); IIC_Start(); IIC_SendByte(0xa1); IIC_WaitAck(); temp=IIC_RecByte(); IIC_SendAck(0); IIC_Stop(); return temp; }……我发现自己记混了,原来是时钟芯片的读取要延时,EEPROM的读取和写入不需要延时……so sad…… Reference: https://blog.csdn.net/Xiaomo_haa/article/details/87918394 https://blog.csdn.net/ohy3686/article/details/86723598 datasheet |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |