53、UART 串口通信

UART 串口通信(51单片机+Modbus协议)

一、UART 核心概念与特性

UART(Universal Asynchronous Receiver Transmitter)
通用异步收发器,是MCU与外部设备异步通信的硬件接口模块,核心特性如下:

  • 异步通信:无时钟线,依赖波特率同步;
  • 全双工通信:通过TXD(发送)、RXD(接收)两根独立数据线,实现双向同时传输;
  • 串行通信:数据按二进制位逐位传输,硬件成本低、抗干扰强;
  • 协议化通信:有固定数据帧格式和通信规则,需双方统一参数才能正常交互。

二、UART 接线规范与硬件基础

1. 核心引脚定义

引脚功能说明注意事项
VCC电源正极(通常5V/3.3V)需与通信设备电源匹配
GND接地必须共地,否则信号干扰导致通信失败
TXD数据发送端输出电平信号
RXD数据接收端输入电平信号

2. 关键接线原则

  • TXD与RXD交叉连接:A设备的TXD → B设备的RXD,A设备的RXD → B设备的TXD;
  • 示例:51单片机(TXD=P3.1、RXD=P3.0)与电脑USB转串口模块连接时,需将P3.1接模块RXD,P3.0接模块TXD;
  • 禁用同端直连(如A的TXD接B的TXD),否则无法传输数据。

三、通信方式分类(单工/半双工/全双工)

通信方式数据线数量传输特点典型应用
单工1根单向传输,收发方固定收音机、红外遥控
半双工1根双向传输,但同一时刻仅单向对讲机、I2C通信
全双工(UART)2根双向同时传输,收发独立51单片机与电脑通信、Modbus主从机交互

四、UART 数据传输核心规则

1. 数据发送顺序

UART遵循LSB(最低位)优先原则,以8位数据0xA6(二进制10100110)为例:

  • 位序号:bit7(1)、bit6(0)、bit5(1)、bit4(0)、bit3(0)、bit2(1)、bit1(1)、bit0(0);
  • 发送顺序:bit0 → bit1 → bit2 → bit3 → bit4 → bit5 → bit6 → bit7(先传低位,后传高位)。

2. 数据传输形式对比(串行vs并行)

传输形式核心差异优势劣势
串行(UART)1根数据线,逐位传输硬件成本低、抗干扰强、传输距离远传输速率较慢
并行多根数据线,多位同时传输速率快成本高、抗干扰弱、仅支持短距离

五、UART 数据帧结构与时序

UART数据帧由4部分组成(无校验时),时序按以下顺序排列:

  1. 起始位:1位低电平(标志数据开始);
  2. 数据位:5-9位(常用8位),LSB优先传输;
  3. 校验位(可选):1位(奇校验/偶校验/无校验),用于简单错误检测;
  4. 停止位:1-2位高电平(标志数据结束,常用1位)。

示例时序:起始位(1bit)→ 数据位(8bit)→ 停止位(1bit),共10bit构成一个完整数据帧。


六、校验机制(奇校验/偶校验/无校验)

校验的核心作用是检测数据传输过程中的位错误,仅能检测,无法纠错:

1. 奇校验(Odd)

  • 校验位设为1,确保“数据位+校验位”中1的总数为奇数;
  • 示例:数据0xA6(10100110)含4个1,校验位补1,总1数为5(奇数),校验通过。

2. 偶校验(Even)

  • 校验位设为0,确保“数据位+校验位”中1的总数为偶数;
  • 示例:数据0xA6含4个1,校验位补0,总1数为4(偶数),校验通过。

3. 无校验(None)

  • 不设校验位,依赖通信环境稳定性;
  • 优点:传输效率高;缺点:无法检测错误,适用于短距离、低干扰场景。

注意:奇偶校验无法检测偶数个位同时出错的情况(如bit0和bit1同时翻转)。


七、串口通信核心参数(必须统一!)

通信双方需完全一致的4个参数,否则数据解析失败,格式示例:9600 8 N 1

参数含义常用配置
波特率每秒传输的二进制位数(bit/s)2400、4800、9600、115200(最常用9600)
数据位单次传输的有效数据位数8位(主流配置)
校验位错误检测位N(无校验)、E(偶校验)、O(奇校验)
停止位数据帧结束标志1位(主流配置)

八、同步与异步通信对比

通信类型核心特征典型应用
同步需时钟线(如SCLK),双方按时钟节奏同步SPI、I2C通信
异步(UART)无时钟线,通过波特率+起始位同步串口通信、Modbus协议

