串行通信协议I2C、SPI、UART

终端和其他终端或者外设通信的方式:串行通信和并行通信

串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。

并行通信时数据的各个位同时传送,可以字或字节为单位并行进行。

并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机或PLC各种内部总线就是以并行方式传送数据的。

常用的串行通信协议:

SPI(Serial Peripheral Interface:串行外设接口);可以实现全双工

SPI总线由三条信号线组成(多个从设备时候需要有设备选择先SS):串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。

提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。

 根据时钟相位和时钟极性有四种通信模式(定义高低电平忙碌、   在奇数或者偶数边沿采样)

起始信号:由SS线发出高→低

停止信号:由SS线发出低→高

数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。 MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

SPI每次数据传输可以8 位或 16 位为单位,每次传输的单位数不受限制。

I2C(INTER IC BUS);半双工

I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准

2根线:scl:时钟线sda:数据线

3.种信号
起始信号:scl为高电平,sda从高到低的跳变
停止信号:scl为高电平,sda从低到高的跳变
应答信号:在第9个时钟周时,sda总线上的低电平
2种时序
写:
start+7位从机地址 0(写)+ack+8位reg+ack+8位 data+ack+stop
读:
start+7位从机地址 +(写)+ack+8位reg+ack+
start+7位从机地址 +(读)+ack+8位data+NO ack+stop

scl为高电平的时候,sda电平变化,表示start stop。
sda电平不变化,数据保持稳定,并发送数据。
scl为低电平的时候,sda电平变化,表示数据改变

UART(Universal Asynchronous Receiver Transmitter:通用异步收发器);全双工

UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,

一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线(RX  TX),一根用于发送,一根用于接收。

1个起始位,8个数据位(可选),1个奇/偶校验位(可选),1个结束位(校准时钟作用)、空闲位

原文地址:https://www.cnblogs.com/huiji12321/p/11722087.html