嵌入式第四十六篇——51单片机基础——UART通信

一、UART 基本概念

UART(Universal Async Receiver Transmitter),即通用异步收发器 ,是一种硬件接口及通信协议,用于设备间的异步串行通信。核心特性:

  • 通信模式:异步、全双工、串行
  • 无需时钟线同步,通过约定参数保证数据传输一致性

二、UART 接线方式

UART 核心接线引脚共 4 个,通信时需遵循交叉连接原则:

引脚 功能 接线注意事项
VCC 接电源正极 需与外设电源电压匹配
GND 接地 必须共地,否则会出现信号干扰
RXD 数据接收线 与外设的 TXD 引脚相连
TXD 数据发送线 与外设的 RXD 引脚相连

关键规则:设备 A 的 TXD ↔ 设备 B 的 RXD;设备 A 的 RXD ↔ 设备 B 的 TXD。

三、通信方式分类(按数据传输方向)

通信方式 核心特点 数据线数量 传输方向限制
单工 收发角色固定 1 根 仅单向传输
半双工 收发角色可切换 1 根 同一时刻仅能单向传输
全双工 收发角色可同时进行 2 根 任意时刻双向传输(UART 采用此方式)

四、数据传输形式:串行 vs 并行

传输形式 传输原理 优缺点
串行 单根数据线,数据按 bit 位顺序逐个发送 优点:硬件成本低、传输距离远、抗干扰性好缺点:传输速率慢
并行 多根数据线,多个 bit 位同时发送 优点:传输速率快缺点:硬件成本高、传输距离近、抗干扰性差(易受信号偏移和电磁干扰)

五、UART 数据发送顺序

遵循 LSB(最低位)优先 原则,低位先行发送。示例:发送数据 0xA6(二进制 10100110

位序号 bit7(MSB) bit6 bit5 bit4 bit3 bit2 bit1 bit0(LSB)
数据值 1 0 1 0 0 1 1 0
发送顺序 8 7 6 5 4 3 2 1

六、串口通信核心参数(4 大参数)

通信双方必须参数一致,否则会出现数据乱码,格式表示为 波特率 数据位 校验位 停止位

  1. 波特率
    • 定义:每秒传输的 bit 数,衡量传输速率
    • 常用值:2400、4800、9600、115200
  2. 数据位
    • 定义:每个数据帧中有效数据的 bit 位数
    • 常用值:8 位(最常用)
  3. 校验位
    • 作用:用于检测数据传输错误(无法检测偶数个 bit 错误)
    • 类型:
      • N(None):无校验
      • E(Even):偶校验,数据位 + 校验位的 1 的总数为偶数
      • O(Odd):奇校验,数据位 + 校验位的 1 的总数为奇数
  4. 停止位
    • 定义:每个数据帧的结束标志位
    • 常用值:1 位

常见参数组合:9600 8 N 1、2400 8 E 1、115200 8 O 1

七、同步通信 vs 异步通信

通信类型 同步方式 硬件需求 核心特点
同步 时钟线同步通信频率 需时钟线 传输精度高,硬件复杂
异步 无时钟线,靠约定参数同步 无需时钟线 硬件简单,UART 采用此方式

八、UART 相关寄存器配置(以 51 单片机为例)

1. SCON 寄存器(串口控制寄存器)

配置操作 功能说明
清 0 bit6、bit7 初始化串口模式相关位
置 1 bit6 串口工作在 8 位 UART 模式,波特率可变
置 1 REN 位 允许串口接收数据
TI 位 发送中断标志位:数据发送完毕自动置 1,需软件清 0
RI 位 接收中断标志位:数据接收完毕自动置 1,需软件清 0

2. PCON 寄存器(电源控制寄存器)

配置操作 功能说明
置 1 SMOD 位 波特率翻倍
清 0 SMOD0 位 由 SCON 的 SM0、SM1 位指定串口工作模式

3. 波特率计算(定时器 1 8 位自动重装模式)

  • 需根据目标波特率计算定时器初值
  • 主机与从机的波特率必须一致

九、主机与从机的概念

角色 核心权限 通信逻辑
主机 拥有通信绝对控制权 主动发起通信,下发指令
从机 无主动通信权 接收主机指令,执行操作并回复应答
相关推荐
驱动探索者15 分钟前
linux mailbox 学习
linux·学习·算法
进阶小白猿21 分钟前
Java技术八股学习Day33
java·开发语言·学习
收菜福星22 分钟前
当AI Agent成为大学标配:2026年学习模式的深层变革
人工智能·学习
蒟蒻的贤33 分钟前
yolo12结构学习
学习
●VON1 小时前
CANN推理引擎:从云端到边缘的极致加速与部署实战
学习·react native
笔画人生2 小时前
深度解析 CANN 项目:以 `ops-transformer` 为例探索高性能 AI 算子库
学习·开源
AI视觉网奇2 小时前
3d数字人 ue blender 绑定衣服对齐 2026
学习·ue5
Nan_Shu_6142 小时前
学习: Blender 基础篇
学习·blender
奶茶精Gaaa3 小时前
工具分享--json在线转换工具
学习
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][I2C]I2C
linux·笔记·学习