ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IIC通信协议

2019-08-08 17:00:51  阅读:418  来源: 互联网

标签:SCL 通信协议 总线 SDA IIC 数据传输 起始 设备


本文仅作为学习笔记

IIC协议:

和URAT的RXD、TXD一样,IIC也是由两根线构成:

一根SCL(时钟线)、一根SDA(数据线)

总线(无数据收发的情况)空闲状态,SCL和SDA为高电平

 

IIC一个写数据需要:启动信号——发送地址——发送数据——结束信号

 

起始和结束信号产生条件:总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件,开始进行IIC传输;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件,结束IIC传输。

在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。起始和结束如图所示

 在了解起始条件和停止条件后,我们再来看看在这个过程中数据的传输是如何进行的。前面我们已经提到过,数据传输以字节为单位。主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位, 此时才认为一个字节真正的被传输完成。当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否 定应答位。数据传输的过程如图所示:

 

 

在前面我们还提到过,I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。向指定设备发送数据的格式如图所示:(每一最小包数据由9bit组成,8bit内容+1bit ACK, 如果是地址数据,则8bit包含1bit方向)

 

 

 

 

注意:在SCL的高电平读取SDA状态,若SDA为高电平,则为1,反之亦然。

 

是完整的一I2C数据

可以看到,不算起始终止条件,共九个时钟信号,在起始条件之后,当SCL线上升沿时,SDA的沿的状态就是数据,上升沿为1,下降沿为0,前8个为数据,最后一个为应答。

 

 

 

4  I2C总线操作

    对I2C总线的操作实际就是主从设备之间的读写操作。大致可分以下三种操作情况

  •     主设备往从设备中写数据。数据传输格式如下:

 

 

 

  •     主设备从从设备中读数据。数据传输格式如下:

 

 

  •     主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。数据传输格式如下:

 

 

    第三种操作在单个主设备系统中,重复的开启起始条件机制要比用STOP终止传输后又再次开启总线更有效率。

 

标签:SCL,通信协议,总线,SDA,IIC,数据传输,起始,设备
来源: https://www.cnblogs.com/black-Z/p/11322248.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有