当前位置: 首页 > news >正文

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

1. 什么是UART?

UART,全称是Universal Asynchronous Receiver/Transmitter,即通用异步收发器。它是一种广泛应用于嵌入式系统中的串行、异步、全双工通信协议。

简单来说,UART 允许两个设备之间通过一根发送线(TXD)和一根接收线(RXD)进行数据交换。它不需要时钟信号,通信双方通过约定相同的波特率来同步数据传输的节奏。

UART 的核心作用是将要传输的数据在并行串行形式之间进行转换。在设备内部,数据通常是并行处理的(如8位或16位),而UART会将这些并行数据逐位(bit-by-bit)地通过一根线发送出去,接收端再将串行数据还原为并行数据。

2. UART传输数据顺序

UART在传输一个字节的数据时,遵循LSB(Least Significant Bit,最低有效位)先行的原则。

例如,要发送数据0xF6(二进制为1111 0110),其传输顺序如下:

  1. 起始位:先发送一个低电平(逻辑0),表示数据传输开始。
  2. 数据位:从最低位(LSB)开始发送,即先发送0,然后是1101111(MSB)。
  3. 校验位(可选):根据校验方式发送奇偶校验位。
  4. 停止位:发送一个或多个高电平(逻辑1),表示数据传输结束。

所以,在信号线上看到的比特流顺序是:起始位(0)->LSB(0)->1->1->0->1->1->1->1(MSB)->校验位->停止位(1)

3. 单工、半双工、全双工特点

根据数据传输的方向和方式,通信方式可以分为以下三种:

3.1 单工通信

  • 特点:数据传输是单向的。发送方和接收方是固定的,一方只能发送,另一方只能接收。
  • 信号线:只需要一根数据线。
  • 例子:广播、电视信号。

3.2 半双工通信

  • 特点:通信双方都可以发送和接收数据,但不能同时进行。在同一时刻,数据只能沿一个方向传输。
  • 信号线:只需要一根数据线。
  • 例子:对讲机、I2C总线。

3.3 全双工通信

  • 特点:通信双方可以同时发送和接收数据,互不干扰。
  • 信号线:需要两根独立的数据线(如TXD和RXD)。
  • 例子:UART串口通信、电话。

4. 什么是串行、并行及特点

数据传输的形式主要分为串行传输和并行传输。

4.1 串行传输

  • 定义:使用一根信号线,按照先后次序,逐位(bit-by-bit)地发送数据。
  • 特点
    • 传输速率慢:相对于并行,单位时间内传输的数据量较少。
    • 硬件成本低:只需要一根或两根线,引脚少,布线简单。
    • 传输距离远:抗干扰能力强,适合长距离通信(如RS485可达1200米)。
    • 实现简单:协议相对简单。

4.2 并行传输

  • 定义:使用多根信号线,在同一时刻同时传输多个比特的数据(如8位、16位)。
  • 特点
    • 传输速率快:单位时间内能传输大量数据。
    • 硬件成本高:需要多根数据线,占用更多引脚,布线复杂。
    • 传输距离近:线间干扰大,抗干扰能力差,不适合长距离传输(通常在30米以内)。
    • 实现复杂:需要精确同步多根线上的信号。

5. 串口通信时序

串口通信的时序是理解其工作原理的关键。一个完整的数据帧(通常为10位或11位)的传输时序如下:

串口通信时序:

  1. 先发送一个bit的低电平,代表起始位
  2. 再发送8个bit的数据位(先发送数据低位,再发送高位)
  3. 发送一个bit的校验位(奇偶校验 高电平 奇校验 低电平 偶校验)
  4. 发送一个bit的电平,代表停止位,表示串口通信结束
  1. 空闲位:当没有数据传输时,数据线保持高电平(逻辑1)。
  2. 起始位:发送方将数据线拉低(逻辑0),持续一个比特的时间。这告诉接收方,数据即将开始。
  3. 数据位:紧接着起始位,发送8位(或5-9位)的数据。顺序是LSB先行
  4. 校验位(可选):在数据位之后,可以发送一个校验位用于简单的错误检测。
  5. 停止位:最后,发送方将数据线拉高(逻辑1),持续1、1.5或2个比特的时间。这表示一帧数据传输结束。

