首页 > 其他分享 >IIC协议介绍

IIC协议介绍

时间:2022-09-01 21:22:45浏览次数:71  
标签:协议 信号 主机 写入 地址 介绍 从机 IIC 单字节

讲解I2C协议之前,首先列出GPIO的输出模式配置图,输出模式有推挽输出、开漏输出。
推挽输出:可以输出高、低电平,连接数字器件。推挽结果一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通时令一个三极管截止。(特点:是可以真正的输出高电平和低电平,且两种电平下都有驱动能力)。
开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要加上拉电阻才行。(特点:就是高电平没有驱动能力,需要借助外部上拉电阻才能真正输出高电平)。开漏只能输出低电平,高电平的时候实际上是个高阻态,需要外接电阻来拉高的。
image
在I2C协议中SCL和SDA都需要配置成开漏输出模式,同时都需要外接一个上拉电阻,以保证主从设备无操作时,SCL、SDA均为高电平,总线状态为空闲状态。由于SCL、SDA均配置的是开漏输出,如果不上拉电阻则没有输出高电平的能力。
开漏输出模式;当CPU在左边通过位设置/清除寄存器,或输出数据寄存器写入数据后,该数据位将通过输出控制电路传送到的I/O端口,如果输出控制电路输出的是逻辑“1”,则编号3的N-MOS管将处于开启状态,此时I/O端口的电平被N-MOS管拉到了VSS的零电位。如果是逻辑“0”,则的N-MOS管将处于关闭状态,此时I/O端口的电平将由外部的上拉电阻决定。同时在图的上半部,施密特触发器处于开启状态,这意味着CPU可以在“输入数据寄存器”的另一端,随时监控I/O端口的状态;通过这个特性,还实现了虚拟的I/O端口双向通信:I/O端口的电平将完全由外部电路决定,因此,CPU可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1”。
image

图1 I2C 协议整体时序图

由图可知,I2C 协议整体时序图分为 4 个部分,图中标注的①②③④表示 I2C 协议的 4
个状态,分别为“总线空闲状态”、“起始信号”、“数据读/写状态”和“停止信号”。
其中①为总线空闲状态:此时串口时钟信号 SCL 和串行数据信号 SDA 均保持高电平,此时无 I2C 设备工作。
②为起始信号:在总线空闲状态,同时SCL 在高电平时, SDA 出现由高电平转为低电平的下降沿,称为其起始信号,此时与总线相连的所有 I2C 设备在检测到起始信号后,均跳出空闲状态,等待控制字节的输入。
③为数据读/写状态:其中应该包含有8位有效数据,和一位相应位ACK,其中数据的变化只能在时钟信号SCL的低电平期间,高电平期间需要保持数据的稳定,具体如图2所示。
image

图1 I2C 协议整体时序图

一个完整字节的指令或数据传输完成,从机设备正确接收到指令或数据后,会通过拉低 SDA 为低电平,向主机设备发送单比特的ACK应答信号,表示数据或指令写入成功。若从机正确应答,可以结束或开始下一字节数据或指令的传输,否则表明数据或指令写入失败,主机就可以决定是否放弃写入或者重新发起写入。
④为停止位:完成数据读写后,时钟 SCL 保持高电平,当数据信号 SDA 产生一个由低电平转为高电平的上升沿时,产生一个停止信号,I2C 总
线跳转回总线空闲状态。

IIC的读/写操作

I2C 写操作,由于一次写入数据量的不同,I2C 的写操作可分为单字节写操作和页写操作,具体如图3所示,
image

图1 I2C 协议整体时序图

图3 I2C 协议单字节操作时序图
参照时序图,列出单字节写操作流程如下:
(1) 主机 产生并发送起始信号到 从机,将控制命令写入从机设备,读写控制位设置为低电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后;
(2) 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址(WORD ADDRESS)的写入。若为 2 字节地址,顺序执行操作;若为单字节地址跳转到步骤(5);
(3) 先向从机写入高 8 位地址,且高位在前低位在后;
(4) 待接收到从机回传的应答信号,再写入低 8 位地址,且高位在前低位在后,若为 2字节地址,跳转到步骤(6);
(5) 按高位在前低位在后的顺序写入单字节存储地址;
(6) 地址写入完成,主机接收到从机回传的应答信号后,开始单字节数据的写入;
(7) 单字节数据写入完成,主机接收到应答信号后,向从机发送停止信号,单字节数据
写入完成。
I2C 页写操作
单字节写操作中,主机一次向从机中写入单字节数据;页写操作中,主机一次可向从机写入多字节数据。
image

图4 I2C 协议页写操作时序图

参照时序图,列出页写操作流程如下:
(1) 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低
电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后;
(2) 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写
入。若为 2 字节地址,顺序执行操作;若为单字节地址跳转到步骤(5);
(3) 先向从机写入高 8 位地址,且高位在前低位在后;
(4) 待接收到从机回传的应答信号,再写入低 8 位地址,且高位在前低位在后,若为 2
字节地址,跳转到步骤(6);
(5) 按高位在前低位在后的顺序写入单字节存储地址;
(6) 地址写入完成,主机接收到从机回传的应答信号后,开始第一个单字节数据的写
入;
(7) 数据写入完成,主机接收到应答信号后,开始下一个单字节数据的写入;
(8) 数据写入完成,主机接收到应答信号。若所有数据均写入完成,顺序执行操作流
程;若数据尚未完成写入,跳回到步骤(7);
(9) 主机向从机发送停止信号,页写操作完成。

