通信设计中考虑协议的灵活性,经常把协议设计成“不定长度”。
一个实例如下图:锐米LoRa终端的通信协议帧。
如果一个系统接收上述“不定长度”的协议帧,将会有一个挑战--如何高效接收与解析。
为简化系统设计,我们强烈建议您采用“状态机”来解析UART数据帧,并且把解析工作放在ISR(中断服务程序)完成,仅当接收到最后一个字节(0x0D)时,再将整个数据帧提交给进程处理。
该解析状态机的原理如下图所示:
那么ISR处理这个状态机来得及吗?答案是:so easy!因为它只有3个动作,运算量十分小:
比较接收数据 -> 更新状态变量 -> 存储接收数据,C语言仅3条语句,翻译成机器指令也不超过10条。
代码清单如下:
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6030文章
44482浏览量
631707 -
通信协议
+关注
关注
28文章
838浏览量
40208 -
LoRa技术
+关注
关注
3文章
101浏览量
16303
原文标题:如何设计单片机的通信协议?
文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
PROFINET通信协议是什么
PROFINET通信协议是一种专为工业自动化领域设计的基于以太网的实时通信协议。以下是对PROFINET通信协议的详细解析,包括其定义、特点、体系结构、工作原理、
说明白了,Modbus RTU通信协议解析-成都电路板单片机开发
基本很多都内置了Modbus协议。作为一个开发者,在做单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统、物联网、电子产品、软件、APP项目
发表于 06-30 22:28
上位机与下位机通信协议的优化策略
在现代工业自动化系统中,上位机与下位机之间的通信是不可或缺的环节。上位机通常指负责监控、管理和控制功能的计算机或设备,而下位机则负责执行具体
UART串口通信协议是什么?
,广泛应用于嵌入式领域。 在UART串口通信协议中,数据以字节的形式进行传输。发送和接收端的通信流程如下: 1、通信波特率设置:发送端和接收
工业控制通信协议的报文帧分别是什么样的?
通信协议的设备上,有什么调试测试软件推荐,尽量不要借助硬件设备,直接使用上位机和支持该协议的设备相连接,直接发送帧读写参数?最常见的协议就是
发表于 01-19 14:46
单片机串口通信的接收与发送
的原理。串口通信是通过发送和接收两根线来实现的,分别为发送线(Tx)和接收线(Rx)。当单片机发送数据时,数据通过发送线发送出去,而当外部设备发送数据时,数据则通过
从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次下载
单片机串口如何接收上位机不断发送的数据帧?
各位大虾:本人菜鸟请教一个问题,单片机如何接送串口不断发送的数据帧,并将该帧的有效数据提取出来,请赐教一个完整程序。
注:我用的是89C52,通信115200已经调试成功,我的思路是先
发表于 11-06 07:41
评论