6. 奇校验和偶校验?有什么缺点?

奇偶校验是一种简单的错误检测方法,通过在数据帧中添加一个校验位来实现。

6.1 奇校验

  • 规则:确保数据位中“1”的个数加上校验位“1”的个数,总和为奇数
  • 例子:要发送数据0110 0000(其中有2个1,偶数个)。为了满足奇校验,校验位应为1,使得总共有3个1(奇数)。如果接收方计算出的1的个数是偶数,则说明传输过程中可能发生了错误。

6.2 偶校验

  • 规则:确保数据位中“1”的个数加上校验位“1”的个数,总和为偶数
  • 例子:要发送数据0110 0000(其中有2个1,偶数个)。为了满足偶校验,校验位应为0,使得总共有2个1(偶数)。

6.3 缺点

奇偶校验的主要缺点是无法检测出偶数个比特位同时出错的情况

  • 例如,在奇校验中,如果数据0110 0000(2个1)加上校验位1,总共有3个1(奇数)。如果在传输过程中,有两个比特位发生翻转,变成了0100 0001(仍然是2个1),加上校验位1,总共有3个1(奇数),校验仍然通过,但数据已经错误。
  • 因此,奇偶校验只能检测出奇数个比特的错误,可靠性有限,适用于对错误容忍度较高的场景。

7. 串口通信参数

要使两个设备通过UART成功通信,它们必须配置相同的通信参数。这些参数通常以“波特率-数据位-校验位-停止位”的格式表示,例如9600 8 N 1

  • 波特率:表示每秒传输的比特数(bps)。常见的波特率有 2400、4800、9600、115200 等。通信双方的波特率必须一致。
  • 数据位:表示一帧数据中实际数据的位数。常见的是8位,也可以是5、6、7位。
  • 校验位N(None,无校验)、O(Odd,奇校验)、E(Even,偶校验)。
  • 停止位:表示一帧数据结束的标志位,可以是1、1.5或2位。

8. 同步和异步

这是通信中两个重要的概念,用于区分通信双方如何协调数据传输的节奏。

8.1 同步通信

  • 特点:发送方和接收方通过一根专门的时钟线(SCL)来同步数据传输。时钟信号决定了何时读取数据线上的电平状态。
  • 优点:传输速率高,协议效率高。
  • 缺点:需要额外的时钟线,硬件连接稍复杂。
  • 例子:I2C、SPI。

8.2 异步通信

  • 特点:通信双方没有专门的时钟线。它们通过约定相同的波特率来同步数据传输的速率。每个数据帧都包含起始位和停止位,用于标识数据的开始和结束。
  • 优点:只需要数据线,硬件连接简单,成本低。
  • 缺点:每个数据帧需要额外的起始位和停止位,传输效率略低。
  • 例子:UART。

9. TTL、RS232、RS485

这三种是串口通信中常见的电气标准,它们定义了信号的电平标准,决定了通信的距离和抗干扰能力。

9.1 TTL电平

  • 电平标准:高电平(逻辑1)为 3.3V 或 5V,低电平(逻辑0)为 0V。
  • 特点:电平与单片机等数字芯片直接兼容,无需转换。但传输距离短(通常几米以内),抗干扰能力弱。
  • 常见芯片:CH340(用于USB转TTL)。

9.2 RS232电平

  • 电平标准:逻辑1 为 -3V 到 -15V,逻辑0 为 +3V 到 +15V。这是一种负逻辑。
  • 特点:传输距离比TTL远(可达15米左右),抗干扰能力更强。但电平与TTL不兼容,需要电平转换芯片(如MAX232)。
  • 应用:早期的电脑串口(DB9接口)。

9.3 RS485电平

  • 电平标准:采用差分信号传输。逻辑1 为两根线之间的电压差为 +2V 到 +6V,逻辑0 为 -2V 到 -6V。
  • 特点:抗干扰能力极强,传输距离非常远(可达1200米以上),支持多点通信(可挂载多个设备)。
  • 应用:工业控制、远距离数据采集。

10. Modbus协议格式

Modbus是一种广泛应用于工业电子设备中的通信协议,它建立在物理层(如RS232、RS485)之上,定义了设备之间请求和应答的数据格式。这里以Modbus RTU模式为例,介绍其报文格式。

