0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何高效接收与解析单片机的通信协议帧

STM32嵌入式开发 来源:RimeLink 作者:RimeLink 2022-07-05 17:19 次阅读

通信设计中考虑协议的灵活性,经常把协议设计成“不定长度”。

一个实例如下图:锐米LoRa终端的通信协议帧。

25611622-fc42-11ec-ba43-dac502259ad0.jpg

如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战--如何高效接收与解析。

为简化系统设计,我们强烈建议您采用“状态机”来解析UART数据帧,并且把解析工作放在ISR(中断服务程序)完成,仅当接收到最后一个字节(0x0D)时,再将整个数据帧提交给进程处理。

该解析状态机的原理如下图所示:

256fb7ae-fc42-11ec-ba43-dac502259ad0.jpg

那么ISR处理这个状态机来得及吗?答案是:so easy!因为它只有3个动作,运算量十分小:

比较接收数据 -> 更新状态变量 -> 存储接收数据,C语言仅3条语句,翻译成机器指令也不超过10条。

代码清单如下:

poYBAGLEAwyAWgttAAEM8kVJ9LU126.jpg

poYBAGLEAxSAU29JAAENmZYQzSE033.jpg

pYYBAGLEAxuAUKz4AADWlRn_qbs350.jpg

pYYBAGLEAyKAFVzDAAA5A0XhFJI390.jpg



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6023

    文章

    44391

    浏览量

    629256
  • 通信协议
    +关注

    关注

    28

    文章

    815

    浏览量

    40158
  • LoRa技术
    +关注

    关注

    3

    文章

    102

    浏览量

    16279

原文标题:如何设计单片机的通信协议?

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PROFINET通信协议是什么

    PROFINET通信协议是一种专为工业自动化领域设计的基于以太网的实时通信协议。以下是对PROFINET通信协议的详细解析,包括其定义、特点、体系结构、工作原理、
    的头像 发表于 09-25 18:13 172次阅读

    说明白了,Modbus RTU通信协议解析-成都电路板单片机开发

    基本很多都内置了Modbus协议。作为一个开发者,在做单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统、物联网、电子产品、软件、APP项目
    发表于 06-30 22:28

    高速串行通信协议详解

    高效、稳定、可靠的特点,成为了现代通信领域的重要组成部分。本文将对高速串行通信协议进行详细解析,以期为读者提供全面深入的了解。
    的头像 发表于 05-16 16:45 609次阅读

    如何采用“状态解析UART数据

    如果一个系统接收上述“不定长度”的协议,将会有一个挑战--如何高效接收解析。 为简化系统设计
    的头像 发表于 03-25 14:29 491次阅读
    如何采用“状态<b class='flag-5'>机</b>”<b class='flag-5'>解析</b>UART数据<b class='flag-5'>帧</b>

    UART串口通信协议是什么?

    ,广泛应用于嵌入式领域。 在UART串口通信协议中,数据以字节的形式进行传输。发送和接收端的通信流程如下: 1、通信波特率设置:发送端和接收
    的头像 发表于 03-19 17:26 1018次阅读

    CAN通信协议中有哪几种类型?CAN通信格式的作用

    CAN通信协议中有四种类型,分别是数据、远程、错误和过载
    的头像 发表于 01-30 09:18 4472次阅读

    工业控制通信协议的报文分别是什么样的?

    通信协议的设备上,有什么调试测试软件推荐,尽量不要借助硬件设备,直接使用上位和支持该协议的设备相连接,直接发送读写参数?最常见的协议就是
    发表于 01-19 14:46

    单片机串口通信接收与发送

    的原理。串口通信是通过发送和接收两根线来实现的,分别为发送线(Tx)和接收线(Rx)。当单片机发送数据时,数据通过发送线发送出去,而当外部设备发送数据时,数据则通过
    的头像 发表于 12-20 14:03 3034次阅读

    单片机串口通信接收与发送程序

    等功能。本文将详细介绍单片机串口通信接收与发送程序。 二、串口通信基础 串口通信协议:串口通信
    的头像 发表于 12-19 13:57 4676次阅读

    从Profinet到CCLink:工业通信协议的转换实践

    本文将探讨从Profinet协议转换到CCLink协议的过程,包括转换的必要性、网关的使用、转换步骤以及注意事项。通过了解这些内容,能够更好地理解工业通信协议转换的实际操作,并为设备通信
    发表于 12-15 14:26

    ad7779数据输出接口和单片机该怎样连接?采用哪种通信协议接收数据?

    AD7779有两种不同接口:SPI和数据输出接口。问题1:数据输出接口和单片机该怎样连接,到底采用哪种通信协议接收数据?I/O口?USART?SPI?或者说是并口协议。还是说主控芯片
    发表于 12-07 07:42

    基于PIC16F877A单片机的自定义无线传输协议和短信通信协议

    电子发烧友网站提供《基于PIC16F877A单片机的自定义无线传输协议和短信通信协议.pdf》资料免费下载
    发表于 11-08 14:47 1次下载
    基于PIC16F877A<b class='flag-5'>单片机</b>的自定义无线传输<b class='flag-5'>协议</b>和短信<b class='flag-5'>通信协议</b>

    单片机串口如何接收上位不断发送的数据

    各位大虾:本人菜鸟请教一个问题,单片机如何接送串口不断发送的数据,并将该的有效数据提取出来,请赐教一个完整程序。 注:我用的是89C52,通信115200已经调试成功,我的思路是先
    发表于 11-06 07:41

    如何利用ModBus通信协议实现触摸屏与单片机通信

    电子发烧友网站提供《如何利用ModBus通信协议实现触摸屏与单片机通信.pdf》资料免费下载
    发表于 10-19 11:19 7次下载
    如何利用ModBus<b class='flag-5'>通信协议</b>实现触摸屏与<b class='flag-5'>单片机</b>的<b class='flag-5'>通信</b>

    单片机接收数据尾校验数据解析

    单片机接收数据尾校验数据解析
    的头像 发表于 10-17 17:23 1223次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>接收</b>数据<b class='flag-5'>帧</b><b class='flag-5'>帧</b>头<b class='flag-5'>帧</b>尾校验数据<b class='flag-5'>解析</b>