九、51单片机UART寄存器配置(关键!)

51单片机通过SCON、PCON、TMOD等寄存器配置串口工作模式、波特率和中断,以下是实战必备配置:

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

  • 地址:0x98H(可位寻址);
  • 核心位定义(仅列关键位):
位序号位名称功能说明配置值
B7SM0串口模式选择位0(配合SM1配置8位UART)
B6SM1串口模式选择位1(8位UART,波特率可变)
B4REN接收允许控制位1(允许接收数据)
B1TI发送完成标志位硬件置1,需软件清0
B0RI接收完成标志位硬件置1,需软件清0
  • 配置流程:
    SCON&=~(3<<6);// 清0SM0、SM1SCON|=(1<<6);// SM1=1,8位UART模式SCON|=(1<<4);// REN=1,允许接收

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

  • 地址:0x87H(不可位寻址);

  • 核心位:

    • SMOD(B7):波特率加倍位,SMOD=1时波特率翻倍,SMOD=0时不翻倍;
    • SMOD0(B6):帧错误检测控制位,SMOD0=0时由SM0/SM1指定串口模式;
  • 配置流程:

    PCON&=~(1<<6);// SMOD0=0,启用SM0/SM1模式配置PCON|=(1<<7);// SMOD=1,波特率翻倍

3. 波特率产生(依赖定时器1)

51单片机串口波特率由定时器1产生,常用定时器1 8位自动重装载模式,计算公式:
[ \text{定时器初值} = 2^8 - \frac{2^{\text{SMOD}} \times f_{osc}}{32 \times \text{波特率} \times 12} ]

  • 参数说明:

    • ( f_{osc} ):晶振频率(51单片机常用11.0592MHz);
    • SMOD:PCON寄存器中的波特率加倍位(0或1);
  • 实战计算示例(11.0592MHz晶振,9600波特率,SMOD=1):
    [ \text{初值} = 256 - \frac{2^1 \times 11059200}{32 \times 9600 \times 12} = 256 - 6 = 250 ]
    即TH1=0xFA,TL1=0xFA(8位自动重装载模式下,TH1=TL1=初值)。

4. 定时器1配置(产生波特率)

  • 模式选择:8位自动重装载模式(TMOD寄存器配置);
  • 配置流程:
    TMOD&=~(0x0F<<4);// 清0定时器1模式位TMOD|=(1<<5);// 定时器1=8位自动重装载模式TH1=0xFA;// 9600波特率初值TL1=0xFA;TCON|=(1<<6);// 启动定时器1

5. 中断配置(允许串口中断)

IE|=(1<<7);// EA=1,开总中断IE|=(1<<4);// ES=1,开串口中断

十、16位定时器与8位自动重装载定时器区别

定时器模式核心差异应用场景
16位定时器计数器范围0~65535,溢出后需手动重装初值精准定时(如1ms中断)
8位自动重装载计数器范围0~255,溢出后自动重装THx初值串口波特率产生(无需手动重装)

十一、主从通信模型(Modbus协议核心)

1. 主机(Master)

  • 拥有通信控制权,主动发起指令(如控制从机LED亮灭);
  • 示例:电脑、PLC、核心控制器。

2. 从机(Slave)

  • 被动响应,无法主动发起通信,仅根据主机指令执行操作并回传应答;
  • 示例:51单片机、传感器模块、执行器。

十二、Modbus协议实战(作业落地)

1. 作业要求

主机按Modbus协议发送指令,从机(51单片机)解析功能码,控制对应外设,并回传应答:

  • 功能码01:LED控制;
  • 功能码02:数码管控制;
  • 功能码03:蜂鸣器控制。

2. Modbus协议数据帧格式(简化版)

字段含义示例(控制LED亮)
从机地址目标从机编号(0~255)0x01(51单片机地址)
功能码操作类型0x01(LED控制)
数据段具体控制参数0x01(LED1亮)
校验和数据完整性校验0x03(前3字节累加和)

3. 从机处理流程(51单片机代码思路)

// 串口中断接收数据voiduart_isr(void)interrupt4{if(RI){// 接收完成recv_buf[recv_len++]=SBUF;// 存入接收缓冲区RI=0;// 软件清0接收标志位if(recv_len==4){// 接收完整帧(地址+功能码+数据+校验和)if(recv_buf[0]==0x01){// 匹配从机地址if(recv_buf[3]==(recv_buf[0]+recv_buf[1]+recv_buf[2])){// 校验和正确switch(recv_buf[1]){case0x01:led_control(recv_buf[2]);break;// LED控制case0x02:seg_control(recv_buf[2]);break;// 数码管控制case0x03:beep_control(recv_buf[2]);break;// 蜂鸣器控制}uart_send_ack();// 回传应答帧}}recv_len=0;// 清空缓冲区}}if(TI)TI=0;// 清0发送标志位}