一个典型的Modbus RTU报文帧结构如下:

起始码地址码功能码数据位校验码结束码
0xAA0x010x010x00 0x420xEE0xBB
  • 起始码:标志一帧报文的开始。
  • 地址码:目标从机设备的地址(1-247)。
  • 功能码:告诉从机要执行什么操作。例如:
    • 0x01:控制LED灯
    • 0x02:控制数码管
    • 0x03:控制蜂鸣器
    • 0x04:读取传感器温度
  • 数据位:功能码所需的参数,如控制指令、数据地址等。
  • 校验码:用于错误检测,Modbus RTU通常使用CRC校验。
  • 结束码:标志一帧报文的结束。

主从应答模式:在Modbus网络中,主机(如PC或PLC)发起所有通信。从机(如单片机)收到主机指令后,解析指令并执行相应操作,然后回复一个应答帧给主机。应答帧的功能码最高位通常置1,以区分是主机请求还是从机应答。

例如,主机发送指令0xAA 0x01 0x01 0x00 0x42 0xEE 0xBB控制地址为0x01的从机点亮LED。从机成功执行后,会回复一个应答帧,如0xAA 0x01 0x81 0x00 0x42 0x6E 0xBB,其中功能码0x81的最高位为1,表示这是从机的应答。

http://www.jsqmd.com/news/1191262/

相关文章:

  • SAP FI模块后台配置实战:从SPRO入口到企业结构搭建的完整指南
  • 《看门狗2》闪屏修复补丁安装指南:保留联机功能的完整解决方案
  • 2026年上海靠谱的进出口报关服务筛选要点及实操指南分享 - 热点品牌推荐
  • AI知识黄页:用结构化元数据组织教学资源
  • 从 LLM 到 Agent:Agent 的定义与本质
  • 实战:基于STM32的I2C协议驱动设计与串行存储器访问
  • 哪吒X车型1/4螺纹供电接口改装实战教程
  • 终极游戏模组管理指南:5分钟掌握XXMI启动器的完整使用技巧
  • 2026年电磁加热控制器生产厂家深度解析:变频、高频与智能控制技术实力品牌详述 - 甄选服务推荐
  • Claude Opus 4.6实测:百万上下文如何重塑编程脑认知能力
  • 2026年7月知名的企业IP策划拍摄服务商推荐,无锡市优质的企业IP策划拍摄推荐分析 - 品牌推荐师
  • FPD-Link III解串器DS90UB948-Q1高速PCB设计实战与避坑指南
  • 2026 年现阶段,文成诚信的回收同仁堂80克冬虫夏草 公司推荐几家,80克虫草入袋前,先算这笔账能省多少钱? - 企业官方推荐【认证】
  • FPGA-时序逻辑的基石:寄存器与D触发器实战解析
  • TDengine 索引使用指南 — 何时建、怎么建、怎么用
  • FastAPI框架实战:从零构建高性能Python API开发指南
  • 【XJTU】从夯到拉锐评大三下各个课程
  • 机器人夹爪选型标准解析:2026年机器人夹爪品牌参考 - 品牌深度评测
  • 2024电子阅读器选购指南:从行为适配出发选对墨水屏
  • DeepSeek Coder MoE架构解析:代码与数学双重能力的AI编程实践
  • PPT内嵌音视频完美兼容指南:解决在线预览「有声音无画面」及格式不支持问题
  • 串行通信:从基础原理到现代接口协议全景解析
  • 抖大侠官网博客和语雀教程分别看什么 - 抖大侠
  • 亚马逊发票缺陷率影响店铺绩效?自动上传方案来了 —— 跨境电商端到端合规技术方案深度盘点
  • AI安全实战系列(二):LLM 基础漏洞与信息泄露和提示词注入攻击实战
  • 京东返利APP的秒杀返利场景:限流、队列与异步处理的协同设计
  • 单元测试(UT)是什么?为什么开发团队必须重视它?
  • 2026年青海纯净水设备选购 靠谱合作厂家信息梳理参考 - 热点品牌推荐
  • AI视频生成技术实战:从Stable Diffusion到角色史诗级增强
  • 树与二叉树:从基础概念到遍历实战全解析