目录

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,来选择设备地址区域,也就是=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

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;

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

EEPROM CAT24CXX实现分页读、写数据相关推荐

  1. HDFS 读/写数据流程

    1. HDFS 写数据流程 客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件, NameNode 检查目标文件是否已存在,父目录是否存在: NameNo ...

  2. 用java实现在txt文本中写数据和读数据

    向文本中写数据,一般这些数据我们用来做自动化测试.通过我们制定的一些生成数据的规则,能够快速写数据到文本中. 下面是写数据到txt文本(当然我们可以根据自己的需要写到doc.docx.xlx.xlsx ...

  3. 杭电Matlab与仿真-MATLAB基本语法(二)-数据文件的读/写操作

    数据文件的读/写操作 实验目的 实验内容与要求 实验程序与结果 实验目的 学会matlab数据输入与输出基本操作: 熟悉matlab各种文件的输入输出方法,了解常用的图片及音频文件的输入输出: 掌握用 ...

  4. Tiva单片机——麦克风声音数据的储存/回放(Flash读/写)

    Tiva单片机--麦克风声音数据的储存/回放(Flash读/写) 一.整体介绍 1. 第一次设计 2. 第二次设计 3. 最终实现情况 二.代码的分段解读 1. 头函数 2. 宏定义 3. Flash ...

  5. spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库

    tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...

  6. pymatgen读/写各种文件

    PS:请见文末的打赏选项 pymatgen读/写各种文件 pymatgen是材料大数据计算的必备程序包了,其也作为API与materials project对接,可以批量下载自己想要的材料结构.性质, ...

  7. 写数据到文件注意事项write方法

    [问题1] 使用FileOutputStream类写数据到文件中,本来是很简单的实现,但就是生成的文件与原文件大小不一样,排查了一整天,才找到问题原因所在, writer = new FileOutp ...

  8. Netty源码分析第7章(编码器和写数据)----第2节: MessageToByteEncoder

    Netty源码分析第7章(编码器和写数据)---->第2节: MessageToByteEncoder Netty源码分析第七章: Netty源码分析 第二节: MessageToByteEnc ...

  9. 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)

    学习使用数据库,难免要使用SQL语句.外部数据库使用SQL语句可以快速地完成对数据库的种种操作,如:查询.修改.插入记录.删除记录等.至于更多的,比如:创建表.删除表.加密数据等等,等我们能够比较熟练 ...

  10. Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

最新文章

  1. JavaScript Math和Number对象
  2. node process.env
  3. 分区裁剪 oracle,[讨论]分区表并行和剪裁的困惑
  4. 华为java8_Java8 Stream
  5. Meteor项目实战 -- Next 0.0.2
  6. java 获取注解_java 注解annotation的使用,以及反射如何获取注解
  7. 英国首相用华为P20 Pro自拍引热议,网友:真香,比炸鱼和薯条还香
  8. Redis分布式锁为什么要设置超时时间
  9. 四个开放源代码审查工具【图文】
  10. firefox插件开发和调试
  11. 免费软件不比付费软件逊色半分之94款免费软件
  12. Relative Ranks问题及解法
  13. 邓俊辉算法训练营第三期(带完整课件)
  14. mysql 合并两个update_如何将多条update语句合并为一条
  15. 企业微信自动添加手机好友工具
  16. 如何查询中文期刊影响因子
  17. android获取imei需要read_phone_state吗,Firemonkey android read_phone_state运行时权限要求获取IMEI...
  18. 嵌入式系统词汇表(Embedded System Vocabulary List)
  19. 大型多人在线游戏服务器架构设计
  20. 邪恶花网站邪恶花_指标:良好VS邪恶

热门文章

  1. 监控系统首选DNS服务器,监控windows DNS服务器
  2. Excel去除重复项的几种方法
  3. openwrt 软路由负载均衡
  4. 安庆集团-冲刺日志(第六天)
  5. Pytorch拟合心形函数
  6. http://nianjian.xiaze.com/tags.php?/%E5%B9%BF%E5%B7%9E%E7%BB%8F%E6%B5%8E%E5%B9%B4%E9%89%B4/1/1360241
  7. 无人驾驶汽车系统入门(十五)——ROS入门与实践(2)
  8. Android学习日记(yzy):SQLite数据库和baseAdapter
  9. 向量的数量函数的导数
  10. 解决:香橙派orangepi3lts网口用不了 网口灯不亮 没反应