总线协议:基于RS-485的Modbus协议(2):数据链路层(UART)实现

本文详细介绍了基于RS-485的Modbus协议在数据链路层如何通过UART实现异步通信,包括UART的工作原理、帧格式(起始位、数据段、校验位和停止位)、波特率设定以及空闲状态。特别强调了奇偶校验的作用和选择选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 工具准备

Modbus协议规范(中文)

1 基于RS-485的Modbus协议的数据链路层实现

基于RS-485的Modbus协议的数据链路层实际上就是UART(通用异步收发器),只不过是将UART的数据变为RS-485总线的半双工、差分方式传输。

1.1 UART(通用异步收发器)概述

UART接口不使用时钟信号来同步发送器和接收器,而是以异步方式传输数据。发送器根据其时钟信号生成的位流取代了时钟信号,接收器内部使用其内部时钟信号对输入数据进行采样。
同步点是通过2个设备的相同波特率来管理的。如果波特率不同,发送和接收数据的时序可能会受影响,导致数据处理过程出现不一致。允许的波特率偏差最大值为10%,超过该值,位的时序就会错乱。

1.2 UART(通用异步收发器)帧格式

典型的UART帧由起始位、数组段、校验位、停止位组成,示意图如下:
在这里插入图片描述
注:
(1)当发送方UART帧某位为逻辑“1”时,RS-485总线也为逻辑“1”状态,RS-485总线信号A-B=+2~+6V。
(2)当发送方UART帧某位为逻辑“0”时,RS-485总线也为逻辑“0”状态,RS-485总线信号A-B=-2~-6V。

1.2.1 波特率

UART是异步通信,没有时钟线同步发送和接收方,因此需要在收发数据前需要约定好波特率,确定每个码元的长度,以进行数据解析。
一般来说,UART设置的波特率(单位:bps)如下:
1200、2400、9600、14400、19200、38400、56000、57600、115200、128000、230400、256000、460800、
500000、512000、600000、750000、921600、1000000、1500000、2000000
作为调试用途的串口波特率使用最多的是115200bps,在RS-485从机中最常见的是9600bps。

1.2.2 空闲状态

当UART处于空闲状态,也就是不发送数据时,UART的TX信号保持逻辑“1”状态,RS-485也处于逻辑“1”状态。

1.2.3 起始位

开始传输数据时,UART会将TX从高电平拉到低电平并保持一个时钟周期。当接收UART检测到信号从高到低跳变时,便开始以波特率对应的频率读取数据帧中的位。
在这里插入图片描述

1.2.4 数据段

数据段包含我们需要传输的数据。如果使用奇偶校验位,数据段的长度可以是5-8位。如果不使用奇偶校验位,数据段长度可以是5-9位。传输数据时低位在前高位在后(LSB)。
在这里插入图片描述

1.2.5 校验位(可选)

在这里插入图片描述

校验位是一个可选参数,通过奇偶校验位,接收UART可以判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。
校验位可选参数如下:
(1)无校验
无校验情况下,UART帧中不包含校验位,数据段最长可以设置为9位。
(2)奇校验
设置为奇校验时,校验位和数据段中逻辑“1”的数量总是为奇数。例如,数据段中逻辑“1”个数为3,则校验位会自动设置为逻辑“0”以保证校验位和数据段中逻辑“1”的数量总是为奇数。
(3)偶校验
设置为偶校验时,校验位和数据段中逻辑“1”的数量总是为偶数。例如,数据段中逻辑“1”个数为3,则校验位会自动设置为逻辑“1”以保证校验位和数据段中逻辑“1”的数量总是为偶数。
(4)0校验
校验位总是设置为逻辑“0”。
(5)1校验
校验位总是设置为逻辑“1”。

1.2.6 停止位

停止位用来表示UART帧的结束,数据传输线会从逻辑“0”切换到逻辑“1”并保持1-2位时间。
在这里插入图片描述
停止位可选长度一般为1、1.5、2位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值