# 通信方案选型决策树

## 一级决策：有线 vs 无线

```
是否需要电气隔离？ ── 是 ──→ 无线方案（BLE/WiFi/2.4G）
      │
      否
      │
      ▼
通信距离？ ── < 2m ──→ 有线方案（USB/UART/SPI/I2C）
      │
      > 2m
      │
      ▼
需要联网/云平台？ ── 是 ──→ WiFi + MQTT
      │
      否
      │
      ▼
需要手机直连？ ── 是 ──→ BLE蓝牙
      │
      否
      │
      ▼
低延迟遥控（<10ms）？ ── 是 ──→ 2.4G私有协议
      │
      否
      │
      ▼
工业环境/远距离/多节点？ ── 是 ──→ CAN / RS485
      │
      否
      │
      ▼
多传感器低速采集？ ──→ I2C总线
高速外设？ ──→ SPI
调试/模块AT指令？ ──→ UART
```

## 有线通信详细对比

| 协议 | 信号线数 | 速率 | 拓扑 | 距离 | 需要上拉 | 典型应用 |
|------|---------|------|------|------|---------|---------|
| USB 2.0 FS | D+/D- + VBUS + GND | 12Mbps | 点对点 | <5m | 内部已有 | 电脑通信、供电、下载 |
| USB Type-C | CC1/CC2 + D+/D- + VBUS + GND | 480Mbps | 点对点 | <5m | 内部已有 | 供电+数据二合一 |
| UART | TX/RX（+RTS/CTS流控） | 9600~921600bps | 点对点 | <2m | 否 | 蓝牙模块、GPS、调试 |
| SPI | SCK/MOSI/MISO/CS（每增加1从机增加1CS） | 1~50MHz | 一主多从 | <0.3m | 否 | TFT屏、高速ADC、Flash |
| I2C | SDA/SCL | 100k/400k/1MHz | 多主多从 | <2m | 是（4.7KΩ典型） | 传感器、RTC、OLED |
| CAN | CANH/CANL | 1Mbps(40m)~125kbps(500m) | 多主 | 500m+ | 终端120Ω | 汽车、工业控制 |
| RS485 | A/B | 10Mbps(12m)~100kbps(1200m) | 一主多从 | 1200m | 终端120Ω | 工业仪表、Modbus |

### 有线通信设计要点

**USB Type-C**：
- CC引脚5.1K下拉电阻：告知Host设备为受电设备。
- 高压测量场景：USB直连电脑存在安全风险（被测高压可能通过地回路串入损坏电脑），应加隔离或改用无线。

**UART**：
- 交叉连接：模块RXD接MCU的TX，模块TXD接MCU的RX。
- 波特率需与模块规格匹配（蓝牙HC-05常见9600或115200）。
- 推荐使用中断接收方式。

**SPI**：
- 四线标准连接：SCK/MOSI/MISO/CS。注意模式（CPOL/CPHA）匹配。
- CS引脚建议用GPIO软件控制，避免硬件NSS的各种坑。

**I2C**：
- 必须外接上拉电阻，典型值4.7KΩ（可放宽到10KΩ）。
- 阻值越小 → 上拉能力越强 → 速度越快，但功耗越大。
- 若传感器模块内部已集成上拉电阻，外部可省略（查看模块规格书）。
- 检查I2C地址冲突，多个同型号器件共总线需确认是否支持地址配置。

**CAN/RS485**：
- 总线上最远端需接终端电阻（120Ω）。
- CAN收发器与MCU之间建议加光耦隔离（工业环境）。

## 无线通信详细对比

| 协议 | 频段 | 速率 | 距离 | 功耗 | 网络能力 | 典型芯片/模块 | 适用场景 |
|------|------|------|------|------|---------|------------|---------|
| BLE 5.0 | 2.4GHz | ~2Mbps | 10m | 极低 | 点对点/星型 | ESP32/CH582/HC系列 | 手机遥控、传感器 |
| WiFi | 2.4G/5GHz | 50Mbps+ | 30m+ | 高 | 互联网接入 | ESP32-C3/S3 | 智能家居、云平台 |
| 2.4G私有 | 2.4GHz | ~2Mbps | 100m+ | 中 | 点对点/星型 | LS12/NF24L01 | 遥控竞速、数传 |
| NB-IoT | 授权频段 | <100kbps | 数公里 | 极低 | 运营商网络 | BC20/EC600 | 户外定位、远程监测 |
| LoRa | 433/868/915MHz | <50kbps | 2~15km | 极低 | 自组网 | SX1278 | 远距离低功耗传感 |
| ZigBee | 2.4GHz | 250kbps | 100m | 低 | Mesh自组网 | CC2530 | 智能家居网络 |

### 无线通信设计要点

**BLE蓝牙**：
- 适合短距离（10m）、低功耗、手机直连场景。
- 高压隔离场景优先用BLE：避免USB等有线连接带来的电气安全风险。
- 常见芯片：ESP32系列（BLE+WiFi双模）、CH582（纯BLE、低成本）。

**WiFi**：
- 高速率、可联网、支持云平台接入。
- ESP32开发流程：ESP-IDF + VS Code，MQTT协议连接云平台（如巴法云）。
- 注意WiFi功耗较高，不适合电池长期供电的传感器节点。

**2.4G私有协议**：
- 比蓝牙延迟更低、更稳定，适合遥控竞速类项目（不能接受蓝牙的几十ms延迟）。
- 常用模块：LS12 2.4G模块。

**NB-IoT/LoRa**：
- 远距离低功耗物联网场景。
- NB-IoT需要SIM卡，依赖运营商网络覆盖。
- LoRa适合自建网络、无运营商覆盖的偏远地区。

## 安全性设计

- 高压测量设备：采用无线通信替代USB有线连接，实现电气隔离，防止高压串入电脑。
- 工业环境：CAN/RS485加光耦隔离。
- 电池供电+无线通信：实现完全浮地，安全可靠。

## 通信模块供电

- 大多数无线模块为3.3V供电，需LDO或DCDC提供稳定3.3V。
- WiFi模块发射时电流尖峰较大（可达500mA+），LDO选型时需留足余量。
- 电池供电场景：通信模块电源应接在可控MOS管之后，待机时可完全断电。
