文章目录

  • 1、AT24CXX注意事项
  • 2、AT24CXX设备地址
  • 3、AT24CXX读写操作
    • 3.1、AT24C16读写地址简介
    • 3.2、AT24C32读写举例
  • 4、AT24CXX 使用注意事项

I2C总线协议参考

1、AT24CXX注意事项

  1. 在产品中尽量使用WP写保护引脚;
  2. 程序中尽量减少不必要的AT24CXX的读写;
  3. 如果是大数据,尽量使用多字节读写,不要使用单字节读写;

2、AT24CXX设备地址


如上图所示,根据AT24CXX容量不同,设备地址也不同;如,
AT24C01/AT24C02:A0、A1、A2引脚作为7位设备地址的低三位,高4位固定为1010B,低三位A0、A1、A2(接GND为0,接VCC为1)确定了AT24CXX的设备地址,所以一根I2C线上最大可以接8个AT24CXX,地址为1010000B~1010111B。
AT24C04~AT24C16: A0、A1、A2只使用一部分,不用的悬空或者接地(数据手册中写的是悬空不接)。举例:AT24C04只用A2、A1引脚作为设备地址。另外一引脚P0(即原来A0的位置)没有使用,PCB中可悬空,发送地址中对应的这位(P0)用来写入页寻址的页面号,因此一根I2C线上最大可以接4个AT24C04,地址为101000xB~ 101011xB;同理,一根I2C线上最大可以接2个AT24C08,地址为10100xxB ~ 10101xxB;一根I2C线上最大可以接1个AT24C16,地址为1010xxxB ~ 1010xxxB;
AT24C32/AT24C64: 和AT24C01/AT24C02一样,区别是,发送数据地址变成16位。先发送设备地址高8位,再发送设备地址8位。

注意事项: 对AT24C32来说,WP置高,则只有四分之一受保护,即0x0C00-0x0FFF。也就是说保护区为1KBytes。对于低地址的四分之三,则不保护。所以,如果数据较多时,可以有选择地存储。不重要的数据则放在低四分之三区域,重要的数据则放在高四分之一区域

3、AT24CXX读写操作

3.1、AT24C16读写地址简介


AT24C16内部有16K bit的存储容量,可以存储2KByte的数据。这2K字节被放在128个页内,每页存放16个字节。
比如需要写数据到地址0x0643的,二进制为 0000 0110 0100 0011 ,注意这里位10:8即第一个字节的位3:1
1)第一字节器件地址0XAC(1010 1100,位7:4 (1010)是固定地址,位3:1(110)是页地址的高三位,位0(0)表示写操作);
2)第二字节操作地址0X43(0100 0011,0100是页地址的低四位,0011是页地址偏移量,即第100页内的第三个字节);

3.2、AT24C32读写举例

主机(MCU)向从机(AT24C32)写一个字节,流程如下:

  1. 主机启动开始信号;
  2. 主机发送从机地址(7bit)和写操作0(1bit),等待应答ACK;
  3. 从机发送应答ACK;
  4. 主机发送从机子地址高8位,等待应答ACK;
  5. 从机发送应答ACK;
  6. 主机发送从机子地址低8位,等待应答ACK;
  7. 从机发送应答ACK;
  8. 主机发送写数据8位,等待应答ACK;
  9. 从机发送应答ACK;
  10. 主机发送停止信号;



主机(MCU)向从机(AT24C32)读一个字节,流程如下:

  1. 主机启动开始信号;
  2. 主机发送从机地址(7bit)和写操作0(1bit),等待应答ACK;
  3. 从机发送应答ACK;
  4. 主机发送从机子地址高8位,等待应答ACK;
  5. 从机发送应答ACK;
  6. 主机发送从机子地址低8位,等待应答ACK;
  7. 从机发送应答ACK;
  8. 主机启动开始信号;
  9. 主机发送从机地址(7bit)和读操作1(1bit),等待应答ACK;
  10. 从机发送应答ACK;
  11. 从机发送一字节数据;
  12. 主机发送非应答信号NACK;
  13. 主机发送停止信号;

4、AT24CXX 使用注意事项

1、第一次使用时,上电给AT24CXX初始化,如在某个固定位置写 0xAA,或需要上电读写数据;在AT24CXX初始化或读写数据前应加一定的延时,等待电压稳定。否则在连续断电上电的情况下可能出现数据丢失;
2、读写数据时可以在读写失败时多读写几遍(即读写失败才重新读写,一次就读写成功可直接退出);

   ...for(i = 0x00; i < 0x05; i++){ack = I2C_WriteOneByte(WriteAddr,DataToWrite);if(ack == I2C_ACK_OK) break;Delay_ms(15);WDT_FeedDog();}...

3、发送一字节响应失败后,一定要释放总线后再退出;

 ...ack = SendByte(AT24CXX_ADDR | 0x01); /*发送设备地址 | 0x01,0x01表示读模式*/if(ack == I2C_ACK_FAIL){Stop_I2c();                        /*字节发送失败,结束总线,退出函数*/return I2C_ACK_FAIL;} ...