I2C随机操作

I2C 随机读操作可以理解为单字节数据的读取,操作时序图具体见图5.
image

图5 I2C 协议随机读操作时序图

参照时序图,列出页写时序操作流程如下:
(1) 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低
电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后;
(2) 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写
入。若为 2 字节地址,顺序执行操作;若为单字节地址跳转到步骤(5);
(3) 先向从机写入高 8 位地址,且高位在前低位在后;
(4) 待接收到从机回传的应答信号,再写入低 8 位地址,且高位在前低位在后,若为 2
字节地址,跳转到步骤(6);
(5) 按高位在前低位在后的顺序写入单字节存储地址;
(6) 地址写入完成,主机接收到从机回传的应答信号后,主机再次向从机发送一个起始
信号
(7) 主机向从机发送控制命令,读写控制位设置为高电平,表示对从机进行数据读操
作;
(8) 主机接收到从机回传的应答信号后,开始接收从机传回的单字节数据;
(9) 数据接收完成后,主机产生一个时钟的高电平无应答信号;
(10) 主机向从机发送停止信号,单字节读操作完成。

I2C 顺序读操作

image

图6 I2C 协议顺序读操作时序图

参照时序图,列出顺序读时序操作流程如下:
(1) 主机产生并发送起始信号到从机,将控制命令写入从机设备,读写控制位设置为低
电平,表示对从机进行数据写操作,控制命令的写入高位在前低位在后;
(2) 从机接收到控制指令后,回传应答信号,主机接收到应答信号后开始存储地址的写
入。若为 2 字节地址,顺序执行操作;若为单字节地址跳转到步骤(5);
(3) 先向从机写入高 8 位地址,且高位在前低位在后;
(4) 待接收到从机回传的应答信号,再写入低 8 位地址,且高位在前低位在后,若为 2
字节地址,跳转到步骤(6);
(5) 按高位在前低位在后的顺序写入单字节存储地址;
(6) 地址写入完成,主机接收到从机回传的应答信号后,主机再次向从机发送一个起始
信号;
(7) 主机向从机发送控制命令,读写控制位设置为高电平,表示对从机进行数据读操
作;
(8) 主机接收到从机回传的应答信号后,开始接收从机传回的第一个单字节数据;
(9) 数据接收完成后,主机产生应答信号回传给从机,从机接收到应答信号开始下一字
节数据的传输,若数据接收完成,执行下一操作步骤;若数据接收未完成,在此
执行步骤(9);
(10) 主机产生一个时钟的高电平无应答信号;
(11) 主机向从机发送停止信号,顺序读操作完成。

标签:协议,信号,主机,写入,地址,介绍,从机,IIC,单字节
From: https://www.cnblogs.com/powerforme/p/16587059.html

相关文章

  • 靠谱:开源IM项目OpenIM压测程序介绍-自己动手测试性能和稳定性
    压测前准备(一)服务端配置调整config/config.yaml以8核16G为例(1)openImMessagePort:[10130,10131,10132,10133,10134,10135](2)openImPushPort:[10170,10171,10......
  • 【js与native通信】1 通信协议制定
    通过native<-互相调用->js知道WebView有一个方法setWebChromeClient,可以设置WebChromeClient对象。而WebChromeClient对象中有三个方法,分别是onJsAlert......
  • C#中流的读取器和编写器(BinaryReader与 BinaryWriter ,StreamReader 与 StreamWriter,St
    C#中流的读取器和编写器(BinaryReader与BinaryWriter,StreamReader与StreamWriter,StringReader等)详细介绍智能建造小硕硕士研究生在读,分享编程、人工智......
  • OSI七层模型与TCP/IP协议
    作者:菘蓝时间:2022/9/1========================================================================================================一、为什么网络需要分层1.1层次划......
  • 计算机网络参考模型及协议
    1.分层思想1.1基本概念分层是基于面向对象上的,是更高层次上的设计理念。在软件开发技术的发展过程中,出现了很多优秀的思想与模式。这些思想和模式凝结了无......
  • 网络基础七层模型与TCP/IP协议
    1.网络基础1.1什么是网络网络就是计算机网络是一组计算机或网络设备通过有形的线缆或无形的媒介如无线,连接起来,按照一定的规则,进行通信的集合。网络通信就是指终端设......
  • SPI协议的数据读写实现(spi_slave)
    SPI协议的数据读写实现(spi_slave)  ......
  • OSI模型 TCP/IP协议
    常见术语网络相关的术语1、拓扑:物理拓扑-----体现了设备之间的连接关系逻辑拓扑----设备之间的通信关系2、数据载荷:传递的实际信息3、报文(PDU--协议数据单元)4、......
  • 自我介绍
    1.大家好!我的名字是林致远,我认为我热情,好奇,却对陌生人又有点内向,很热情的想要帮助那些陌生人,等到帮忙的时候却又不知道怎么说,但是我一定会很热情的融入大家的讨论中。2.我......
  • MySQL教程 - MySQL介绍
    更新记录转载请注明出处。2022年9月1日发布。2022年9月1日从笔记迁移到博客。MySQL版本版本分类用途分类:Community社区版本Enterprise商业版本阶段分类......