51单片机---UART 串口通信

一、通信分类:按收发能力划分(单工 / 半双工 / 全双工)

单工通信(UART 单向收发场景)
  • 收发角色固定,一方只能发、一方只能收,无法互换
  • 仅 1 根信号线,数据传输方向永久单一,不可反向传输
半双工通信(代表:I2C)
  • 通信两端收发角色可切换,既能发送也能接收
  • 仅 1 根信号线承载数据
  • 同一时刻只能单向传输,收发不能同时进行
全双工通信(标准 UART)
  • 两端可同时收发,发送、接收角色互不冲突
  • 采用两根独立信号线:RXD 接收线、TXD 发送线
  • 数据双向并行传输,收发操作可同步执行

二、通信分类:按数据传输方式(串行 / 并行)

串行传输
  • 单根信号线,bit 位按顺序逐位依次传输,UART 属于串行通信
核心特点
  • 传输速率偏低
  • 硬件电路简单、成本低廉
  • 抗干扰能力强,传输距离远(如 RS485 最远 1200 米)
  • 串口传输遵循LSB 低位先行规则:先发数据最低位,后发最高位
并行传输
  • 多根信号线同步传输多个 bit,一次性并行发送多位数据
核心特点
  • 传输速度快
  • 布线多、硬件复杂、成本高
  • 信号易互相干扰,传输距离受限(仅 30 米以内)

三、同步通信 vs 异步通信

同步通信
  • 配套独立时钟信号线同步收发频率,典型:I2C(SCL 时钟线 + SDA 数据线)
  • 收发双方依靠统一时钟信号对齐每一位数据
异步通信(UART 核心特性)
  • 无专用同步时钟线

  • 依靠波特率约定收发双方传输速率,保证时序对齐

四、串口通信完整时序帧结构(一帧数据组成)

标准 UART 一帧按顺序分为 4 段:

逐 bit 发送:

  • 起始位:1bit 低电平,标志一帧数据传输开始
  • 数据位:通常 8bit,遵循 LSB 低位优先发送
  • 校验位:1bit,可选奇偶校验,用于简单检错
  • 停止位:1bit 高电平,代表单帧数据传输结束

五、波特率基础概念

  • 单位:bps,含义为每秒传输的 bit 总数量
  • 常用标准波特率:2400、4800、9600、115200
  • 举例:2400bps = 每秒传输 2400 个二进制 bit
  • 51 单片机配套晶振:11.0592MHz(适配串口标准波特率),12MHz 多用于定时器计数
  • 波特率生成:定时器 1 配置为 8 位自动重装载模式,作为波特率发生器

六、串口通信四大核心配置参数

格式标准:
波特率 数据位 校验位 停止位

示例:GPS 默认参数 9600 8 N 1

  • 9600:波特率
  • 8:每帧 8 位数据位
  • N:None,无校验;O=Odd 奇校验,E=Even 偶校验
  • 1:1 位停止位

七、数据校验方式(串口差错检测)

奇偶校验
  • 仅能检测奇数个 bit 传输错误,无法识别偶数位同时出错
奇校验
  • 定义:所有数据位中 "1" 的总个数 + 校验位 = 奇数;校验位为 1 时满足校验通过
  • 例:数据 0110 0000,其中 1 有 3 个(奇数),校验位填 1 校验通过;若数据 1 数量为偶数,填 1 则校验失败
偶校验
  • 定义:所有数据位中 "1" 的总个数 + 校验位 = 偶数;校验位为 0 时校验通过
  • 例:数据 0110 0000 有 3 个 1,校验位填 0,总 1 数量为偶数,校验通过
CRC 校验
  • 采用固定校验多项式计算,检错能力远强于奇偶校验,工业 Modbus 协议标配
累加和校验
  • 简单求和校验,多用于简易自定义串口协议

八、常见串口电平标准与转换芯片

TTL 电平(单片机原生串口电平)
  • 逻辑 1(高电平):3.3V / 5V
  • 逻辑 0(低电平):0V
RS232 电平(负逻辑)
  • 逻辑 1:-3V ~ -15V
  • 逻辑 0:+3V ~ +15V
  • 转换芯片:MAX232
RS485 差分电平
  • 逻辑 1:2V ~ 6V
  • 逻辑 0:-6V ~ -2V
USB 转 TTL 芯片:CH340
  • 功能:完成 USB 电平与单片机 TTL 串口电平互相转换,电脑通过 USB 与单片机串口通信

九、51 单片机串口基础程序逻辑

  1. 发送程序:采用轮询方式,循环发送单字节数据;
  2. 接收程序:采用外部中断方式,实时捕获上位机下发数据;
  3. 交互示例:串口助手下发指令,单片机执行并回复文本 指令ledon → 单片机点亮 LED,返回:led alreay!\n 指令 ledoff → 单片机熄灭 LED,返回:led alloff!\n

十、主从式串口通信 & Modbus 自定义协议

主从通信规则
  • 主机:通信发起方,拥有完全控制权,串口助手常作为主机
  • 从机:不能主动发数据,仅接收主机指令、执行动作并应答(51 单片机作为从机)
自定义 Modbus 帧格式(完整 7 字节)
  • 格式:起始码 地址码 功能码 数据位1 数据位2 校验码 结束码

例下发指令:0xAA 0x01 0x01 0x00 0x42 0xEE 0xBB

  • 起始码 0xAA、结束码 0xBB:标记一帧首尾,用于帧识别
  • 地址码:区分多台并联从机
  • 功能码:定义设备控制动作
  • 数据位:携带控制参数(如蜂鸣器频率:1=200HZ、2=400HZ、3=600HZ、4=800HZ)
  • 校验码:CRC 校验,校验整条指令数据正确性
主机 / 从机数据流向标识(功能码最高位)
  • 功能码最高位 = 0:主机下发指令至从机
  • 功能码最高位 = 1:从机向上回复应答数据; 从机收到指令后,修改功能码最高位、重新计算校验码,组装应答帧回传给主机
相关推荐
Yunhoa8 小时前
51单片机(DS18B20 数字温度传感器)
单片机·嵌入式硬件·51单片机
执迷不悟8231 天前
51单片机--中断/定时/PWM
单片机·嵌入式硬件·51单片机
薄情书生2 天前
基于51单片机的电子钟设计(LCD12864显示 + DS1302)
c语言·51单片机·protues
执迷不悟8232 天前
51单片机--通信/串口
单片机·嵌入式硬件·51单片机
碎光拾影2 天前
CPU与MCU核心区别揭秘
单片机·学习·51单片机
Yunhoa2 天前
51单片机(2)
单片机·嵌入式硬件·51单片机
wuyk5553 天前
38.什么是C语言?从语法到工程落地的工程师视角解读
c语言·开发语言·stm32·单片机·mcu·51单片机
piaoyiren3 天前
单片机串口控制单路共阳极数码管
单片机·嵌入式硬件·51单片机
piaoyiren3 天前
串口指令控制8路LED音乐流水灯程序
51单片机·嵌入式·普中