ESP32 操作AT24C32或AT24C64

本文介绍了AT24C32和AT24C64两种EEPROM芯片的容量、地址范围、通信特性以及操作步骤,包括字节和页写入、读取方法,同时提供了ESP32平台的驱动代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • AT24C32或AT24C64两款芯片容量不一样,其他都一样。程序无法动态识别容量
  • AT24C32容量32K,地址范围0x~0x7FFF.
  • AT24C64容量64K,地址范围0x~0xFFFF

电气参数

  • 电压2.7V-5.5V

  • IIC通信

  • 有引脚控制数据保护

  • 有引脚可以配置IIC的地址。
    在这里插入图片描述

  • 每个page 32字节

  • 1百万次写入

  • 100年存放

  • 容量有两个型号AT24C32/64 提供32,768/65,536 bits ,也就是4096字节(4k字节)或8192字节(8K字节)

  • 使用16bit来确定存储的地址

  • 设备地址,如果引脚A0~A2都接地,则IIC地址为0x50.

操作步骤

写入
分为两种

  • 按字节写入
  • 按page写入,一次最多写入32字节

读取
分为3种

  • 当前地址读取
  • 随机地址读取
  • 连续读取,连续读取可以一直读

EEPROM和flash有个最大的区别:
EEPROM在写入前不需要擦除page,直接写入就行
Flash 在写入前,需要擦除,且擦除是按照page进行的。比如spi flash。

时序

写入时序
按1个字节写入时序
在这里插入图片描述按page写入时序
在这里插入图片描述在这里插入图片描述

读取时序
在当前位置读取时序
在这里插入图片描述随机读取时序
在这里插入图片描述顺序读取时序
在这里插入图片描述
在这里插入图片描述

附上完整代码

AT24CXX_driver.c

#include <stdio.h>
#include "esp_log.h"
#include "AT24CXX_driver.h"
#include "driver/i2c.h"
#include <string.h>

static const char *TAG = "AT24CXX-driver";

#define I2C_MASTER_SCL_IO CONFIG_I2C_MASTER_SCL /*!< GPIO number used for I2C master clock */
#define I2C_MASTER_SDA_IO CONFIG_I2C_MASTER_SDA /*!< GPIO number used for I2C master data  */
#define I2C_MASTER_NUM 0                        /*!< I2C master i2c port number, the number of i2c peripheral interfaces available will depend on the chip */
#define I2C_MASTER_FREQ_HZ 100000               /*!< I2C master clock frequency */
#define I2C_MASTER_TX_BUF_DISABLE 0             /*!< I2C master doesn't need buffer */
#define I2C_MASTER_RX_BUF_DISABLE 0             /*!< I2C master doesn't need buffer */
#define I2C_MASTER_TIMEOUT_MS 1000

#define AT24CXX_I2C_ADDR 0x50 /*!< Slave address of the MPU9250 sensor */

esp_err_t at24cxx_init(void)
{
   
    int ret;

    // 初始化iic
    int i2c_master_port = I2C_MASTER_NUM;

    i2c_config_t conf = {
   
        .mode = I2C_MODE_MASTER,
        .sda_io_num = I2C_MASTER_SDA_IO,
        .scl_io_num = I2C_MASTER_SCL_IO,
        .sda_pullup_en = GPIO_PULLUP_ENABLE,
        .scl_pullup_en 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值