利用AT24C02进行数据存储

您所在的位置:网站首页 24c04a是什么芯片 利用AT24C02进行数据存储

利用AT24C02进行数据存储

2023-08-06 05:18| 来源: 网络整理| 查看: 265

简介

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