AT24C04存储芯片如何进行擦除操作?
AT24C04是一种由Atmel公司生产的EEPROM(电可擦除可编程只读存储器)芯片,具有4Kbit的存储容量,基于I2C总线协议,适用于嵌入式系统中的数据存储,与AT24C02相比,其存储空间加倍,共有512字节,分成了两部分,每部分256字节,AT24C04可以通过A1和A2引脚选择不同的器件地址,使得最多可以在同一个I2C总线上连接4个独立的AT24C04芯片。
一、AT24C04的基本特性
存储容量:4Kbit(512字节),分为两个256字节的存储区域。
接口协议:I2C总线协议,支持标准模式(100kHz)和快速模式(400kHz)。
电源电压:1.8V至5.5V。
写保护功能:通过WP(Write Protect)引脚实现,当WP接高电平时,前256字节的数据被写保护,只能读取,不能写入;后256字节可以进行读写操作。
封装形式:常见的有8引脚的PDIP或SOIC封装。
二、AT24C04的引脚定义及功能
引脚编号 | 引脚名称 | 功能描述 |
1 | A0 | 未使用的引脚。 |
2 | A1 | 器件地址选择引脚,用于设置4个可能的器件地址之一。 |
3 | A2 | 器件地址选择引脚,与A1配合使用,用于设置4个可能的器件地址之一。 |
4 | GND | 接地引脚。 |
5 | SDA | 串行数据线,用于数据传输。 |
6 | SCL | 串行时钟线,同步数据传输的时钟源。 |
7 | WP | 写保护引脚,当接高电平时,前256字节的数据被写保护,只能读取,不能写入;接低电平时,整个芯片可读写。 |
8 | VCC | 电源引脚,提供工作电压。 |
三、AT24C04的读写操作
1. 写操作
字节写入:每次写入一个字节的数据到指定地址。
页写入:在一个写周期内可以写入多个字节的数据,但不超过一页的大小(对于AT24C04,一页大小为16字节)。
2. 读操作
立即读:读取当前地址的数据,不需要设置地址。
随机读:先设置地址,然后读取该地址的数据。
顺序读:从指定地址开始,连续读取多个字节的数据。
四、AT24C04的擦除操作
AT24C04并没有专门的“擦除”命令,由于它是一款EEPROM芯片,数据是以字节或页为单位进行写入的,在写入新数据时,如果该地址已经有数据存在,那么原有的数据将被自动覆盖,通常不需要手动执行擦除操作,直接写入新数据即可完成“擦除”并更新原有数据的过程。
需要注意的是,虽然EEPROM没有像Flash那样需要先擦除再写入的限制,但其写操作次数是有限的(对于AT24C04,典型值为100万次),在实际应用中应合理规划数据的写入频率和内容,以延长芯片的使用寿命。
五、示例代码
以下是一个简单的基于I2C接口的AT24C04写入和读取操作的示例代码(假设使用STM32微控制器):
#include "stm32f4xx_hal.h" #define AT24CXX_ADDRESS 0xA0 // AT24C04芯片的I2C地址 // I2C初始化函数 void I2C_Init(void) { // 配置I2C接口的相关参数... } // 向AT24C04写入一个字节的数据 void AT24CXX_WriteOneByte(uint16_t WriteAddr, uint8_t DataToWrite) { HAL_I2C_Master_Transmit(&hi2c, (AT24CXX_ADDRESS << 1) | 0, &WriteAddr, 1, HAL_MAX_DELAY); HAL_I2C_Master_Transmit(&hi2c, (AT24CXX_ADDRESS << 1) | 1, &DataToWrite, 1, HAL_MAX_DELAY); } // 从AT24C04读取一个字节的数据 uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr) { uint8_t data; HAL_I2C_Master_Transmit(&hi2c, (AT24CXX_ADDRESS << 1) | 0, &ReadAddr, 1, HAL_MAX_DELAY); HAL_I2C_Master_Receive(&hi2c, (AT24CXX_ADDRESS << 1) | 1, &data, 1, HAL_MAX_DELAY); return data; } int main(void) { HAL_Init(); I2C_Init(); // 示例:向AT24C04的0x00地址写入数据0xAB AT24CXX_WriteOneByte(0x00, 0xAB); // 示例:从AT24C04的0x00地址读取数据 uint8_t data = AT24CXX_ReadOneByte(0x00); // 输出读取到的数据 while (1) { printf("Read Data: %X ", data); HAL_Delay(1000); } }
六、常见问题解答(FAQs)
Q1:AT24C04的写保护功能是如何工作的?
A1:AT24C04的写保护功能通过WP(Write Protect)引脚实现,当WP引脚接高电平时,芯片的前256字节(地址范围0x000xFF)的数据被写保护,只能读取,不能写入;而后256字节(地址范围0x1000x1FF)的数据则可以进行正常的读写操作,如果需要对整个芯片进行写操作,可以将WP引脚接低电平。
Q2:如何在同一I2C总线上连接多个AT24C04芯片?
A2:在同一I2C总线上连接多个AT24C04芯片时,可以通过设置芯片的A1和A2引脚来选择不同的器件地址,将第一个芯片的A1和A2引脚都接低电平(GND),其器件地址为0xA0;将第二个芯片的A1引脚接高电平(VCC),A2引脚接低电平,其器件地址为0xA2;依此类推,最多可以连接4个AT24C04芯片,在通信时,通过发送不同的器件地址来选择与哪个芯片进行通信。
作者:豆面本文地址:https://www.jerry.net.cn/articals/18055.html发布于 2025-01-18 18:35:54
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司