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

发布时间:2026/7/15 3:40:20
51单片机(三)串口通信(UART)、Modbus协议 1. 什么是UARTUART全称是Universal Asynchronous Receiver/Transmitter即通用异步收发器。它是一种广泛应用于嵌入式系统中的串行、异步、全双工通信协议。简单来说UART 允许两个设备之间通过一根发送线TXD和一根接收线RXD进行数据交换。它不需要时钟信号通信双方通过约定相同的波特率来同步数据传输的节奏。UART 的核心作用是将要传输的数据在并行和串行形式之间进行转换。在设备内部数据通常是并行处理的如8位或16位而UART会将这些并行数据逐位bit-by-bit地通过一根线发送出去接收端再将串行数据还原为并行数据。2. UART传输数据顺序UART在传输一个字节的数据时遵循LSBLeast Significant Bit最低有效位先行的原则。例如要发送数据0xF6二进制为1111 0110其传输顺序如下起始位先发送一个低电平逻辑0表示数据传输开始。数据位从最低位LSB开始发送即先发送0然后是1、1、0、1、1、1、1MSB。校验位可选根据校验方式发送奇偶校验位。停止位发送一个或多个高电平逻辑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位的传输时序如下串口通信时序先发送一个bit的低电平代表起始位再发送8个bit的数据位先发送数据低位再发送高位发送一个bit的校验位奇偶校验 高电平 奇校验 低电平 偶校验发送一个bit的电平代表停止位表示串口通信结束空闲位当没有数据传输时数据线保持高电平逻辑1。起始位发送方将数据线拉低逻辑0持续一个比特的时间。这告诉接收方数据即将开始。数据位紧接着起始位发送8位或5-9位的数据。顺序是LSB先行。校验位可选在数据位之后可以发送一个校验位用于简单的错误检测。停止位最后发送方将数据线拉高逻辑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 00002个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位。校验位NNone无校验、OOdd奇校验、EEven偶校验。停止位表示一帧数据结束的标志位可以是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表示这是从机的应答。