写点什么

EEPROM CAT24CXX 实现分页读、写数据

发布于: 2021 年 03 月 01 日
EEPROM CAT24CXX实现分页读、写数据

近日驱动 CAT24C08 时遇到这样一个问题:


通常配置数据写入到 EEPROM,256 个字节基本可满足需求,最近做的一个项目数据量较大,且不确定以后时候还需要增加保存的数据。所以打算使用分页读、写数据,使不同类型的配置数据空间较大一些。


本项目 EEPROM 地址使用如下所示:


  • 配置 1 数据:0Byte~1000Byte;

  • 配置 2 数据:1001Byte~1100Byte;

  • 配置 3 数据:1101Byte~1200Byte;

  • 配置 4 数据:1201Byte~1300Byte。


这样该如何实现呢?


1、CAT24CXX 分页读、写数据原理


本博文以 CAT24C08 为例进行讲解。


如何实现 CAT24C08 分页读、写数据,datasheet 中有说明很清楚。






CAT24C08,共有 8KB 的存储空间,可通过 A2、a9 和 a8,来选择设备地址区域,也就是 2 的 3 次方=8 个地址区域,每个地址区域有 64 页,每页 16 个字节, 故:64X16X8=8192B,也就是 8KB。


A2、a9 和 a8 选择地址区域,数值范围如下表所示:

所以,可将配置数据按照以下地址块分配:



2、代码实现


本代码驱动过程并没有什么变化,重点在于处理地址位,一般情况下我们默认使用地址区域 0 就满足开发需求,现在需要在读、写地址位基础上按位或地址区域


使用地址区域 0 的时候,可默认地址位为:0XA0,读、写数据,地址如下所示:


  uint8_t dev_addr_r = dev_addr | 0x01;  uint8_t dev_addr_w = dev_addr & 0xFE;
复制代码


使用地址区域 1 的时候,可默认地址位为:0XA2,读、写数据,地址如下所示:


  uint8_t dev_addr_r = dev_addr | 0x01;  uint8_t dev_addr_w = dev_addr & 0xFE;
复制代码


以此类推,剩下区域都可以如此操作,然后就可以一页页读写数据了。

发布于: 2021 年 03 月 01 日阅读数: 8
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程

评论

发布
暂无评论
EEPROM CAT24CXX实现分页读、写数据