一.UART
Universal Asynchronous Receiver/Transmitter,即通用异步收发器,属于全双工通信。
在使用UART通信之前,通信双方要保证波特率一致,也就是信息传递的速率,常见的波特率有4800,9600,115200等。
UART的传输方式是将字符一位一位地传输
起始位:发送一位逻辑电平0开始传输数据
空闲:当为高电平时,无数据传输
数据位:先发低位再发高位,传输8位数据
校验位:奇偶校验,1的位数为偶数(偶校验),1的位数为奇数(奇校验)
停止位:发送逻辑电平1停止数据传输
UART缺点是传输速度较慢,且只能在两台设备之间传输信息。
二.I2C
Inter-Integrated circuit,是一种串行通信总线,使用多主从架构,属于半双工通信。
I2C使用两根信号线进行通信:一根时钟线SCL,一根数据线SDA。
I2C 支持多主多从,也就是一个 I2C 控制器下可以挂多个 I2C 从设备,通过冲突检测和仲裁机制防止多个主机同时发起数据传输时存在的冲突。这些不同的 I2C从设备有不同的器件地址。主机可以通过地址来访问指定的从机。
Vdd与SDA,SCL之间有一个上拉电阻,作图时不方便画出。
起始信号:SCL为高电平时,SDA由高电平向低电平跳变,标志着开始传输数据;
停止信号:SCL为高电平时,SDA由低电平向高电平跳变,标志着结束传输数据;
应答位(ACK/NACK):如果接受端正确接收了8bit数据,则回复一个bit的“0”信号,如果未正确接收8bit数据,或者接收端不再接受数据,则回复一个bit的“1”信号。
I2C发送数据:主机发送起始信号——>输入从机地址——>输入读或写——>从机产生ACK信号——>发送要写或读的地址——>ACK——>发送数据——>停止信号
I2C通信最多可以挂载127台设备,且传输速度大于UART,但是比起接下来要说的SPI通信,I2C跟UART的传输速度都远远不如。
三.SPI
Serial Peripheral interface,SPI,是一种高速的,全双工,同步的通信总线。
SPI中包含一个且只能有一个主设备,一个或多个从设备。
SPI接口一般使用四条信号线通信:
SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)
SDO/MOSI:主设备输出,从设备输入。
SDI/MISO:主设备输入,从设备输出。
SCK:串行时钟信号,由主设备产生。
CS/SS:从设备片选信号,由主设备产生。
SPI交换数据时,会将需要交换数据的从的SS置为低电平,从而确认需要交换的从机。
主机与从机中都有一个移位寄存器,当需要发送或读取数据时,在移位寄存器中从高位开始一位位交换数据
SPI共有四种模式,通过配置CPOL与CPHA来切换不同模式,以下为四种模式的工作方式:
以上为在学习单片机时最常见的几种通信协议的简略描述,后续如果有机会,会继续补充更详细的内容。