IIC详解之AT24C08
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相关推荐
- 【STM32-I2C学习总结】STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC
STM32:硬件-IIC详解 , 固件库编程 , 手把手教你实现IIC 一 .I2C物理层 二.协议层 1.I2C基本读写过程 (1)主机写数据到从机 (2)主机由从机中读数据 (3)I2C 通讯复合 ...
- STM32 IIC详解
目录 1.IIC定义 2.IIC协议规范 2.1 SDA和SCL信号 2.2 数据有效性 2.3 开始和结束信号 2.4 字节格式 2.5 从机地址和读写位 3.计算IIC的频率 4.PCF85 ...
- IIC详解以及SH367309-TWI示例应用
什么是IIC? IIC (Inter-Integrated Circuit), 通常发音为: I-squared-C,是多主.多从.分组交换.单工的串行总线,通常用于处理器或微控制器与低速外围器件的短 ...
- UART, SPI, IIC的详解及三者的区别和联系
1.UART, SPI, IIC的详解 UART.SPI.IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmi ...
- STM32通过IIC读取MPU6050原始数据过程详解
STM32通过IIC读取MPU6050数据过程详解 一:硬件介绍 此款MPU6050是通过IIC来与MCU通信的,它有两个IIC接口,第一个是主IIC,通过SCL和SDA两条线与MCU通信:第二个辅助 ...
- IIC通信协议详解 PCF8591应用(Verilog实现FPGA)
IIC通信协议详解 & PCF8591应用(Verilog实现/FPGA) 该文章结合PCF8591 8-bit AD/DA 模数/数模转换器来详细介绍IIC通信协议,尽量做到条理清晰,通俗易 ...
- IIC通信协议(硬件实现IIC通信详解I)
IIC通信协议 什么是IIC协议 协议层 起始信号和停止信号 数据的有效性 什么是IIC协议 I2C(Inter-Integrated Circuit)通讯协议是由 Phiilps 公司开发的两线式串 ...
- IIC(I2C)协议详解
1.简介 IIC,即I²C,全称 Inter-Integrated Circuit,字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫 集成电路总线 ,它是一种串行通信总线,使用多 ...
- STM32常用协议之IIC协议详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IIC协议详解 前言 一.IIC协议简介 1.1 简介 1.2 IIC物理层 1.3 协议层 1.3.1 IIC基本读写过程 1.3. ...
- spi协议时序图和四种模式实际应用详解
大家好,我是无际. 上个章节我们讲解了spi接口定义,今天我们更加深入讲解下spi协议时序图和spi四种模式的用法. 刚开始接触单片机开发时,最怕就是看时序图,对于我来说就是奇怪的知识. 特别是SPI ...
最新文章
- 使用vh来制作高度自适应页面和元素垂直居中
- e3 v3服务器芯片组,请问e3 1231 v3搭配下面哪款主板性价比最高?最适合?为什么?
- 360极速模式和兼容模式对页面的影响
- BZOJ 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏(博弈论)
- Xilinx产品与及开发工具2017
- 常用User-Agent大全 -《狗嗨默示录》-
- Java 8.9 游戏:井字游戏(C++Java)
- ASP.NET MVC3 系列教程 - URL友好化的重型武器[路由]
- saxreader java_DOM4j读取XML文件(SAXReader)
- java实现中国象棋3:走棋规则的实现
- USB over Network通过本地网络或 Internet 共享的远程 USB 设备
- 阿里云_云计算_基础框架_Punrain
- python中引号的使用规范_Python中单引号和双引号的作用
- Go语言学习、时间和日期类型
- 软件驻场开发是什么?有什么好处
- 智慧景区:EasyCVR视频+智能分析,助力景区智慧化服务监管
- 陈本峰:HTML5跨屏前端框架Amaze UI的开源之道
- Elasticsearch学习--索引的批量操作mget、bulk
- 物联网核心技术,主要可以分为哪几类?
- P3799 妖梦拼木棒
热门文章
- fullavatareditor 富头像上传编辑器
- 祝贺软件工程成了国家一级学科
- 单元格下拉全选快捷键_wps表格怎么选中单元格,快捷键是什么?
- 软件测试微信钱包,面试官:请你说说微信发红包,有哪些测试点
- EasyCHM chm文件制作过程及软件附软件下载地址
- 网易云音乐显示服务器发生错误,网易云音乐加载失败怎么回事 网易云音乐出现加载失败的有效解决方法...
- SCADA和三大工业控制系统PLC、DCS、FCS
- 华为USG6000V双机热备HRRP
- 小米miui全机型代码对照与各机型发布时间表 了解小米机型发展历程
- 北京环球度假区宣布首批21家旅游渠道官方授权合作伙伴