→ 同一总线上挂2个相同地址传感器?→ 晶振误差±5%?,否则材料错乱到你怀疑人生!→ 120Ω终端电阻。
✨ 嵌入式工程师必备!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(烧录方便)
关注我?分享更多知识