前言
本篇文章将会带大家详细了解IIC协议。
一、IIC协议是什么
首先,IIC通信与UART,还有SPI统称为串行接口通信,不过它们之间还是有区别的,如UART的负电平逻辑,还有UART通信不需要时钟,只需要特定的波特率即可,SPI与IIC都可以有一个主机,多个从机的情况,不过IIC适用于短距离传输,如片间通信,摄像头的配置等场景。
二、IIC协议的硬件连接
一个控制器里面可以含有多个IIC控制器,一个IIC控制器可以挂载多个IIC设备,这些IIC设备都通过SDA,SCL和主机进行通信。
三、IIC传输数据
写数据
1.主设备发送一个开始信号
2.发出一个设备地址(用来确定是往哪一个芯片写数据),方向(读/写,0表示写,1表示读)
3.从设备回应(用来确定这个设备是否存在),然后就可以传输数据
4.主设备发送一个字节数据给从设备,并等待回应
5.每传输一字节数据,接收方要有一个回应信号(确定数据是否接受完成),然后再传输下一个数据。
6.数据发送完之后,主设备就会发送一个停止信号。
读数据
1.主设备发送一个开始信号
2.发出一个设备地址(用来确定是往哪一个芯片写数据),方向(读/写,0表示写,1表示读)
3.从设备回应(用来确定这个设备是否存在),然后就可以传输数据
4.主设备发送一个字节数据给从设备,并等待回应
5.每传输一字节数据,接收方要有一个回应信号(确定数据是否接受完成),然后再传输下一个数据。
6.数据发送完之后,主设备就会发送一个停止信号。
产生开始信号和停止信号
开始信号:在SCL线为高电平时,SDA线由高电平变为低电平。
结束信号:在SCL线为高电平时,SDA线由低电平变为高电平。
将数据发送出去
在SCL为高电平时,会将SDA上的电平信号传输出去,当SCL为低电平时可以改变SDA上的电平信号。
注意:在传输数据的过程中SCL必须保持高电平。第一个发送的数据必须是从设备地址,只有找到从设备地址才可以开始发送下面的信息。
总结
本文主要对IIC的硬件连接,开始信号,停止信号,读写做了一些简单的讲解。