首先来个串口通讯协议的区分:
UART,通用异步收发传输器,异步,全双工;
spi,同步,全双工;
iic,同步,半双工。
同步通信是阻塞方式;
异步通信是非阻塞方式。
串口通讯只能在2个设备之间进行,如果是3个设备互相通讯,那每个设备得具有两组串口,它其实是3组独立的串口通讯;如果是4个设备相互通讯就更加麻烦了,最突出的问题就是线路连接比较复杂(多);
为了解决以上线路复杂的问题,人们设计了一种总线通讯,总线通讯协议是有很多种的,接下来要说的是IIC协议;
IIC:原名Inter-Integrated Circuit,意思就是芯片与芯片之间的通讯,下面就是I2C的连线方式,可以很明显的看出即使芯片再多,线路连接也显得很简单;
IIC通讯一般采用一主多从模式,比如单片机是主机,别的设备都是从机;那么它是怎么通讯的呢?
以单片机向从设备写信息为例,下图是一帧标准的写数据帧;
串口通讯的两根线分别是发送和接受, 而IIC这两根线分别是时钟线和数据线;发送一帧数据是时钟线和数据线共同作用的;
当处于空闲状态时,时钟线和数据线都处于高电平;
下面是一个标准的读数据帧;