每当学习UART、I2C、SPI 或 RS485时,往往会被一堆术语绕晕。其实,看懂它们,只需要搞懂三个核心维度:
- 路怎么走?(双工:单工/半/全)
- 一次过几辆车?(位宽:串行/并行)
- 我们要不要对表?(同步:同步/异步)
一、数据流向:单工、半双工、全双工
这个维度描述的时:谁能说话?能不能同时说话?
1. 单工(Simplex)---------”广播电台“
这是最霸道的一种方式。路是单向的,一旦修好,方向就定死了。
- 定义:数据只能单向流动。一方永远是发送器,另一方永远是接收器。
- 类比:收音机/广播。电台只管播,你只管听收音机,你对着收音机怎么操作,电台也无法听见。
- 特点:只有一根数据线(或无线信道),没有”回嘴“机会。
2. 半双工(Half-Duplex)-------- “对讲机”
这就是一种“君子协定”。我们可以互相说话,但是不能抢话。
- 定义:数据可以双向流动,但同一时刻只能有一个方向。要么我发你收,要么你发我收。
- 类比:对讲机。只有一个人说完“Over”,松开按钮,另一个人才能按下按钮说话。如果两个人都按
- 典型代表:I2C、RS485
3.全双工(Full-Duplex)---------- ”打电话“
这是最高效的沟通方式。
- 定义:数据可以在同一时刻双向流动。发送和接收互不干扰。
- 类比:打电话。你在说话的适合,也能听到对方的吵闹声,大家可以一起互喷。
- 硬件代价:通常需要两根独立的数据线,一根负责发送(TX),一根负责接收(RX)。
- 典型代表:UART(串口)、SPI。
二、传输宽度:串行 vs 并行
这个维度描述的是:一次能传多少个bit?
1.并行通信--------”多车道宽马路“
-
定义:多条数据线同时传输。比如8根线,一次就能传1个字节。
-
类比:高速收费站的8个闸口。8辆车可以并排同时通过。
-
优点:
- 快(理论上):单次吞吐量大,一个时钟周期过去的数据多。
-
缺点:
- 费引脚:随便传点数据就要占用单片机8个甚至16GPIO,太奢侈了。
- 干扰大、难传远:线之间会互相干扰(串扰)。而且距离一长,这8辆车很难保证同时到达终点(时序偏移),导致高速传输受限。
2.串行通信----------”冰糖葫芦“
-
定义:只有一条数据线,数据像冰糖葫芦一样,一个bit接一个bit地排队发送。
-
类比:单行道。不管你有多少辆车,都必须排成一队,一辆一辆过。
-
优点:
- 省引脚:最少只需要一根线就能传数据。
- 传得远:抗干扰能力强,成本低。
- 并不慢:虽然一次传得少了,但是现在技术发达了,发送频率可以极高(GHz级别),比如USB3.0、SATA、PCIE都是串行的,速度吊打老式并行接口
-
典型代表:UART、I2C、SPI、USB(几乎现代所有主流接口)。
三、节奏控制:同步、异步
这个维度最关键,它描述的是:接收方怎么知道哪一位是0,哪一位是1?
1. 同步通信(Synchronous)--------”广播体操“
核心特征:必须有一根时钟线(CLK/SCL/SCK)。
-
原理:发送方除了发数据,还专门拉一根线(时钟线)来打拍子。
-
类比:全校做广播体操
- 喇叭里的口令”一、二、三、四“就是时钟线
- 学生们的动作就是数据。
- 不管口令喊得快还是慢,学生都听口令做动作,绝对不会乱。
-
优点:效率高,大家都听指挥,只要时钟不停,数据就可以一直传。
-
典型代表:I2C、SPI。
2. 异步通信(Asynchronous)---------”考场时对答案“
核心特征:没有时钟线,全靠私下约定。
-
原理:双方没有连接时钟线,但私下约定好一个速度(波特率Raud Rate,比如9600)。
-
类比:作弊对答案。
- A 和 B约定:”每隔 1 秒 做一个手势传一个答案“。
- A (发送方) 先挥手示意”我要开始了“(起始位)。
- B(接收方)看着手表,每隔一秒记录一次。
- 风险:如果B的手表慢了,或者A的手速快了,数到第10题目时就可能错位了。所以异步通信不能一次传太长的数据,需要频繁重新对准(起始位)。
-
优点:省了一根时钟线,接线最简单。
-
典型代表:UART(串口)。
总结一张表
| 协议名称 | 双工模式 | 传输方式 | 同步模式 | 硬件特征 |
|---|---|---|---|---|
| UART | 全双工 | 串行 | 异步 | TX,RX(无时钟线) |
| I2C | 半双工 | 串行 | 同步 | SCL(有时钟线),SDA |
| SPI | 全双工 | 串行 | 同步 | MOSI,MISO,SCK(有时钟线) |
| RS485 | 半双工 | 串行 | 异步 | 差分线A,B |