UART / I2C / SPI / CAN 详细说明 + 对比
原理图
1、UART(TTL 3.3V,调试串口)
MPU_TX ──────────── 从机_RX MPU_RX ──────────── 从机_TX GND ──────────── GND要点:
- 最简单,交叉相连,TX 接对方 RX
- 3.3V 单端电平;空闲电平高
- 可选:串 1k 电阻限流、TVS 管 ESD 防护
- 长线工业方案:UART → MAX3485 → RS485 差分总线
注意:原生 TTL 不能多节点;要多节点必须 RS485
2、I2C(开漏总线,重点:必须外部上拉)
VCC3V3 │ ├─ Rpu(4.7k) ─── SDA ←── MPU_SDA、所有从机SDA └─ Rpu(4.7k) ─── SCL ←── MPU_SCL、所有从机SCL要点:
- SDA、SCL 开漏输出,芯片只能拉低,不能主动拉高,所以上拉电阻必不可少
- 标准阻值:4.7kΩ;高速模式(1M)可用 2.2kΩ
- 一条总线可以挂多个 I2C 从机(RTC、OLED、传感器)
- 严禁长线走线;总线电容越大,速率越低
3、SPI(单主多从,共享 SCLK/MOSI/MISO,独立 CS)
MPU_SCLK ────┬──── Slave1_SCLK MPU_MOSI ────┼──── Slave1_MOSI MPU_MISO ────┼──── Slave1_MISO MPU_CS0 ────┘──── Slave1_CS(低有效) MPU_SCLK ────┬──── Slave2_SCLK MPU_MOSI ────┼──── Slave2_MOSI MPU_MISO ────┼──── Slave2_MISO MPU_CS1 ────┘──── Slave2_CS要点:
- SCLK/MOSI/MISO 全部并联共享;每个从机单独一根 CS
- 推挽输出,不需要上拉电阻
- 4 种模式,Mode0(CPOL=0 CPHA=0)最常用(W25Q Flash 默认)
- 高速 SPI PCB 要求阻抗 50Ω,对内等长
4、CAN(MPU CAN 控制器 + TJA1050 收发器,差分总线)
MPU_CAN_TX ──── TJA1050 1脚 TXD MPU_CAN_RX ──── TJA1050 4脚 RXD TJA1050 3脚 VCC → 5V TJA1050 2脚 GND → GND TJA1050 7 CANH ────总线CANH TJA1050 6 CANL ────总线CANL 【总线两端】CANH、CANL之间跨 120Ω终端电阻TJA1050 引脚: 1 TXD,2 GND,3 VCC,4 RXD,5 Vref,6 CANL,7 CANH,8 STB(待机,一般拉低使能) 要点:
- MPU 内部 CAN 控制器输出是 3.3V 逻辑,不能直接出 CANH/CANL 差分信号,必须收发器
- 120Ω 终端电阻:总线首尾两个节点各放一个,中间节点不要加
- 差分双绞线,抗干扰极强;CAN FD 同样这套硬件,只改控制器配置
极简原理图速记清单(打印)
- UART:TX↔RX、共地;无总线
- I2C:SDA+SCL,各 4.7k 上拉到 VCC;开漏
- SPI:SCLK/MOSI/MISO 共享,独立 CS;推挽高速
- CAN:MPU CAN_TX/RX → TJA1050 → CANH/CANL;总线两端 120Ω
---------------------------------------------------------------------------------------------------------------------------------
UART / I2C / SPI / CAN 详细说明 + 对比
汇总对比表(打印版)
表格
| 项目 | UART | I2C | SPI | CAN |
|---|---|---|---|---|
| 同步 / 异步 | 异步 | 同步 | 同步 | 同步 |
| 信号线 | TX/RX/GND | SDA、SCL | SCLK,MOSI,MISO,SS | CAN_H,CAN_L |
| 拓扑 | 点对点 | 总线多主多从 | 单主多从 | 总线多主 |
| 双工 | 全双工 | 半双工 | 全双工 | 半双工 |
| 寻址方式 | 无 | 7bit 地址 | 片选 CS | ID 仲裁 |
| 典型速率 | 9600~1.5M | 100k~3.4M | 1M~100M+ | 125k~1M (CAN FD 最高 8M 数据段) |
| 抗干扰 | 弱(单端) | 弱(开漏) | 中等(单端) | 极强(差分) |
| 内置校验 | 可选奇偶校验 | ACK | 无 | CRC + 硬件错误管理 |
| 走线距离 | 短(TTL) | 很短 | 板内极短 | 很长(双绞线) |
| IO 开销 | 低 | 最低 | 高 | 低(总线) |
| 适合场景 | 调试、模块 AT | 低速传感器 | 高速 Flash/ADC | 工控、车载实时总线 |
快速选型口诀
- 调试打印、GPS 蓝牙 → UART
- 一堆低速传感器、省 IO → I2C
- 高速 Flash、ADC、低延迟传输 → SPI
- 强干扰、长线、多节点实时控制 → CAN/CAN FD