前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EEPROM CAT24CXX实现分页读、写数据

EEPROM CAT24CXX实现分页读、写数据

作者头像
不脱发的程序猿
发布2021-01-20 11:39:00
1K0
发布2021-01-20 11:39:00
举报
文章被收录于专栏:AIoT技术交流、分享

目录

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

2、代码实现


近日驱动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}
2^{3}

=8个地址区域,每个地址区域有64页,每页16个字节, 故:64X16X8=8192B,也就是8KB。

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

A2

a9

a8

0

0

0

地址区域0

0

0

1

地址区域1

0

1

0

地址区域2

0

1

1

地址区域3

1

0

0

地址区域4

1

0

1

地址区域5

1

1

0

地址区域6

1

1

1

地址区域7

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

地址区域0

配置1数据:0Byte~1000Byte

地址区域1

配置2数据:1001Byte~1100Byte配置3数据:1101Byte~1200Byte配置4数据:1201Byte~1300Byte

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

地址区域1

  • 配置2数据:1001Byte~1100Byte
  • 配置3数据:1101Byte~1200Byte
  • 配置4数据:1201Byte~1300Byte

2、代码实现

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

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

代码语言:javascript
复制
  uint8_t dev_addr_r = dev_addr | 0x01;
  uint8_t dev_addr_w = dev_addr & 0xFE;

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

代码语言:javascript
复制
  uint8_t dev_addr_r = dev_addr | 0x01;
  uint8_t dev_addr_w = dev_addr & 0xFE;

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1、CAT24CXX分页读、写数据原理
  • 2、代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档