news 2026/7/30 2:36:07

3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析

短文标题:3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析

你有没有想过一个问题:Modbus-RTU数据帧没有固定的帧头,接收方怎么知道一帧从哪里开始、到哪里结束?靠“沉默”来分帧。协议规定:两个字节之间的间隔超过3.5个字符时间,就认为上一帧结束,下一帧开始。

3.5T(3.5字符时间)怎么算?以9600bps、8N1(10位/字符,1起始+8数据+1停止)为例:

  • 1位时间 = 1/9600 ≈ 104µs
  • 1字符时间 = 10 × 104µs ≈ 1.04ms
  • 3.5T = 3.5 × 1.04ms ≈ 3.64ms

IDLE中断检测帧结束,USART的IDLE标志在总线空闲超过1字符时间时置1,可配合软件定时器测量更精确的3.5T,或直接用IDLE中断触发帧结束标志(工程实践中通常足够)。

void USART2_IRQHandler(void)

{

if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE)) {

__HAL_UART_CLEAR_IDLEFLAG(&huart2);

// 帧接收完成

frame_received = 1;

}

}

Modbus-RTU帧结构

  • 地址:从机地址(1~247),0为广播地址
  • 功能码:03读保持寄存器、06写单个寄存器、05写线圈
  • 数据:寄存器地址、数量、写入值
  • CRC16:从地址到数据区末尾,低字节在前

常用功能码

DMA+IDLE接收变长帧

// 配置DMA接收

HAL_UART_Receive_DMA(&huart2, rx_buffer, BUFFER_SIZE);

// IDLE中断中处理

void USART2_IRQHandler(void)

{

if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE)) {

__HAL_UART_CLEAR_IDLEFLAG(&huart2);

HAL_UART_DMAStop(&huart2);

uint16_t len = BUFFER_SIZE - __HAL_DMA_GET_COUNTER(huart2.hdmarx);

// len就是这一帧的长度,处理数据

HAL_UART_Receive_DMA(&huart2, rx_buffer, BUFFER_SIZE);

}

}

这个故事的启示,Modbus-RTU没有帧头,用“静默”分帧——3.5T就是它的“句号”。CRC16保数据完整,一个bit错都不同。学会解析帧结构,Modbus通信不再神秘。写在最后,Modbus-RTU帧结构就四部分:地址区分设备,功能码定操作,数据传内容,CRC保安全。


(本文灵感源于于振南《新概念ARM32单片机》教程第4.16节、第4.17节。)

觉得有用?点赞、转发,让更多人看懂Modbus-RTU的帧结构。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 2:32:17

SBUS协议解析:从串行通信原理到航模遥控实战应用

1. 从“玩具”到“专业”:SBUS协议为何成为模型遥控的隐形冠军如果你玩过航模、穿越机或者一些高端的遥控车,你可能听说过PWM、PPM这些传统的信号传输方式。老玩家们肯定记得,早期接收机上一排密密麻麻的伺服器接口,每个通道一根信…

作者头像 李华
网站建设 2026/7/30 2:30:42

《P10722 [GESP202406 六级] 二叉树》

题目背景 对应的选择、判断题:试题 - GESP 202406 C 六级 - 洛谷有题 题目描述 小杨有一棵包含 n 个节点的二叉树,且根节点的编号为 1。这棵二叉树任意一个节点要么是白色,要么是黑色。之后小杨会对这棵二叉树进行 q 次操作,每…

作者头像 李华
网站建设 2026/7/30 2:30:39

智能车环岛处理:基于状态机与动态圆弧跟踪的鲁棒控制方案

1. 项目概述:环岛处理的挑战与核心思路在智能车竞赛的赛道上,环岛是一个标志性的、极具挑战性的元素。它不像直道那样可以靠简单的偏差控制,也不像弯道那样有连续的曲率变化。环岛是一个离散的、结构化的特殊赛道元素,要求小车在高…

作者头像 李华
网站建设 2026/7/30 2:26:26

电子系统设计实战:从硬件到Windows客户端软件开发全流程解析

1. 项目概述:从电路板到智能终端做电子系统设计,尤其是嵌入式开发,很多人会把重心放在硬件上——画原理图、PCB布局、焊接调试,觉得软件不过是“最后写几行代码”的事。但真正踩过坑的工程师都明白,一个电子系统的成败…

作者头像 李华
网站建设 2026/7/30 2:23:20

告别论文内耗✨一个OKBIYE搞定毕业全流程

写论文最磨人的,从来不是不会写,而是细碎琐事太多、工具来回切换、反复返修内耗。 开题卡思路、综述凑字数、翻译全是机翻感、格式反复调不对、答辩PPT廉价翻车、定稿怕双检超标…… 一路走来试过无数学术工具,要么功能单一、要么模板化严重…

作者头像 李华