STM32通信协议全解析:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet

本文基于STM32嵌入式开发实践,系统梳理常用通信协议的技术要点。

在单片机开发中,UART、I2C、RS485等通信协议应用广泛,但许多开发者对其特性区分存在模糊认识。本文将对这些通信协议进行全面整理和对比,帮助读者建立清晰的概念体系。

UART:通用异步收发器

硬件接口与特性

  • UART是一种物理接口形式,采用异步、全双工串口总线
  • 包含两根信号线:TXD(发送)和RXD(接收)
  • 无需时钟信号同步,依赖发送和接收设备间预定义的配置参数

帧结构配置

  • 起始位:标志数据传输开始,电平逻辑为"0"
  • 数据位:可选5、6、7、8、9位,通常采用8位(对应ASCII字符)
  • 奇偶校验位:用于数据校验,可选偶校验或奇校验
  • 停止位:表示帧结束,电平逻辑为"1"

应用提示

使用通用IO口模拟UART总线时,需要配置一个输入口和一个输出口。STM32开发中常见应用实例如按键触发串口数据发送。

I2C:双向两线式串行总线

总线构成

  • 同步、半双工双向两线制总线
  • 包含串行时钟线SCL和串行数据线SDA

设备角色

  • 主设备:控制通信,初始化数据传输,产生同步时钟脉冲
  • 从设备:等待主设备命令并响应
  • 时钟信号始终由主设备产生

实现要点

使用通用IO口模拟I2C总线时,SDA需配置为双向输入输出口,SCL为输出口。

SPI:串行外设接口

系统架构

  • 同步、全双工双向4线式串行总线
  • 采用"单个主设备+多个从设备"架构
  • 支持多主设备系统(任意时刻仅一个主设备处于激活状态)

信号线定义

  • MOSI:主设备输出,从设备输入
  • MISO:主设备输入,从设备输出
  • SCLK:串行时钟信号
  • SS:从设备选择(低电平有效)

时序模式

由CPOL(时钟极性)和CPHA(时钟相位)共同决定:

  • CPOL=0:时钟初始状态为低电平
  • CPOL=1:时钟初始状态为高电平
  • CPHA=0:在首个时钟变化沿采样数据
  • CPHA=1:在第二个时钟变化沿采样数据

三大串行协议对比

特性 UART I2C SPI
通信方式 异步 同步 同步
双工能力 全双工 半双工 全双工
信号线数量 2线 2线 4线
从设备选择 无专用线 地址选择 片选信号
数据位 5-9位可调 固定8位 通常8位
传输顺序 从低位开始 从高位开始 从高位开始

技术特点分析

  • I2C协议相对复杂,需要双向IO支持,使用上拉电阻,抗干扰能力较弱,适合板内芯片通信
  • SPI实现简单,不受固定波特率限制
  • I2C速度低于SPI,协议更复杂但连线少

串口通信标准系列

RS232串口

  • 电气特性 :负逻辑电平(-3V-15V为"1",+3V+15V为"0")
  • 传输距离:约15米
  • 通信能力:全双工通讯,速率20kbps
  • 连接器:DB9接口,常用信号线为RXD、TXD、GND

TTL与RS232转换

单片机TTL电平需通过MAX232等芯片转换才能与RS232设备通信。

RS422串口

  • 4信号线+地线(两根发送、两根接收)
  • 全双工通信
  • 主从架构,从设备间不能直接通信

RS485串口

  • 两线半双工传输
  • 差分传输,抑制共模干扰
  • 电气特性 :+2V+6V为"1",-2V-6V为"0"
  • 传输性能:最大速率10Mb/s,距离可达千米
  • 典型芯片:MAX485,通过RE(接收使能)和DE(发送使能)引脚控制

概念区分要点

  • 串口/COM口:物理接口形式(硬件)
  • TTL/RS-232/RS-485:电平标准(电信号)
  • 嵌入式串口通常指UART口(TTL电平)
  • PC的COM口指RS232电平的串行端口

CAN总线

网络特性

  • 控制器局域网络,支持分布式实时控制
  • 挂载在CAN_H和CAN_L两条信号线上,采用串行差分传输
  • 终端需连接120Ω匹配电阻

性能参数

  • 通信距离:最远10千米(速率<5Kbps时)
  • 通信速率:最高1Mbps(距离<40米时)

仲裁机制

采用"线与"规则:

  • 显性电平"0":覆盖隐性电平"1"
  • 高电位为"0",低电位为"1"

USB通信

基础特性

  • 最少4线制,其中2根数据线完成所有数据传输
  • 差分传输,半双工通信
  • 编码方式:电压电平不变代表逻辑"1",变化代表逻辑"0"

电平转换

常用CH340G芯片实现USB转TTL功能,串口通信相比USB协议更简单。

SD卡通信

两种模式

  • SPI总线模式:单数据线,速度较慢
  • SD总线模式 :4数据线,速度比SPI快数倍

1-WIRE单总线

技术特点

  • 异步半双工串行传输
  • 单根信号线同时传输时钟和数据
  • 速率:通常16.3Kbit/s,最高142Kbit/s
  • 接口需加上拉电阻(5K~10KΩ)

典型应用

  • 打印墨盒、医疗消耗品识别
  • 电路板、配件及外设的识别认证

DMA:直接存储器访问

核心优势

  • 独立于CPU,在外设和内存间直接数据传输
  • 双向通信,高速访问
  • 大大提升CPU效率,是ARM架构的重要特性

类比理解

DMA相当于"数据传输的高速公路",具有专用、高速的特性。

Ethernet以太网

架构组成

  • 协议层:MAC控制器
  • 物理层 :PHY芯片和传输器

接口设计

  • 现代主板南桥常集成MAC功能,需外接PHY芯片
  • 网络变压器作用:
    • 耦合差分信号,增强抗干扰
    • 隔离不同设备电平差异
    • 隔离直流信号
相关推荐
来自嵌入式的zyz5 小时前
STM32项目实战/PID算法学习:编码电机闭环控制实现控速+位置控制、倒立摆实现
stm32·嵌入式硬件·学习·控制·pid
Lester_11016 小时前
嵌入式学习笔记- 单片机的低功耗以及唤醒
单片机·嵌入式硬件
奋斗的阿狸_19866 小时前
nuttx实战项目2:蓝牙有线通信板之一,nsh串口调试
stm32·单片机·嵌入式硬件
en.en..6 小时前
STM32 定时中断逻辑拆解:为什么 “每 2 次中断翻一次 LED”,却是 1 秒亮 1 秒灭?
单片机·嵌入式硬件
jianqiang.xue7 小时前
单片机图形化编程:课程目录介绍 总纲
c++·人工智能·python·单片机·物联网·青少年编程·arduino
Let's GO Tiger8 小时前
DAPLINK可以烧录,但无法调试仿真
单片机·嵌入式硬件
ooolmf8 小时前
xunjixiaochejiaogai
stm32·单片机·嵌入式硬件
充哥单片机设计9 小时前
【STM32项目开源】基于STM32的智能家庭安防系统
stm32·单片机·嵌入式硬件
日更嵌入式的打工仔9 小时前
ENET_INIT卡死在DMA_MODE判断
单片机·嵌入式硬件