通信协议
1. 通讯协议 (Communication Protocol)
定义: 双方约定好的一套规则。它规定了数据怎么发、发多快、怎么校验对错。
比喻: 就像 摩斯密码。
- 物理层: 用手电筒闪光(开/关)。
- 协议层: 规定“三短”代表 S,“三长”代表 O。
- 只有收发双方都拿着同一本密码本(协议标准),才能看懂意思。
常见协议: UART(串口)、I2C、SPI、CAN、USB 等。
2. 双工 (Duplex) —— “能不能同时说话?”
双工描述的是数据传输的方向性。
| 模式 | 中文名 | 含义 | 生活比喻 | 典型代表 |
|---|---|---|---|---|
| Simplex | 单工 | 只能单向传输,永远是你发我收。 | 收音机/广播 (电台只管发,你只能听,不能回嘴) | 某些传感器 |
| Half-Duplex | 半双工 | 可以双向,但 不能同时。同一时刻只能一个人说。 | 对讲机 (你说完要喊“Over”,松开按钮我才能说话) | I2C, RS-485 |
| Full-Duplex | 全双工 | 可以 同时双向传输。你有两张嘴,两个耳朵。 | 打电话 (我们可以同时吵架,互不影响) | UART, SPI |
注意:全双工通常需要 两根 数据线(一根发TX,一根收RX);半双工通常只需要一根数据线(分时复用)。
3. 时钟 (Clock) —— “我们要不要对表?”
这是通信中最关键的区别,决定了是同步通信还是异步通信。
A. 同步通信 (Synchronous) —— 有时钟线 (CLK)
原理: 通信双方之间有一根专门的线叫 SCLK (Serial Clock)。主机每发一个脉冲(像打拍子一样),大家就读一位数据。
比喻: 广播体操。
- 大喇叭喊“一、二、三、四”(时钟信号)。
- 所有人听到口令做动作。大家的动作绝对整齐,不会乱。
代表: I2C, SPI。
特点: 稳定,速度快,但多占一根线。
B. 异步通信 (Asynchronous) —— 无时钟线
原理: 没有那根打拍子的线。双方必须私下里约定好一个速度(波特率 Baud Rate),比如“每秒钟发9600个字”。
比喻: 两个乐手盲奏。
- 大家不看指挥,约定好都按 120 BPM 的速度弹。
- 如果其中一个人慢了或者快了(波特率不匹配),曲子就乱了(乱码)。
代表: UART (串口)。
特点: 省线(只要TX/RX),但对时间精度要求高,容易出错。
4. 电平 (Voltage Level) —— “什么是 0,什么是 1?”
在软件里我们写 0 和 1,但在物理线路上,必须用 电压 来表示。不同的标准,对电压的规定不同。
A. TTL 电平 (单片机最常用的)
STM32/51单片机 都在用这个。
- 逻辑 1: 高电平(通常是 3.3V 或 5V)。
- 逻辑 0: 低电平(0V / GND)。
- 特点:
简单,芯片之间直接连线就行。
B. RS-232 电平 (老式电脑接口)
- 逻辑 1: 负电压(-3V 到 -15V)。
- 逻辑 0: 正电压(+3V 到 +15V)。
- 警告: 千万不要把 RS-232 直接接到 STM32 的引脚上!
- 因为 STM32 最高只能承受到 3.3V 或 5V,RS-232 的 12V 电压会瞬间 烧毁你的芯片。
- 你需要一个“翻译官”芯片(如 MAX3232)来转换电平。
C. 差分电平 (RS-485 / CAN)
它不看具体的电压值,而是看 两根线的电压差。
特点: 抗干扰能力极强,适合工业现场拉很长的线。
5. 设备 (Device) —— “谁是老大?”
在通信总线上,必须明确身份。
- Master (主机): 发起对话的人,掌控时钟的人(指挥官)。通常是你的 STM32。
- Slave (从机): 被点名的人,配合主机工作。通常是传感器(如 MPU6050, OLED 屏幕)或者存储芯片 (Flash)。
总结一张表
| 协议 | 全名 | 时钟 (CLK) | 双工模式 | 线数 | 特点 | 场景 |
|---|---|---|---|---|---|---|
| UART | 通用异步收发器 | 无 (异步) | 全双工 | 2 (TX, RX) | 最简单,容易乱码 | 打印调试信息、蓝牙模块 |
| I2C | 集成电路总线 | 有 (同步) | 半双工 | 2 (SCL, SDA) | 只要两根线能挂很多设备 | 接传感器、OLED屏 |
| SPI | 串行外设接口 | 有 (同步) | 全双工 | 4 (SCK, MOSI, MISO, CS) | 速度最快,线多 | 接屏幕、SD卡、Flash |