单片机常用通信外设特点及通信方式对比表
✨ 嵌入式工程师必备!5分钟搞懂单片机「通信外设」选型指南
📊 单片机通信外设速查表
外设 | 特点 | 通信方式 | 适用场景 | 选型口诀 |
---|---|---|---|---|
UART | 🔹 简单!两根线就能通信 🔹 全双工(收发同时) 🔹 波特率自由配(9600~115200常见) | 异步串行 👉 TX发 + RX收 👉 无需时钟线 👉 靠起始/停止位同步 | 传感器读数 PC调试输出 模块固件升级 | ❤️ 要简单,选UART! |
SPI | 🔹 速度王者(50MHz+) 🔹 全双工+同步 🔹 需要4根线(MOSI/MISO/SCK/CS) | 同步串行 👉 主设备发时钟SCK 👉 MOSI发数据,MISO收数据 👉 CS片选控制多设备 | 高速Flash/SD卡 OLED屏驱动 ADC/DAC芯片 | 🚀 拼速度,上SPI! |
I²C | 🔹 省线神器(2根线!) 🔹 半双工(不能同时收发) 🔹 支持多主多从 地址寻址 | 同步串行 👉 SCL时钟 + SDA数据 👉 7/10位设备地址 👉 开漏输出需上拉电阻 | 板载传感器 EEPROM存储 RTC时钟芯片 | 📌 省引脚,用I²C! |
CAN | 🔹 抗干扰战神(差分信号) 🔹 多设备总线通信 🔹 自带错误检测+重发 | 差分总线 👉 CAN_H + CAN_L双绞线 👉 非破坏仲裁(优先级机制) 👉 广播+过滤接收 | 汽车ECU通信 工业PLC控制 机器人系统 | 🛡️ 抗干扰,CAN强! |
USB | 🔹 高速(480Mbps!) 🔹 支持热插拔 🔹 协议栈复杂(需库支持) | 主从架构 👉 Host(主)/Device(从) 👉 差分信号D+/D- 👉 支持OTG主从切换 | 设备固件升级 HID外设(键鼠) 高速数据采集 | ⚡ 要高速,USB冲! |
BLE | 🔹 超低功耗(电池扛1年+) 🔹 支持Mesh组网 🔹 手机直连超方便 | 2.4G无线 👉 GAP(广播/连接) 👉 GATT(服务/特征值) 👉 自适应跳频防干扰 | 智能手环 蓝牙温控器 物联网传感器 | 🔋 低功耗,BLE稳! |
💡 避坑指南
-
I²C地址冲突:
→ 同一总线上挂2个相同地址传感器?💥 硬件改地址或换I²C交换机! -
SPI时钟干扰:
→ SCK线过长?加磁珠滤波或缩短走线,否则数据错乱到你怀疑人生! -
CAN总线终端电阻:
→ 120Ω终端电阻必须加在总线两端!不加?数据帧反射全乱套! -
UART波特率偏差:
→ 晶振误差±5%?通信直接失败!选自动波特率检测或换高精度晶振~
🎯 一招选型法
graph LR
A[通信需求] --> B{速度要求?}
B -->|超高速| C[SPI/USB]
B -->|中低速| D{引脚数量?}
D -->|紧张(2根)| E[I²C/UART]
D -->|充足(4根+)| F[SPI]
A --> G{抗干扰?}
G -->|强| H[CAN]
G -->|弱| I[其他]
A --> J{要无线?}
J -->|是| K[BLE/Wi-Fi]
🌰 场景案例
「智能家居温控器」怎么选?
- 传感器读数:I²C(省线!挂多个BME280)
- 屏幕驱动:SPI(刷屏快!)
- 连接手机:BLE(低功耗+手机直连)
- 固件升级:USB/UART(烧录方便)
关注我👉分享更多知识