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

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

九、主机与从机的概念

角色 核心权限 通信逻辑
主机 拥有通信绝对控制权 主动发起通信,下发指令
从机 无主动通信权 接收主机指令,执行操作并回复应答
相关推荐
代码游侠几秒前
学习笔记——Linux内核与嵌入式开发1
linux·运维·前端·arm开发·单片机·嵌入式硬件·学习
宇钶宇夕7 分钟前
CoDeSys入门实战一起学习(二十八):(LD)三台电机顺起逆停程序详解—上升、下降沿使用上
单片机·嵌入式硬件·学习
科技林总9 分钟前
【系统分析师】6.5 电子商务
学习
代码游侠12 分钟前
C语言核心概念复习(一)
c语言·开发语言·c++·笔记·学习
qq_4017004115 分钟前
STM32晶振频率怎么选
stm32·单片机·嵌入式硬件
tb_first20 分钟前
万字超详细苍穹外卖学习笔记1
java·jvm·spring boot·笔记·学习·tomcat·mybatis
今儿敲了吗33 分钟前
10| 扫雷
c++·笔记·学习
崇山峻岭之间1 小时前
Matlab学习记录41
学习
觉醒大王1 小时前
科研新手如何读文献?从“乱读”到“会读”
论文阅读·笔记·深度学习·学习·自然语言处理·学习方法
代码游侠1 小时前
学习笔记——Linux内核与嵌入式开发3
开发语言·arm开发·c++·学习