AT24XX EEPROM读写分析
1不同容量的AT24XX分析
1.1 AT24C01~AT21C16,容量分别是128,256,512,1024,2048个字节,页长度分别是8,8,16,16,16读写都是先发设备地址,然后发一个字节的字节地址
它们的设备地址如下所示:
1.2 AT24C32-AT24C64,容量分别是4096,8192个字节,页长度分别是32,32字节,读写都是先发设备地址,然后发一个字节的高地址,再发一个字节的低地址
它们的设备地址如下所示:
1.3 AT24C128~AT24C512容量分别是16384,32768个字节,页长度分别是64,64,128字节,读写都是先发设备地址,然后发一个字节的高地址,再发一个字节的低地址,它们的设备地址如下所示:
2 代码分析
//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址
//返回值 :读到的数据
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{
u8 temp=0;
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//发送高地址
// IIC_Wait_Ack();
}
else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr%256); //发送低地址
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0XA1); //进入接收模式
IIC_Wait_Ack();
temp=IIC_Read_Byte(0);
IIC_Stop();//产生一个停止条件
return temp;
}
//在AT24CXX指定地址写入一个数据
//WriteAddr :写入数据的目的地址
//DataToWrite:要写入的数据
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{
IIC_Start();
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0); //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//发送高地址
}
else
{
IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //看手册,型号不同这里就不一样
}
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr%256); //发送低地址
IIC_Wait_Ack();
IIC_Send_Byte(DataToWrite); //发送字节
IIC_Wait_Ack();
IIC_Stop();//产生一个停止条件
HAL_Delay(10);
}
3.最后注意多字节跨页的读写问题
AT24XX EEPROM读写分析相关推荐
- STM32L0 系列 EEPROM 读写,程序卡死?
STM32L0 系列EEPROM读写,使用过程必须注意到的问题,踩坑史 = =!......by 矜辰所致 目录 前言 一.写入地址问题 二.写入时候容易死机问题 2.1 问题的原因 2.2 问题的解 ...
- 小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误
小猫爪:这些年遇过的Bug1-KW36 FLASH模拟EEPROM读写错误 1 背景 2 场景描述 3 分析原因 4 解决方案 1 背景 芯片型号:MKW36A512VFT4(NXP) 操作系统:Fr ...
- STM8S103F2 EEPROM读写
/************ STM8S103 EEPROM读写 ******/ /*芯片型号:STM8S103F2PB6 */ /*功能描述: ...
- pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例
;PIC16F877单片机内部EEPROM读写实例*************************************************************************** ...
- pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例及说明
PIC单片机的EEPROM读写实例及说明 来源:luchaohai 作者:华仔 浏览:1397 时间:2016-08-10 14:18 标签: 摘要: ; PIC单片机的EEPROM读写实例及说明;* ...
- linux mmc 读写,linux内核mmc读写分析
MMC 读写分析 EMMC读写操作的调用栈 mmc_queue_thread -> mmc_blk_issue_rq -> mmc_blk_issue_rw_rq -> mmc_st ...
- 基于51单片机的EEPROM读写
本讲内容: 对存储器的基本知识进行介绍.介绍EEPROM芯片AT24C02:通过例程展示EEPROM的读写. 存储器是应用于各种嵌入式场合的存储部件,按功能可分为只读存储器(ROM)和随机存取存储器( ...
- S29GL128P Norflash驱动读写分析
S29GL128P Norflash驱动读写分析 2014-2-25 S29GL128P是在嵌入式系统中经常可以见到的一款Norflash芯片,存储结构为128(sectors)X128(Kbytes ...
- STC15系列单片机EEPROM读写示例
STC15系列单片机EEPROM读写示例
最新文章
- How to never give up
- 栈与队列1——设计getMin功能的栈
- 关于深度学习的一点理解
- The executable was signed with invalid entitlements
- 怎样用C语言实现五子棋,C语言实现五子棋
- python文件处理seek()方法的参数是_Python 文件(File) seek() 方法
- 移动app测试的多样性_快速搞定APP移动端自动化测试
- 关于'$ router' 的 undefined问题 ,是不是很痛点?!
- html表格的系列代码,HTML系列(八):表格(示例代码)
- Atiitt 使用java语言编写sql函数或存储过程
- Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. Conflict with dependency ‘com.andr
- Java正则表达式简介及实例
- 搜狗输入法 android 历史版本,搜狗输入法旧版
- 有效沟通沟通的9大技巧
- 通达信波段王指标公式主图_通达信波段操盘主图指标公式
- 软件测试自学英语语法,5个能力一流的英语自学APP,赶紧盘它,让你告别零基础...
- Matlab:向图中添加注释
- linux内核-进程与进程调度
- 查找(顺序查找、二分查找、插值查找)
- ATH(阿里、腾讯、华为)三家云服务器厂商对比