嵌入式第四十六篇——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 位自动重装模式)

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

九、主机与从机的概念

角色 核心权限 通信逻辑
主机 拥有通信绝对控制权 主动发起通信,下发指令
从机 无主动通信权 接收主机指令,执行操作并回复应答
相关推荐
dear_bi_MyOnly41 分钟前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
一只小菜鸡..2 小时前
南京大学 操作系统 (JYY) 学习笔记:从 UNIX 到 Linux 与庞大的应用生态
笔记·学习·unix
MartinYeung53 小时前
[论文学习]迈向自主医疗人工智能智能体:MIRA系统深度分析
人工智能·学习
熊猫钓鱼>_>4 小时前
ArkTS 装饰器总览:V1 / V2 / 通用装饰器完整学习笔记
笔记·学习·华为·交互·harmonyos·arkts·arkweb
KOAN凯擎小妹7 小时前
无源晶振为什么有串联谐振和并联谐振?MCU为什么使用并联晶体?
单片机·嵌入式硬件·晶振·元器件
茯苓gao8 小时前
嵌入式开发笔记:CAN与CAN FD完全指南——从帧格式差异到MCU选型实战
网络·笔记·stm32·嵌入式硬件·学习·汽车
木木_王8 小时前
嵌入式学习 | STM32 裸板驱动开发(Day06) | DHT11温湿度传感器超详解(单总线时序+全套驱动代码+智能温湿度报警项目)
驱动开发·stm32·学习
FellAveal8 小时前
【Go语言入门学习笔记】Part19.速率控制、原子计数器、互斥锁(Mutex)、状态协程
笔记·学习·golang
你怎么知道我是队长9 小时前
经典蓝牙(Bluetooth Classic / BR/EDR)学习计划
学习
论迹复利9 小时前
蓝牙 OTA 升级断连、升级失败底层链路问题定位
嵌入式硬件·安全·bt