同步与异步:双方是否有公共时钟,时钟是否同步
半双工 | 全双工 | |
---|---|---|
同步通信 | IIC(串行) | SPI |
异步通信 | RS485 | RS232 |
一、UART
Universal Asynchronous Receiver Transmitter 即通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收在嵌入式系统中常用于主机与辅助设备之间的通信。
特点:
- 空闲时,RXD和TXD默认高电平
- 数据起始位为低电平,低位在前,高位在后,串口数据一般为8位
- 串口可选择是否开启数据校验,校验位:单个字节数据校验,对数据中高低电平数据个数进行计数,常见的有奇偶校验
存在的问题:
- 电气接口不统一
- 抗干扰能力差
- 通信距离极短
二、RS232
接口:DB-9
信号:该标准规定逻辑“1”的电平为-5v到-15v,逻辑“0”的电平为+5v 到+15v
需要电平转换
三、RS485
信号:差分信号传输,两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6v表示逻辑“0”
- 半双工,收发不能同时进行
四、IIC
-
SCL为高电平时,SDA由高变低表示起始信号
-
SCL为高电平时,SDA由低变高表示停止信号
-
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线处于空闲状态
流程:
1.主机发送起始信号启用总线
2.主机发送一个字节数据指明从机地址和后续字节的传送方向(高7位地址,最低位为方向,'0’表示主机发送数据,'1’表示主机接收数据)
3.被寻址的从机发送应答信号回应主机
4.发送器发送一个字节数据
- 每个字节为8位长度
- 先传最高位,后传低位
- 发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位
5.接收器发送应答信号回应发送器
… … (循环步骤4、5)
n.通信完成后主机发送停止信号释放总线
同步信号
- SCL的作用就是告诉发送器什么时候发送数据,告诉接收器什么时候接收数据
- SCL低,发送器发送数据,SCL高,接收器接收数据
典型IIC时序
-
主机向从机发送数据
-
从机向主机发送数据
指定地址读数据:
-
主机先向从机发送数据,然后从机再向主机发送数据
注:阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答, A非表示非应答,S表示起始信号,P表示终止信号
五、SPI
- 至少四根线:SCLK、MOSI、MISO、CS
- 同步、全双工
- 支持总线挂载多设备(一主多从)、
- 先发高位,后发低位
起始条件:SS从高电平切换到低电平
终止条件:SS从低电平切换到高电平
极性和相位
CPOL = 0 | 空闲时SCLK为低电平 |
CPOL = 1 | 空闲时SCLK为高电平 |
CPHA = 0 | 每个周期的第一个时钟沿采样(读数据) |
CPHA = 1 | 每个周期的第二个时钟沿采样 |
六、CAN
CAN 总线会使用 11 或 29 位的标识符