4、连续写多个字节时应注意,一次写字节数只能写一页数据(一页的数量根据不同型号而不同),超出一页后会覆盖该页的前部数据;
5、数据写完后需要延时 5ms 左右,等待数据写进 AT24CXX;
6、读写 AT24CXX 数据地址时尽量使用宏定义而不用变量;

/*地址*/
#define IDSUM_BASE_ADDR          0x00
#define IDSUM_BACKUP_ADDR        0xF1 #define ID_BASE_ADDR             0x01
#define ID_BACKUP_ADDR           0x79

7、存储数据应做备份;
8、存储单个字节可做单字节校验;多个字节可用和校验;

元件之AT24CXX相关推荐

  1. 外设驱动库开发笔记23:AT24Cxx外部存储器驱动

    在我们的应用开发过程中,经常会使用到外部的EEPROM外部存储器来保存一些参数和配置数据等.而比较常用的就是AT24Cxx系列产品,这一节我们来开发用于操作AT24Cxx系列产品的驱动. 1.功能概述 ...

  2. 三菱je-a系列伺服支持modbusrtu 协议吗_入门课程 | 三菱FX系列PLC的软元件介绍

    点击箭头处"工业之家",选择"关注公众号"!  三菱FX系列PLC的软元件介绍 PLC的软元件很多,主要有输入继电器.输出继电器.定时器.计数器.数据寄存器和常 ...

  3. 16S预测细菌表型-bugbase:革兰氏阴阳、生物膜、致病力、移动元件、氧气消耗等...

    基于16S OTU表预测细菌表型数据库,同时可进行组间差异分析 BugBase Predicts Organism Level Microbiome Phenotypes Tonya Ward, Ja ...

  4. 16S预测细菌组表型-bugbase:革兰氏阴阳、生物膜、致病力、移动元件、氧气消耗等

    基于16S OTU表预测细菌表型数据库,同时可进行组间差异分析 BugBase Predicts Organism Level Microbiome Phenotypes Tonya Ward, Ja ...

  5. en45545防火标准_EN45545-2材料及元件的防火要求

    EN45545-2 材料及元件的防火要求 EN45545-2 最新标准为 2013 版,其主要关注于材料的燃烧性能.热释放量. 烟密度.毒性等性能. EN45545-2 标准根据材料的最终用途,划分为 ...

  6. JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600

    //获取舞台上第一层第一帧上的全部元件 var els = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements; //遍历元件 ...

  7. 新型量子计算机首个基本元件问世,扩展性更强运算速度更快

    来源:科技日报 概要:最新研究证明了建造这种量子计算机的可行性,其有潜力克服目前的量子计算方法面临的扩展问题. 据物理学家组织网近日报道,瑞典和奥地利物理学家携手,研制出了单量子比特里德伯(Rydbe ...

  8. 为 ActionScript 导出库元件

    默认情况下,Flash 文档库中的影片剪辑元件实例不能以动态方式创建(即只使用 ActionScript 创建).这是因为导出供 ActionScript 使用的每个元件都会增加 SWF 文件的大小, ...

  9. as3.0 删除子元件

    引用:http://www.cuplayer.com/player/PlayerCodeAs/2012/0928471.html [AS3]as3.0删除Sprite上所有元件代码示例(两种方法) , ...

  10. ORCAD常用元件库说明

    以下是ORCAD自带库文件的说明,路径:Cadence\Cadence_SPB_16.6\tools\capture\library 1' AMPLIFIER.OLB 共182个零件,存放模拟放大器I ...

最新文章

  1. Nginx upstream的5种权重分配方式分享
  2. 玩聚SR和FriendFeed的区别
  3. JVM的监控工具之jstack
  4. smp架构与numa架构_NUMA架构和Java
  5. crc java_java实现CRC16 MODBUS校验算法
  6. python 初始化一个4维向量_看图学NumPy:掌握n维数组基础知识点,看这一篇就够了...
  7. “3遍读书法” 我是这样自学编程的
  8. 华为的哪个字体像苹果的_华为默认字体是什么字体
  9. php微信卡劵教程,微信卡券添加功能的实现-PHP
  10. 做图工具pyecharts
  11. Neutron的Router简介
  12. 采集利器 - Web Scraper教学及示例
  13. python教程cos_Python爬虫入门教程 12-100 半次元COS图爬取
  14. 项目管理图表有哪些 这5种一定要知道
  15. c语言中循环并列语句顺序,C语言第五讲,语句 顺序循环选择.
  16. PyEcharts 基本图表之雷达图
  17. 段错误(核心已转储)的问题原因
  18. 软件外包市场发展现状分析
  19. RxJava之一——一次性学会使用RxJava
  20. python字符串的大小写转换

热门文章

  1. 从限定词开始 - 词性识别在人工智能自然语言处理中的不足与改进
  2. incre在c语言,longest incresing sequence
  3. sfgghshs测试测试
  4. 国家开放大学《国际经济法》第二章 国际货物买卖法 边学边练
  5. 九大背包问题专题--背包问题求方案数
  6. MES系统之设备管理的基础功能
  7. 联发科Helio X23/27十核发布:性能大提升/优化双摄
  8. 【操作系统实验】模拟单处理器系统的进程调度
  9. MySQL练习题及答案
  10. 计算机方面各种级别论文版面费,国内计算机类杂志投稿评价.doc