IIC详解之AT24C08

  • 一、IIC时序
    • 1.起始信号
    • 2.停止信号
    • 3.应答信号
    • 4.非应答信号
    • 5.读写时序
  • 二、AT24C08的读写以及时序分析
    • 1.首先AT24C08的介绍:
    • 2.写操作
    • 3.读操作
  • 三、时序分析
    • 1.向EEPROM中写0x100字节数据 , 逻辑分析仪检测的时序,解析如下
    • 2.向EEPROM中读0x100字节数据 , 逻辑分析仪检测的时序,解析如下

一、IIC时序

1.起始信号

当时钟线SCL为高电平时 , 数据线SDA有高电平到低电平的下降沿。

代码:
void start()
{SDA = 1;SCL = 1;delay(5us);
SDA = 0;delay(5us);SCL = 0;
}

2.停止信号

当时钟线SCL为高电平时 , 数据线SDA由低电平到高电平的上升沿。

代码:
void stop()
{SDA = 0;SCL = 1; delay(5us);
SDA = 1;delay(5us);SCL = 0;
}

3.应答信号

应答信号表明IIC的数据传输结束 , IIC在传输一个字节的数据后著期间在第九个时钟周期释放总线SDA , 使其处于高电平 , 此时从器件输出低电平拉蒂数据SDA为应答信号。如果为高电平的话则时传送异常 , 结束发送。

代码:bit ack()
{bit ack_bit;
SDA = 1;delay(2us);SCL = 1;
ack_bit = SDA;delay(5us);SCL = 0;
return ack_bit;
}

4.非应答信号

当我们在进行读操作的时候 , 器件在读取8位数据之后 ,如果不在继续读取了就发送一个非应答信号 , 就是在第九个时钟周期时释放总线SDA , 将其拉高 持续整个时钟周期。

代码:
void Noack()
{SDA = 1;delay(5us);
SCL = 1;delay(5us);SCL = 0;
}

5.读写时序

iIC在在读写时 ,表示IIC总线忙 。要求在读或者写的时候(SCL=1)数据必须稳定 。

代码:
void write(byte)
{SCL = 0;delay(5us);if(byte & 0x80)  SDA = 1;else    SDA = 0; delay(5us);SCL = 1;delay(5us);
}
u8 read()
{SDA = 1;
for( i = 0; i < 8;i++)\
{value << 1;SCL = 1;delay(5us);
SCL = 0;delay(5us);
if(SDA)  value |= 0x01;
}
SCL = 0;
return value;
}

二、AT24C08的读写以及时序分析

现在以AT24C08为例 , 进行IIC读写

1.首先AT24C08的介绍:

AT24C08支持IIC总线传输协议 , IIC总线协议规定 , 任何数据传送到总线的器件作为发送器 , 任何从总线接收数据的器件佳作接收器。数据传输是由产生串行时钟和所有起始信号的主器件控制的。主器件和从器件都可以作为发送器或者接收器。但是由主器件控制传送数据的模式。

2.写操作

字节写:在字节写模式下 , 主器件发送起始信号 ,和从地址信息给器件。从器件在产生应答后主器件发送字节地址 , 在收到从器件的另一个应答后在发送被寻址的储存单元。从器件再次应答后在发送被寻址的数据,在主器件产生停止信号的时候,开始内部数据的擦写。

代码:
viod EepromWrite(u8 CtrlAddr , u8 Addr , u8 data )
{start();write(CtrlAddr);if(!ack()) return ;write(Addr );if(!ack()) return ;write(data );if(!ack()) return ;stop();
}

页写:可以直接写入一个16字节的数据 , 页写操作的启动和字节写是一样的 , 不同的是在传输一个字节数据之后不产生停止信号 ,需要在发送16字节数据后发送起始信号 , 如果超所16字节 , 则会自动翻转 , 覆盖写入。

代码:
EepromPageWrite(u8 CtrlAddr , u8 Addr , u8  n,u8 *data )
{start();write(CtrlAddr);if(!ack()) return ;write(Addr );if(!ack()) return ;for( i = 0; i < n; i ++){write(*data ++);if(!ack()) return ;}
}

3.读操作

读操作有3种基本的操作 , 立即地址读 , 选择性读 ,连续读,这里以选择性读为例。选择性读允许器件对寄存器的人以字节进行读操作。主器件发送起始信号 ,从器件地址和像读取的数据的地址。执行一个写的伪操作。器件重新发送控制字节 , 字节地址 , 数据将R/W置为1 , 然后从器件相应发送应答,然后输出所要求的8位字节数据 , 主器件产生一个停止信号。

代码:
u8 EepromRead(u8 CtrlAddr , u8 Addr , u8 data)
{start();write(CtrlAddr);if(!ack()) return ;write(Addr );if(!ack()) return ;write(CtrlAddr + 1);if(!ack()) return ;value = read();Noack();stop();return value;}

三、时序分析

1.向EEPROM中写0x100字节数据 , 逻辑分析仪检测的时序,解析如下

先有起始信号 , 在写一个控制字节字节地址的伪操作,然后写0xA1代表将要写 , 在根据地址去读数据。在我读的256字节中 00 FF FF FF …………我们可以校验一下。

……

2.向EEPROM中读0x100字节数据 , 逻辑分析仪检测的时序,解析如下

