最适合单片机的通信协议,如何设计?

Posted 小麦大叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最适合单片机的通信协议,如何设计?相关的知识,希望对你有一定的参考价值。

点击上方“小麦大叔”,选择“置顶/星标公众号”

福利干货,第一时间送达

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

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

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

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

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

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

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

代码清单如下:

今天的文章就到这里了,文章不长,设计思路很重要,希望对您有所帮助。

原文地址:https://blog.csdn.net/jiangjunjie_2005/article/details/50619884


版权归原作者所有,如有侵权,请联系删除。

—— The End ——

往期推荐

4600万台销量!树莓派炼成之路

好工具,不私藏!介绍一个提高效率的利器

这个c语言技巧,刷新了我对结构体的认知!

C语言还可以这么玩,你绝对想不到!

好项目,不私藏!适用于单片机开发的开源轮子

单片机开发从来不用数据结构?

点击上方名片关注我

你点的每个好看,我都认真当成了喜欢

以上是关于最适合单片机的通信协议,如何设计?的主要内容,如果未能解决你的问题,请参考以下文章

STM32------- SPI通信

STM32------- SPI通信

STM32------- SPI通信

单片机常用通信协议-UART和USART

单片机串口通信数据可以直接进行加减乘除处理吗

app与后台通信协议