前言
就个人对IIC通信的理解,通过用图文的方式,尽量简洁的记录下此文。希望能对大家理解IIC通信协议有所帮助。
理解IIC
对于IIC协议的理解,我个人是将完整的IIC时序协议,分成六大块理解。分别是
开始条件
,结束条件
,发送字节
,发送字节
,发送应答
,接收应答
。通过对六大块的调用。拼接起来使用即可组成完整的IIC协议通信。
以下约定:"高"指高电平,"低"指低电平
开始条件(1):SDA由高变低,SCL高电平期间。
结束条件(1):SDA由低变高,SCL不变。
发送字节(8):将要发送的数据(0或1)置给SDA,然后SCL由"低"变"高",就完成一次一位数据的发送,循环8次,就是发送一个字节。
发送字节(8):释放SDA,然后SCL由"低"变"高",此时读取SDA的电平,就是从机返回的一位数据,循环8次,就能接收到一个字节。
发送应答(1):当主机发送完一个字节数据后,等待从机的回应。用来为主机判断从机有没有接受到数据做判断。
接收应答(1):当主机接收完一个字节数据后,给予从机的回应。用来为主机判断从机有没有接收到数据做判断。
上面的六大操作块后都跟(x),x为SDA和SCL操作的次数。(我目前见到的IIC协议是这样,不排除有改变或没见过的)
图解IIC
以下是参考江科大的IIC的图形和我个人理解,绘制出来的时序六大块,看着就一目了然。
-
IIC六大块图片解析
图中紫色线条和字眼的,代表输入权转移都从机,主机则在等待状态。
-
基础IIC通信
下图的图示就介绍的模块拼接后,完成一次收发通信的演示。
知识要点:
- 一般情况下,通信数据高位在前。
- IIC器件两条线SDA(数据线),SCL(时钟线)。
- SDA,SCL线在IIC协议上是要默认高电平的,必要时是要加上上拉电阻。
- IIC协议的通信速度分为三种模式:1.标准模式的传输速率为100Kb/s;2.快速模式为400Kb/s;3.高速模式为3.4Mb/s。
- 本文记录中IIC通信时没有强调速率的影响,但是在实际使用时,如果引脚速率太快,就要在软件中,适当的在每个时序块操作中,添加一定的延时。