十三、重点知识回顾与实战建议

核心重点

  1. UART接线:TXD与RXD必须交叉,共地是关键;
  2. 通信参数:波特率、数据位等4个参数需完全一致;
  3. 寄存器配置:SCON(8位UART+允许接收)、PCON(波特率翻倍)、定时器1(8位自动重装载);
  4. 数据顺序:LSB优先,校验位仅用于简单错误检测;
  5. Modbus协议:主从结构,功能码对应外设操作,需校验和确保数据完整。

实战建议

  1. 先调试基础串口通信:实现51单片机与电脑串口助手收发数据;
  2. 再实现Modbus协议解析:按作业要求处理功能码与应答;
  3. 调试工具:用逻辑分析仪抓取TXD/RXD波形,验证数据帧是否正确;
  4. 常见问题:通信失败先检查接线→参数→寄存器配置→校验和。

总结

UART串口通信是嵌入式开发的基础,核心在于“协议统一+硬件正确+寄存器配置准确”。掌握本文的理论知识和实战思路后,可轻松完成Modbus协议控制外设的作业,同时为后续工业通信、传感器数据传输等场景打下基础。建议多敲代码调试,通过实际波形和数据验证理解原理,避免死记硬背。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【毕业设计】基于深度学习的是否有污渍识别基于python-cnn深度学习的是否有污渍识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

信创超融合怎么选?透过IDC 2025报告看主流国产超融合解决方案

近日&#xff0c;IDC 发布《中国超融合市场跟踪报告&#xff0c;2025 年前三季度》&#xff0c;详解中国区超融合发展趋势、市场份额规模以及厂商占比。在报告中&#xff0c;IDC 从软件市场、全栈市场以及整体市场三个维度对国内的主流超融合厂商市场份额进行了梳理。超融合软件…

全阶滑模无位置传感器控制仿真模型,有基本的反正切的,有锁相环的,有基本的开关函数,有饱和函数...

全阶滑模无位置传感器控制仿真模型&#xff0c;有基本的反正切的&#xff0c;有锁相环的&#xff0c;有基本的开关函数&#xff0c;有饱和函数&#xff0c;sigmod函数&#xff0c;以及幂函数多种滑模。 还有全阶滑模观测器仿真&#xff0c;相比传统滑模观测器消除了额外的低通滤…

DevOps与SRE概念理解

DevOps与SRE概念理解 DevOps 和 SRE&#xff08;Site Reliability Engineering&#xff09;是现代软件工程中保障高效交付与系统稳定性的两大核心方法论&#xff0c;二者目标高度一致但侧重点不同&#xff0c;在生产环境中常常协同落地。 一、基础认知&#xff1a;什么是DevOps…

乐迪信息:AI视频分析技术如何定义和检测船舶逆行?

逆行不仅严重威胁着水上交通安全&#xff0c;还可能导致严重的交通事故。因此&#xff0c;如何有效遏制船舶逆行行为&#xff0c;成为当前水上交通管理领域有待解决的问题。一&#xff1a;船舶AI逆行检测系统的工作原理船舶AI逆行检测系统是一种基于人工智能技术的智能监控系统…

项目的逻辑和流程

项目的逻辑和流程 在互联网项目的推进过程中&#xff0c;清晰的逻辑框架和规范的执行流程是保障项目稳定落地的核心。无论是小型工具开发还是大型系统搭建&#xff0c;都离不开“从无到有、从测试到上线”的全流程管控。 一、项目核心逻辑阶段核心目标关键动作参与角色交付成果…

深度学习计算机毕设之基于卷神经网络的是否有污渍识别基于python-cnn深度学习的是否有污渍识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2025互联网年度盘点:从Cloudflare看AI如何重塑全球网络格局

Cloudflare作为全球最大的互联网基础设施公司之一&#xff0c;其网络遍布125个国家的330座城市&#xff0c;平均每秒处理超过8100万次HTTP请求——把它想象成互联网世界的十字路口并不为过&#xff0c;所有流经的数据都能被它看到。 正因为这种独特的上帝视角&#xff0c;Clou…

直接说工控现场的单容液位控制,S7-200搭配组态王这套组合挺经典的。今天咱们拆解个真实项目的配置过程,手把手把程序逻辑和画面组态揉碎了讲

