常见的通信总线有哪些?⭐⭐⭐⭐
通讯总线 | 引脚 | 电平 | 时钟 | 主/从设备 | 全双工/半双工 | 特点 |
---|---|---|---|---|---|---|
I2C总线 | SCL、SDA | 单端 | 同步 | 一主多从 | 半双工 | 低速设备通信,支持多从模式 |
SPI总线 | SCK、MOSI、MISO、SS | 单端 | 同步 | 一主多从 | 全双工 | 高速通信,适用于连接外围设备和外部存储器,支持全双工模式 |
UART总线 | TX、RX | 单端 | 异步 | 点对点 | 全双工 | 异步通信,适用于连接串口设备、无线模块等 |
CAN总线 | CAN_H、CAN_L | 差分 | 异步 | 多主多从 | 可以是全双工或半双工 | 实时数据传输,多主多从,错误检测和优先级仲裁 |
USB总线 | D+、D-(USB 2.0) | 单端 | 同步 | 一主多从 | 可以是全双工或半双工 | 高速数据传输,支持多种传输模式,如控制传输、批量传输等 |
PCIe总线 | 多引脚,具体取决于接口版本 | 差分 | 同步 | 一主多从 | 全双工 | 高性能外设连接,高速全双工数据传输,低延迟 |
以太网 | RJ45或其他 | 差分 | 异步 | 多点通信 | 通常是全双工 | 基于IP 协议的数据传输,支持局域网或互联网连接 |
同步通信和异步通信⭐⭐⭐⭐
定义
同步通信:在同步通信中,发送方和接收方的时钟是相互关联的,数据的传输和接收是基于一个共同的时钟信号进行同步的。
- 发送方在每个时钟周期内按照时钟的节拍发送数据,接收方也按照同样的时钟节拍接收数据。
- 双方通过时钟信号的同步来保证正确的数据传输。同步通信对时序要求较高,需要在通信双方之间建立稳定的时钟信号。
异步通信:在异步通信中,发送方和接收方没有共同的时钟信号进行同步。
- 数据的传输和接收不依赖于特定的时钟信号,而是通过特定的起始位和停止位来标识数据的传输开始和结束。
- 每个数据帧都有自己的起始和停止位,这样接收方可以通过检测起始和停止位来识别每个数据帧。
- 异步通信相对较为灵活,但需要额外的控制位来标识起始和停止。
区别
- 时钟同步:同步通信使用共同的时钟信号进行同步,异步通信没有共同的时钟信号。
- 数据帧结构:同步通信将数据划分为固定的时间片或时钟周期,而异步通信在数据之间插入起始和停止位来界定数据帧的开始和结束。
- 时序要求:同步通信对时序要求较高,通信双方需要保持严格的同步;而异步通信对时序要求较低,通信双方无需精确同步。
- 灵活性:同步通信相对刚性,因为通信双方必须始终保持同步;异步通信相对灵活,因为通信不依赖于特定的时钟信号。
UART
定义
通用异步收发传输器(
Universal Asynchronous Receiver/Transmitter
),通常称作UART
。是一种异步全双工串行通信协议,它将要传输的资料在串行通信与并行通信之间加以转换。
当总线处于空闲状态时信号线的状态为
1
即高电平。
协议
将数据的字节按照二进制一位接一位地传输 一帧数据包括起始位、数据位、校验位和停止位
起始位
开始进行数据传输时发送方要先发出一个低电平
0
来表示传输字符的开始。
- 空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
数据位
起始位之后就是要传输的数据,数据可以是
5
,6
,7
,8
位,构成一个字符,一般都是8
位。先发送最低位LSB
,再发送最高位MSB
(小端模式)。
奇偶校验位
数据位传送完成后,要进行奇偶校验
- 无校验(
No Parity
) - 奇校验(
Odd Parity
):如果数据位中1
的数目是偶数,则校验位为1
才能满足1
的个数为奇数,如果1
的数目是奇数,校验位为0
。 - 偶校验(
Even Parity
):如果数据为中1
的数目是偶数,则校验位为0
才能满足1
的个数为偶数,如果1
的数目是奇数,校验位为1
。 Mark Parity
:校验位始终为1。Space Parity
:校验位始终为0。
停止位
波特率定义,为什么双方波特率要相同?⭐⭐⭐⭐
波特率(
Baud rate
)是一种衡量数据传输速率的单位,表示每秒传输的信号变化次数。 在串行通信中,波特率决定了数据传输的速率。
发送方和接收方可以按照相同的时间间隔传输和接收数据,确保数据能够按正确的速率传输并且保持同步。
- 单位
bps
(bits per second
)
与USART的区别
特点 | UART | USART |
---|---|---|
通信方式 | 只支持异步通信 | 可支持异步和同步通信 |
全双工通信 | 可以进行全双工数据传输 | 可以进行全双工数据传输 |
功能 | 通常只包括发送和接收功能 | 包括发送、接收、同步和异步等多种功能 |
数据线 | 两根数据线,无时钟线 | 在同步通信模式下需要多个数据线和时钟线 |
适用场景 | 适用于简单的低速异步通信应用 | 适用于更复杂的通信需求,包括同步和异步通信等 |
I2C ⭐⭐
SPI ⭐⭐⭐
I2C与SPI的区别
区别 | I2C | SPI |
---|---|---|
通信方式 | 半双工 | 全双工 |
确认机制 | ACK | 无 |
数据采样 | SCL 高电平 | SCL跳变沿 |
设备选择 | 7/10地址码 | CS片选线 |
引脚类型 | 开漏输出 | 推挽输出 |
上拉电阻 | 需要 | 不需要 |
速率/适用 | 低速 | 高速 |
传输流程 | 每次一个字节 | 没有限制 |
多主模式 | 支持 | 不支持 |
数据优先级
协议 | 数据优先级 | 是否可配置 |
---|---|---|
I²C | MSB优先 | 否 |
SPI | 默认 MSB优先,支持 LSB优先 | 是 |
UART | LSB优先 | 否 |