首页 技术 正文
技术 2022年11月23日
0 收藏 573 点赞 3,610 浏览 1256 个字

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 ;   I2C_Start(); //发I2C起始信号  I2C_Send_Byte(0XA0); //写器件地址  I2C_Wait_Ack(); //等待应答信号  I2C_Send_Byte(WriteAddr); //发送地址  I2C_Wait_Ack(); //等待应答信号  while(*buffer++ != )   {     I2C_Send_Byte(*buffer); //发送数据    I2C_Wait_Ack(); //等待应答信号    WriteAddr++; //写入地址加1     if(WriteAddr % Page_Byte == ) //新的一页    {       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 ; } 

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

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849