AT24C02

EEPROM的写数据分为:字节写数据模式和页写数据模式;字节写就是一个地址一个数据的写,页写是连续写数据,一个地址多个数据的写,但是页写不能自动跨页,如果超出一页长度,超出的数据会覆盖原先写入的数据。

跨页写数据实现方法:通过IIC读写AT24C02,百度上面有一大堆例程。但向AT24C02写一个字符串时,例程上基本上都是以页写的形式呈现。页写入的方式只能写满一页,不能跨页继续写。

在此补充一个实现跨页写的函数,希望可以帮助到大家:

#define Page_Byte 8 //页字节8个#define Max_Addr 0xff   //最大可访问地址unsigned char AT24C02_Write(unsigned char WriteAddr,unsigned char* buffer) { unsigned short int BufSize = strlen(buffer); //获取要写入的字符串长度if((Max_Addr-WriteAddr) < BufSize) //空间不足返回0 return 0; I2C_Start(); //发I2C起始信号
I2C_Send_Byte(0XA0); //写器件地址
I2C_Wait_Ack(); //等待应答信号
I2C_Send_Byte(WriteAddr); //发送地址
I2C_Wait_Ack(); //等待应答信号while(*buffer++ != 0) { I2C_Send_Byte(*buffer); //发送数据
I2C_Wait_Ack(); //等待应答信号
WriteAddr++; //写入地址加1 if(WriteAddr % Page_Byte == 0) //新的一页
{ I2C_Stop(); delay_24c02();// AT24C02的写入周期是5ms,延时一定要大于或者等于5ms
I2C_Start(); I2C_Send_Byte(0XA0); I2C_Wait_Ack(); //等待应答信号
I2C_Send_Byte(WriteAddr); //发送地址
I2C_Wait_Ack(); //等待应答信号
} } I2C_Stop(); delay_24c02(); return 1; } 

在上面的代码中,有两个宏定义,第一个是一页可以写入的字节。在进行页写入的时候,比如写到了地址0x08,那么我们就要对这个地址进行判断,因为0x08已经是新的一页,所以 我们就要给一个停止信号,重新开始一次IIC通信,如何判断一个地址是否是新的一页,就是通过if(WriteAddr % Page_Byte == 0)这条语句实现的。

第二个宏定义是最大可写入地址,当写入的字节数大于剩余的可写入空间时,就可以通过if((Max_Addr-WriteAddr) < BufSize)这条语句实现,这样的代码更加规范、安全。

转载于:https://www.cnblogs.com/leo0621/p/8252175.html

AT24C02跨页写数据相关推荐

  1. element-ui table表格实现跨页选择数据

    为实现elemeny-ui中table表格可以跨页选择数据做记录 1.在el-table 中添加**@selectiοnchange="handleSelectionChange" ...

  2. element-ui的table表格数据选择,分页,跨页保存数据的方法

    解决办法:http://www.chenqichun.com/articleDetails/6151420c9e58dfeb349becda

  3. STM32F407单片机通用24CXXX读写程序(KEIL),兼容24C系列存储器(24C01到24C512),支持存储器任意地址跨页连续读写多个页

    一.AT24CXXX容量   AT24C01,AT24C02,AT24C04,AT24C08,AT24C16,AT24C32,AT24C64,AT24C128,AT24C256-不同的xxx代表不同的 ...

  4. 【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

    目录 硬知识 AT24Cxx 介绍 引脚排列 引脚说明 存储结构 器件寻址 器件操作 待机模式 存储复位 写操作 字节写 页写 应答查询 读操作 当前地址读 随机读 顺序读 示例程序 24C02.c ...

  5. layui表格中开启复选框后,怎么获取跨页勾选的全部数据,layui表格获取勾选的所有数据,获取跨页勾选数据的数量,如何预渲染让数据默认勾选上?

    这个功能layui 本身可能没直接提供给我们相关的功能  ,需要自己写出来了  有几个疑点  可能要一一排查出来 核心点: 能不能有一个状态值 能判断当前行的数据 是否是勾选状态 然后就可以 一步一步 ...

  6. 跨页数据传递的两种方式

    选择具有PostBackUrl属性的三个控件Button.LinkButton.ImageButton.PostBackUrl属性的值就是投递的页面URL. 要在接收页面按对象的方式接收投递页面的表单 ...

  7. 2021-08-23 FM24C04写入数据时,跨页会导致指针指向本页的起始地址

    FM24C04写入数据时,跨页会导致指针指向本页的起始地址

  8. window.open()弹框页面交互+表格数据回显以及跨页回显

    直接上效果: 情景描述: (vue+element-ui) 前面显示,显示数据来源来之后面按钮,点击按钮弹出一个新的页面,弹出新的弹框使用的是window.open():如果使用嵌套组件化思想,此父子 ...

  9. element-ui table可选行表格的跨页选中不清除上一页的数据+将选中数据显示到页面的跨页联动

    第一步:介绍table自带的两个属性 这两个属性配合使用,可以保留上一页选中的数据 第二步:将选中的数据放到一个SelectData中,包括数据所在的页数.数据在所在页的index下角标和需要显示在页 ...

  10. ASP.NET跨页传值方法汇总

    方法一:问号传值(Response.Redirect方法) 1:源页:在按钮的点击事件程序中写入Response.Redirect方法,在其中使用问号传值.如: Response.Redirect(& ...

最新文章

  1. 按摩加快肌肉修复有科学依据了,哈佛大学研究成果登Science子刊
  2. 《南溪的目标检测学习笔记》——数据集制作(legacy)
  3. 是什么让 Python 如此多才多艺?
  4. C语言的很吊的printf-----来自一个C语言竞赛题目
  5. JAVA数据类型转换大全
  6. 对HashMap进行排序处理
  7. svn插件Subclipse
  8. Rainmeter天气不能更新、win地图不能检测定位
  9. 微信小程序 百度SDK定位 坐标纠偏
  10. 民生银行java 面试_2019民生银行招聘面试试题及答案解析
  11. 如何将两张图片合成一张?
  12. 热门的XDR到底是一类什么样安全产品?
  13. 史上最全的测试团队组建方法
  14. 【入门讲解】Python使用OpenCV设置图片尺寸。
  15. 天津医科大学计算机研究生吧,天津医科大学
  16. android字体带下划线
  17. Far_planner初次探索全过程(attempt search)
  18. day22-网络爬虫2
  19. 蘑菇导航源码安装教程,wordpress导航主题免费下载[Wordpress主题]
  20. wps2019数据分析加载项_WPS加载项——集成创新 体验升级

热门文章

  1. linux系统下memcached启动正常但程序无法连接的问题解决
  2. 写JQuery插件的基本知识
  3. gallery3d 代码分析之 glsurfaceview
  4. TcpTrace追踪远程服务器的soap信息
  5. sql server的数据同步
  6. 我的缺点,(不断补充中...)
  7. ACL'22 | 基于强化学习的实体对齐
  8. 博一结束后的一些反思 -- 该如何平衡科研与生活
  9. 《YOLO系列原理实战笔记》高清.pdf
  10. 【论文笔记】基于强化学习的句子摘要排序