S7-200 组态王 组态王单容液位控制 带解释的梯形图程序&#xff0c;接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面硬件接线这块&#xff0c;液位传感器接AIW0&#xff08;4-20mA信号&#xff09;&#xff0c;电磁阀控制用Q0.0输出。注意在PLC侧要配个EM235模拟量模块…

vrrp实例script和 real_server中的HTTP_GET健康检查区别,使用场景总结

Keepalived核心健康检查&#xff1a;VRRP Script & HTTP_GET 在Keepalived高可用集群部署中&#xff0c;健康检查是保障服务连续性的核心机制。其中VRRP实例的script脚本检查与real_server的HTTP_GET检查是最常用的两种方式。 一、核心差异&#xff1a;从检测对象到作用机制…

aa---(9)

41.PetsThe cat.The dog.The bunny.The bird.The goldfish.The mouse.The turtle.The hamster(仓鼠).42.Picking ApplesFocus QuestionWhat can you see when picking apples from trees?apples friends basket ladder farmer tractor(拖拉机)textThe farmer.The tractorThe t…

【课程设计/毕业设计】基于python-cnn深度学习的是否有污渍识别基于python-cnn的是否有污渍识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

乐迪信息:船舶AI逆行检测有效遏制水上交通违规

船舶AI逆行检测技术的核心在于对船舶航行轨迹的精准监测与分析。通过对船舶的定位数据进行实时采集&#xff0c;结合航道的地理信息&#xff0c;系统能够准确判断船舶是否偏离了规定的航道方向。这一技术的应用&#xff0c;使得水上交通管理部门能够及时发现并处理船舶逆行行为…

基于MATLAB/Simulink的Statcom静止无功补偿器仿真探秘

Statcom&#xff1a;基于MATLAB/Simulink的静止无功补偿器仿真模型&#xff0c;负载端加入断路器模拟断路故障。 仿真条件&#xff1a;MATLAB/Simulink R2015b在电力系统的研究与优化中&#xff0c;静止无功补偿器&#xff08;Statcom&#xff09;起着举足轻重的作用。今天咱们…

LVS Nginx反向代理高可用实践

Nginx Keepalived 高可用反向代理 一、 整体架构与技术原理介绍 1.1 架构设计理念 本架构是中小型业务系统高可用反向代理的经典方案&#xff0c;核心目标是实现 无单点故障 的反向代理层。通过 Nginx 实现后端服务的负载均衡&#xff0c;通过 Keepalived 基于 VRRP 协议实现主…

Flutter---时间核心类

DateTime - 基础时间类// 创建 DateTime 对象 DateTime now DateTime.now(); // 当前时间 DateTime specific DateTime(2024, 1, 15); // 指定日期 (年,月,日) DateTime detailed DateTime(2024, 1, 15, 10, 30); // 指定日期时间 (年,月,日,时,分…

matlab/simulink三相四桥臂逆变器仿真模型 采用的是电压外环电流内环控制策略,交流...

matlab/simulink三相四桥臂逆变器仿真模型 采用的是电压外环电流内环控制策略&#xff0c;交流测可以接不平衡负载&#xff0c;在负载不平衡的情况下依然可以保持输出电压对称。 直流侧输入电压范围450V~2000V均可。 交流测输出电压为380/220V&#xff0c;不平衡负载和平衡负载…

C#源码 上位机 SECS协议,里面包含各种进制转换,用于半导体行业,程序全源码

C#源码 上位机 SECS协议&#xff0c;里面包含各种进制转换&#xff0c;用于半导体行业&#xff0c;程序全源码概述 HSMS&#xff08;High-Speed SECS Message Services&#xff09;协议是半导体行业中设备与主机系统之间通信的重要标准。本项目实现了一个完整的HSMS协议通信库…

‌别再用Jenkins了!GitLab CI+AI测试,才是中大型企业的标配‌

测试自动化的变革浪潮 在数字化转型加速的2026年&#xff0c;软件测试从业者正面临前所未有的挑战&#xff1a;传统工具如Jenkins已难以应对中大型企业的复杂需求。Jenkins作为老牌CI/CD工具&#xff0c;虽曾主导市场&#xff0c;但其配置繁琐、维护成本高、集成能力弱等问题日…

aa---(6)

26.My EasterFocus QuestionWhat does the girl do on Easter?basket Easter(复活节) candy eggs dress familytextMy dress.My hat.My basket.My eggs.My candy.My flowers.My family.My Easter.ConnectionsEaster is a holiday.What are other holidays&#xff1f;Make a l…