IIC通信过程介绍

大家好,今天小白给大家简单介绍一种常用的通信协议,IIC协议,欢迎一起讨论学习。

一.  概述

IIC集成电路总线,该总线由NXP公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离近,任意时刻只能有一个主机等。经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从机,时钟极性,时钟相位)。IIC,SPI的区别不仅在与物理层,IIC比SPI有着一套更为复杂的协议层定义.

接下来从两个方面来分别介绍一下IIC的物理层和协议层。

二. IIC的物理层

a. 两条总线线路:一条是串行数据线SDA,一条是串行时钟线SCL(IIC是半双工,而不是全双工)

b. 每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机/从机角色和地址可配置,主机可以作为主机发送器和主机接收器。

c. IIC是真正的多主机总线,(而这个SPI在每次通信前都需要把主机定死,而IIC可以在通讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。

d. 传输速率在标准模式下可以达到100kb/s,快速模式下可以达到400kb/s。

e. 连接到总线的IC数量只是受到总线的最大负载电容400pf限制。

三.  IIC的协议层

1. IIC总线的数据有效性规定:

IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号变为低电平时,数据线上的高低点评状态才允许变化。

2. 起始信号与终止信号

规定:在时钟信号为高电平期间,当数据线状态由高变低,表示一个起始信号。

在时钟信号为低电平期间,当数据线状态由低变高,表示一个终止信号。

注意:起始信号和终止信号都是由主机产生的,在起始信号产生之后,总线就处于被占用状态,在终止信号产生之后,总线就处于空闲状态。

                                               

3. 数据传送过程

每当发送端发送完一字节的数据后,发送端会等待一定的时间,等待接收方的应答信号,接收端通过拉低SDA数据线,给发送端发送一个应答信号,以提醒发送端我这边已经接受完成,数据可以继续传输,接下来,发送端就可以继续发送数据了。每一个字节必须保证是8个bit位,数据传送时先传送最高位(MSB),每一个传送的字节后面必须跟一个应答位(即:一帧共9位)

                                              

4. 关于总线寻址

主机向从机发送8位数据,这8位数据是在起始信号之后发送的第一个字节,后面的字节都是数据,不再是寻址,除非又重新来一个起始信号。

IIC总线协议有明确规定:采用7位的寻址字节,寻址字节是起始信号之后的第一个字节。

                                                        

D7~D1位是组成从机的地址,D0位是数据传输的方向位,为“0”表示主机向丛集写数据;为“1”表示主机向从机读数据。

注:主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同,则认为自己正在被主机寻址,根据R/T位将自己确定为发送器和接收器。(主机给从机发送第一个字节(总线寻址那个字节),若是读命令,则从机接收到该 命令之后,主动往主机发送数据。)

5. 在总线的一次数据传输中,可以有以下几种组合方式:

a. 主机向从机发送数据,数据传送方向在整个传递过程中不变:

                                                         

注:图中有阴影部分表示数据由主机向从机传送,无阴影部分表示数据由从机向主机传送,A表示应答,A非表示非应答(高电平),S表示起始信号,P表示终止信号。

b. 主机在第一个字节后,立即从从机读数据(传输方向不变):

                                                         

注:图中非阴影部分分别表示:从机给主机的应答信号;从机给主机的数据;(阴影部分A表示:主机给从机的回复; 阴影部分的非A表示:非应答信号)

c. 在传送过程中,当需要改变传递方向时,起始信号和从机地址都被重复一次产生一次,两次读/写方向位正好相反。

                                                         

6. 几个常用信号的波形

                                                     

使用过程可以参考高通qapi文档,也可以参考我的另外一篇博客:

https://blog.csdn.net/weixin_38498942/article/details/86002613

四. 总结

本篇主要就IIC的物理层和协议层两个方面进行了简单的介绍,欢迎大家一起讨论学习。

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/86473776