当前位置: 首页 > news >正文

I²C、SPI、UART、CAN 通信协议详解

一、协议基本特性对比

特性I²CSPIUARTCAN
通信类型同步、半双工同步、全双工异步、全双工异步、多主多从
信号线SDA(数据)、SCL(时钟)MOSI、MISO、SCK、SS(片选)TX(发送)、RX(接收)CAN_H、CAN_L(差分信号)
拓扑结构多主多从(总线式)主从式(需片选)点对点多主多从(总线式)
最大速率标准模式 100kbps,高速模式 3.4Mbps可达 100Mbps+通常 ≤ 115200bps(部分可达 1Mbps)1Mbps(短距离)或 125kbps(长距离)
错误检测奇偶校验(可选)CRC、ACK、错误帧自动重传
典型应用传感器、EEPROM存储器、显示屏调试接口、简单设备通信汽车电子、工业控制

二、实现方式与工作原理

1. I²C(Inter-Integrated Circuit) 

        实现方式:  

                主设备控制时钟线(SCL),通过 SDA 发送地址和数据。  

                7/10 位地址寻址,支持广播模式。  

                开漏输出,需外接上拉电阻(通常 4.7kΩ)。  

        时序特点:  

                起始条件(SDA 下降沿时 SCL 高电平)、停止条件(SDA 上升沿时 SCL 高电平)。  

                每个字节后需接收方发送 ACK/NACK。  

2. SPI(Serial Peripheral Interface) 

        实现方式:  

                主设备通过 SCK 提供时钟,MOSI 发送数据,MISO 接收从设备数据。  

                每个从设备需独立 SS 线,片选信号低电平有效。  

        时序特点:  

                时钟极性(CPOL)和相位(CPHA)需主从一致。  

                全双工传输,数据在时钟边沿采样。  

3. UART(Universal Asynchronous Receiver/Transmitter) 

        实现方式:  

                无时钟线,依赖双方约定波特率(如 9600、115200)。  

                数据帧包括起始位(低电平)、数据位(5-9 位)、校验位(可选)、停止位(高电平)。  

        扩展协议:  

                RS232(电平转换,±3~15V)、RS485(差分信号,支持多点通信)。  

4. CAN(Controller Area Network) 

        实现方式:  

                差分信号(CAN_H 和 CAN_L),总线两端需 120Ω 终端电阻。  

                基于消息优先级(ID 仲裁)的非破坏性冲突解决机制。  

        帧结构:  

                数据帧(ID、数据长度、数据域)、远程帧、错误帧、过载帧。  

三、优缺点对比

协议优点缺点
I²C引脚少、支持多设备、成本低速度低、总线电容限制距离(通常 < 1m)
SPI高速、全双工、无地址冲突引脚多(每个从设备需 SS 线)、不支持多主
UART简单、点对点、广泛支持速率低、无多设备支持、易受干扰
CAN高可靠性、抗干扰、支持多主硬件复杂、成本高、速率受限

四、电路设计注意事项

1. I²C 设计要点

        上拉电阻:根据总线速度和电容选择阻值(4.7kΩ~10kΩ),确保上升时间满足要求。  

        地址冲突:避免从设备地址重复,必要时使用地址扩展芯片(如 PCA9548)。  

        总线电容:总线上设备过多时,需降低速率或分段设计。  

2. SPI 设计要点 

        信号完整性:  

                短距离布线,避免时钟偏移(SCK 与数据线长度匹配)。  

                高速场景使用阻抗控制走线(如 50Ω 单端)。  

                片选管理:多从设备时,使用 GPIO 扩展芯片或译码器减少引脚占用。  

3. UART 设计要点 

        电平转换:  

                TTL 电平(3.3V/5V)需通过 MAX3232 等芯片转换为 RS232 电平。  

                长距离通信使用 RS485(差分信号,需 SN65HVD72 收发器)。  

        抗干扰:  

                添加 TVS 二极管(如 SMAJ5.0A)防护 ESD。  

                使用屏蔽双绞线(RS485)减少共模干扰。  

4. CAN 设计要点  

        终端电阻:总线两端必须接 120Ω 电阻,消除信号反射。  

        布线规范:  

                双绞线布线(CAN_H 和 CAN_L 绞合),长度差 < 1cm。  

                避免分支(“T”型连接),采用菊花链拓扑。  

        共模滤波:添加共模扼流圈(如 WE-CMB)抑制高频噪声。  

五、应用场景推荐

        I²C:传感器网络(如温度传感器、加速度计)、低复杂度多设备控制。  

        SPI:高速数据传输(如 Flash 存储器、TFT 显示屏)、ADC/DAC 接口。  

        UART:设备调试日志输出、GPS 模块通信、简单主从控制。  

        CAN:汽车电子(ECU 通信)、工业自动化(PLC 网络)、机器人控制。  

六、总结

        I²C:低成本、多设备场景的首选,但需注意总线负载和速度限制。  

        SPI:追求高速和全双工时的最佳选择,但引脚资源消耗较大。  

        UART:简单点对点通信的理想方案,适合调试和短距离传输。  

        CAN:高可靠性和抗干扰需求的工业、汽车领域标配,但需复杂硬件支持。  

相关文章:

  • docker配置redis容器时配置文件docker-compose.yml示例
  • deepseek对openGauss 6.0启动日志的分析与处理
  • TCP/IP五层协议
  • 销售心理学工具包:100个可复用的话术模板与案例库-第一部分:销售心理学核心理论与工具-1.2情感共鸣构建:镜像神经元理论与情绪同步话术设计
  • 【教程】MacBook 使用 iTerm2 连接跳板机和开发机
  • 增益调度控制 —— 理论、案例与交互式 GUI 实现
  • LeetCode Hot100 刷题笔记(3)—— 链表
  • Python作业2 蒙特卡罗方法手搓图形
  • 使用 VIM 编辑器对文件进行编辑
  • 路由器学习
  • 【C++奇遇记】C++中的进阶知识(多态(一))
  • 使用MySQL时出现 Ignoring query to other database 错误
  • NO.65十六届蓝桥杯备战|基础算法-贪心推公式排序|哈夫曼编码|拼数|奶牛玩杂技|哈夫曼编码|合并果子(C++)
  • 接口自动化学习二:session自动管理cookie
  • 网络协议:TCP,UDP详细介绍
  • Windows Flip PDF Plus Corporate PDF翻页工具
  • MySQL数据库精研之旅第五期:CRUD的趣味探索(中)
  • py文件打包为exe可执行文件,涉及mysql连接失败以及找不到json文件
  • 使用PyQt5绘制水波浪形的柱状显示流量—学习QTimer+QPainterPath
  • Logo语言的区块链
  • 重庆网站建设公司电话/什么叫seo
  • html网页制作企业类网站/梧州网站seo
  • weirdcore制作网站/自己怎么建网站
  • 网站运营与管理的对策/软文写作是什么
  • 信息门户网站制作费用/新东方烹饪培训学校
  • 上海手机网站建设哪家好/自助建站系统开发