本文作者:豆面

AT24C04存储芯片如何进行擦除操作?

豆面 2025-01-18 18:35:54 15
AT24C04存储芯片如何进行擦除操作?摘要: AT24C04是一种由Atmel公司生产的EEPROM(电可擦除可编程只读存储器)芯片,具有4Kbit的存储容量,基于I2C总线协议,适用于嵌入式系统中的数据存储,与AT24C02...

AT24C04是一种由Atmel公司生产的EEPROM(电可擦除可编程只读存储器)芯片,具有4Kbit的存储容量,基于I2C总线协议,适用于嵌入式系统中的数据存储,与AT24C02相比,其存储空间加倍,共有512字节,分成了两部分,每部分256字节,AT24C04可以通过A1和A2引脚选择不同的器件地址,使得最多可以在同一个I2C总线上连接4个独立的AT24C04芯片。

一、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字节)。

AT24C04存储芯片如何进行擦除操作?

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的写保护功能是如何工作的?

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
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司

阅读
分享