通讯协议IIC解读片

一、IIC简介

IIC协议是飞利浦公司开发的,只需要两根线(SDA SCL)的一个通讯协议。多半用于IC之间的通信,通信距离短。

物理层特点:

(1)支持设备总线,“总线”是指多个设备共用通信线,就是可以一个主机连接多个从机,从机都挂载在同一条通信线上,每个从机都有自己的地址。

(2)总线(SDA SCL)通过上拉电阻接到电源.当总线空闲时,会输出高阻态,当总线挂载多个从机时,总线都空闲时,由上拉电阻把总线拉到高电平。

协议层特点:

IIC协议规定了起始信号、停止信号、数据有效性、响应、仲裁、时钟同步、地址广播等环节。

(1)写数据

如下图所示:

主机先发送一个起始位–>再发送要接收数据的从机地址–>然后等待从机送回的应答信号–>主机接收到应答信号之后–>主机开始给从机发送数据(数据包的大小为8位);–>主机每发送完一个数据包都要等待从机的应答信号,重复此过程。当数据传输结束后,主机向从机发送一个停止信号。

通讯协议IIC解读片_第1张图片
通讯协议IIC解读片_第2张图片
通讯协议IIC解读片_第3张图片
----------------------------------------------------图例适用于文中所有图片----------------------------------------------

(2)读数据

读数据如下图所示:

主机发送一个起始信号–>发送要与之通信的从机的地址–>得到从机的应答信号–>从机开始向主机返回数据(8bit),从机每发送完一包(8bit)数据,都会等待主机的应答信号(ACK),重复这个过程,直至数据发送完毕。当主机希望从机发送数据停止时,就向从机返回一个非应答信号(NACK ),从机自动停止数据传输。

通讯协议IIC解读片_第4张图片

(3)读和写数据

读数据和写数据综合起来如下图所示:

复合读和写其实就是给一个特定的从机的特定寄存器地址写数据或者读数据。

过程是:起始信号–>从机(设备)地址–>等待从机的应答信号–>主机得到应答信号–>给从机发送一段数据(从机的内部的寄存器的地址)–>得到从机应答信号–>主机发送起始信号–>从机地址(设备地址,不是设备内部寄存器的地址)–>读写数据的发送。(第一次通信是告诉从机的读写地址,第二次是真正的读写数据。)

通讯协议IIC解读片_第5张图片

起始信号与停止信号

通讯协议IIC解读片_第6张图片

(1)起始信号:SCL在高电平期间,SDA由高电平变为低电平的过程。

(2)停止信号:SCL在高电平期间,SDA由低电平变为高电平的过程。

(3)数据有效性:SCL在高电平期间才可以进行数据的传输,SDA数据线在SCL的每个时钟周期内传输一位数据。

(4)地址及方向:IIC设备地址规定7位或10位,一般7位比较常用,7位地址之后紧跟的是一位方向位(R/W),“1”表示从从机读数据,“0”表示向从机写数据。

通讯协议IIC解读片_第7张图片

(5)响应:IIC的数据和地址都算一个数据包,都带响应与非响应。(其实对于IIC从机而言,它不区分地址与数据,对它来说就是一串数据,只是我们认为的去那样解读了而已,解读成地址或数据)。当设备(无论主从)希望接收到对方的数据,就会回复一个应答信号“ACK”,如果希望停止,那么会回复一个非应答信号“NACK”。

应答与非应答信号:

(1)非应答信号:SCL高电平期间,数据接收端接收到一个高电平表示非应答信号

(2)应答信号:SCL高电平器件,数据接收端接收到一个低电平表示收到的是应答信号。

通讯协议IIC解读片_第8张图片

你可能感兴趣的:(stm32)