🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:通信协议,本专栏为记录项目中用到的知识点,以及一些硬件常识总结 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖


特性 | I2C | SPI | CAN | 串口(UART) |
|---|---|---|---|---|
通信方式 | 半双工,串行 | 全双工,串行 | 半双工,串行 | 全双工,串行 |
线路数量 | 2线(SCL+SDA) | 3-4线(MOSI+MISO+SCLK+CS) | 2线(CAN_H+CAN_L) | 2-3线(TX+RX+GND) |
拓扑结构 | 多主多从,总线型 | 一主多从,星型 | 多主多从,总线型 | 点对点 |
最大设备数 | 理论127(7位地址-全0广播地址) | 通过CS引脚扩展 | 理论上110个节点 | 点对点,无限制 |
通信速度 | 100kbps-5Mbps | 可达50Mbps+ | 10kbps-1Mbps | 300bps-3Mbps+ |
通信距离 | 板级,<1米 | 板级,<0.5米 | 可达1000米 | 可达15米 |
错误检测 | CRC校验(部分) | 无 | CRC校验+应答 | 奇偶校验(可选) |
冲突处理 | 仲裁机制 | 无(主控) | 非破坏性仲裁 | 无 |
同步方式 | 同步(有时钟) | 同步(有时钟) | 异步(无时钟) | 异步(无时钟) |
典型应用 | 传感器、EEPROM | 存储器、显示屏 | 汽车、工业控制 | 调试、设备互联 |
硬件复杂度 | 低 | 中 | 高 | 低 |
成本 | 低 | 中 | 高 | 低 |

假设我们要设计一个智能家居控制器:
智能家居系统:
1. 读取5个温度传感器 → 选择I2C(设备多、速度要求低)
2. 驱动高分辨率OLED屏幕 → 选择SPI(高速、数据量大)
3. 与楼宇控制系统通信 → 选择CAN(距离远、抗干扰)
4. 连接调试电脑 → 选择UART(简单、通用)对比维度 | 胜出者 | 原因 |
|---|---|---|
速度 | SPI | 时钟直连,无地址开销 |
设备数量 | I2C/CAN | 总线结构,地址寻址 |
距离 | CAN | 差分信号,抗干扰强 |
简单性 | UART | 最少线路,无时钟 |
可靠性 | CAN | 完善的错误检测和处理 |
成本 | I2C/UART | 硬件简单,引脚少 |
每种协议都有其“甜蜜点”,正确选择的关键是理解项目需求:距离、速度、设备数量、可靠性和成本。在实际项目中,经常需要组合使用多种协议以达到最佳效果。