现在我们看一下写操作,写操作的过程1 先将起始信号和写器件地址写进去 , 收到应答信号 后写字节信号 ,从器件继续应答 , 在写数据 , 然后8字节数据写完 ,应答信号标志着8字节数据发送到被心智的储存单元,最后有个停止信号。


最后附带AT24C08的中文手册: 手册很棒.
注:文章中的代码是伪代码,仅供参考,具体以实际情况为准。

IIC详解之AT24C08相关推荐

  1. 【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC

    STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC 一 .I2C物理层 二.协议层 1.I2C基本读写过程 (1)主机写数据到从机 (2)主机由从机中读数据 (3)I2C 通讯复合 ...

  2. STM32 IIC详解

    目录 1.IIC定义 2.IIC协议规范 2.1 SDA和SCL信号 2.2 数据有效性​ 2.3 开始和结束信号​ 2.4 字节格式 2.5 从机地址和读写位​ 3.计算IIC的频率 4.PCF85 ...

  3. IIC详解以及SH367309-TWI示例应用

    什么是IIC? IIC (Inter-Integrated Circuit), 通常发音为: I-squared-C,是多主.多从.分组交换.单工的串行总线,通常用于处理器或微控制器与低速外围器件的短 ...

  4. UART, SPI, IIC的详解及三者的区别和联系

    1.UART, SPI, IIC的详解 UART.SPI.IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmi ...

  5. STM32通过IIC读取MPU6050原始数据过程详解

    STM32通过IIC读取MPU6050数据过程详解 一:硬件介绍 此款MPU6050是通过IIC来与MCU通信的,它有两个IIC接口,第一个是主IIC,通过SCL和SDA两条线与MCU通信:第二个辅助 ...

  6. IIC通信协议详解 PCF8591应用(Verilog实现FPGA)

    IIC通信协议详解 & PCF8591应用(Verilog实现/FPGA) 该文章结合PCF8591 8-bit AD/DA 模数/数模转换器来详细介绍IIC通信协议,尽量做到条理清晰,通俗易 ...

  7. IIC通信协议(硬件实现IIC通信详解I)

    IIC通信协议 什么是IIC协议 协议层 起始信号和停止信号 数据的有效性 什么是IIC协议 I2C(Inter-Integrated Circuit)通讯协议是由 Phiilps 公司开发的两线式串 ...

  8. IIC(I2C)协议详解

    1.简介 IIC,即I²C,全称 Inter-Integrated Circuit,字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫 集成电路总线 ,它是一种串行通信总线,使用多 ...

  9. STM32常用协议之IIC协议详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IIC协议详解 前言 一.IIC协议简介 1.1 简介 1.2 IIC物理层 1.3 协议层 1.3.1 IIC基本读写过程 1.3. ...

  10. spi协议时序图和四种模式实际应用详解

    大家好,我是无际. 上个章节我们讲解了spi接口定义,今天我们更加深入讲解下spi协议时序图和spi四种模式的用法. 刚开始接触单片机开发时,最怕就是看时序图,对于我来说就是奇怪的知识. 特别是SPI ...

最新文章

  1. 使用vh来制作高度自适应页面和元素垂直居中
  2. e3 v3服务器芯片组,请问e3 1231 v3搭配下面哪款主板性价比最高?最适合?为什么?
  3. 360极速模式和兼容模式对页面的影响
  4. BZOJ 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
  5. Xilinx产品与及开发工具2017
  6. 常用User-Agent大全 -《狗嗨默示录》-
  7. Java 8.9 游戏:井字游戏(C++Java)
  8. ASP.NET MVC3 系列教程 - URL友好化的重型武器[路由]
  9. saxreader java_DOM4j读取XML文件(SAXReader)
  10. java实现中国象棋3:走棋规则的实现
  11. USB over Network通过本地网络或 Internet 共享的远程 USB 设备
  12. 阿里云_云计算_基础框架_Punrain
  13. python中引号的使用规范_Python中单引号和双引号的作用
  14. Go语言学习、时间和日期类型
  15. 软件驻场开发是什么?有什么好处
  16. 智慧景区:EasyCVR视频+智能分析,助力景区智慧化服务监管
  17. 陈本峰:HTML5跨屏前端框架Amaze UI的开源之道
  18. Elasticsearch学习--索引的批量操作mget、bulk
  19. 物联网核心技术,主要可以分为哪几类?
  20. P3799 妖梦拼木棒

热门文章

  1. fullavatareditor 富头像上传编辑器
  2. 祝贺软件工程成了国家一级学科
  3. 单元格下拉全选快捷键_wps表格怎么选中单元格,快捷键是什么?
  4. 软件测试微信钱包,面试官:请你说说微信发红包,有哪些测试点
  5. EasyCHM chm文件制作过程及软件附软件下载地址
  6. 网易云音乐显示服务器发生错误,网易云音乐加载失败怎么回事 网易云音乐出现加载失败的有效解决方法...
  7. SCADA和三大工业控制系统PLC、DCS、FCS
  8. 华为USG6000V双机热备HRRP
  9. 小米miui全机型代码对照与各机型发布时间表 了解小米机型发展历程
  10. 北京环球度假区宣布首批21家旅游渠道官方授权合作伙伴