Skip to content

通信协议

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