一、通信分类:按收发能力划分(单工 / 半双工 / 全双工)
单工通信(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 单片机串口基础程序逻辑
- 发送程序:采用轮询方式,循环发送单字节数据;
- 接收程序:采用外部中断方式,实时捕获上位机下发数据;
- 交互示例:串口助手下发指令,单片机执行并回复文本 指令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:从机向上回复应答数据; 从机收到指令后,修改功能码最高位、重新计算校验码,组装应答帧回传给主机