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

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

3天内不再提示

嵌入式设备通信协议的特点

STM32嵌入式开发 来源:STM32嵌入式开发 作者:STM32嵌入式开发 2022-08-23 14:14 次阅读

嵌入式设备而设计的通信协议,通常有如下三种:

766ee9e4-20d8-11ed-ba43-dac502259ad0.png

考虑到嵌入式设备的内存、算力有限,固定二进制是首选通信协议。

下文简析嵌入式设备通信协议应该有的特点。

简单性

保证协议是一个简单的方案,晦涩难懂往往意味着实现困难和容易出错。协议的结构宜采用平面方式,每个域作用明确,数据域尽可能设计得长度和位置固定,注释详尽,文档清晰,实例丰富,让人尽快上手和理解。

协议一般都需要以下域:帧头,长度,帧类型,目标地址,源地址,数据,校验,帧尾。

串口通信数据包格式如下图所示。

769643ea-20d8-11ed-ba43-dac502259ad0.png

可扩展

必须保证将来增加功能和更改硬件后协议仍能胜任工作,这往往是通过预留空间来实现,协议的变更应该只是量的增加,不至于引起协议结构的变化。

耦合

理想情况下每个协议包是原子信息,即本协议包不与其他协议包牵连,以防止通讯丢帧和设置牵连带来的错误。

稳定性

协议包长度适宜:太小包含的信息过少,协议包的种类繁多,容易引起通讯混乱和牵连错误;太大包含的信息过多,可读性较差,组帧和解帧的工作困难,还会带来通讯易受干扰的缺陷,一般协议长度以最小原子性信息为标尺。

协议必须包括校验机制,以便于接收方判别协议包正确完整接收,如果出错需要较好的机制来确保通讯成功(如重传)。

高效率

按信息类型区分协议包类别,如:设置网络信息参数,设置当前运行参数,可以区分开来,方便程序处理。

将同种操作编码为一个子集是一种高效手段,如Read操作,编码为0x0010,Write操作,编码为0x0020。

数据尽可能设计成同构模式,如果实在有差异,至少将同类型数据放置在一起,这样程序可以充分利用指针和线性寻址加速处理。

易实现

尽量减少复杂算法的使用,如,通讯链路稳定,数据帧的校验码可以由CheckSum代替CRC。除非资源非常紧张,否则不要将过多的信息挤压在一个数据里,因为它会带来可读性差和实现困难。

尽可能地让硬件ISR完成驱动工作,不要让“进程”参与复杂的时序逻辑,否则处理器将步履蹒跚且逻辑复杂!如:

接收固定长度的数据帧,可以使用DMA,每接收完一帧DMA_ISR向进程发消息。小心处理DMA断层异常(接收的数据帧长度正常但数据错误,数据为上帧的后半部分+本帧的前半部分)。

接收不定长的数据帧,可以使用状态机,当接收到“帧尾数据”时向进程发消息。小心数据紊乱和超时异常(数据紊乱时需要将状态机及时复位,超时一般使用定时器监控)。状态机相关文章请移步此处:谈谈单片机编程思想——状态机。

兼容硬件

如果通信链路是高速总线(如SPORT可达100Mbps),一般设计成一帧产生一次中断,它通过长度触发的DMA来实现,需要将协议设计成固定长度,如附录A。它具备高效率,但灵活性较差。

如果通信链路是低速总线(如UART一般100kbps),一般接收一字节产生一次中断,可以将协议设计成变长帧,一个基于变长格式的UART通信协议实例:

76abefe2-20d8-11ed-ba43-dac502259ad0.png

它具备高灵活性,但效率较低。

76c7fcd2-20d8-11ed-ba43-dac502259ad0.png

上图显示了PC发送数据帧的格式,总长为64字节,是4字节的整倍数,符合绝大部分32位处理器结构体对齐的特性。

0x3C:INT8U,帧头,可见字符’《’

Len:INT8U,本帧的总数据长度,在图4即为64

Dst:INT8U,标识目标设备的ID号

Src:INT8U,标识源设备的ID号

Data:56字节的存储区,内容依赖于具体的通信帧(实例见表2)

Cmd:INT16U,数据帧的类别

CS:INT8U, 对它前面所有数据(62字节)进行8位累加和校验

0x7D:INT8U, 帧尾,可见字符’}’

Data域数据结构实例:

76dc9c82-20d8-11ed-ba43-dac502259ad0.png

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

    关注

    5056

    文章

    18954

    浏览量

    301649
  • 通信协议
    +关注

    关注

    28

    文章

    838

    浏览量

    40208
  • 硬件
    +关注

    关注

    11

    文章

    3194

    浏览量

    66043

原文标题:嵌入式设备的通信协议特点

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

收藏 人收藏

    评论

    相关推荐

    嵌入式领域中常用的5种通信协议是什么

    文章目录嵌入式领域中常用的5种通信协议嵌入式领域中常用的5种通信协议串口协议(UART/USART):串口总线其实就是一种
    发表于 12-14 06:22

    嵌入式系统通信协议及具体程序实现方法是什么

    嵌入式系统通信协议及具体程序实现方法是什么
    发表于 12-20 08:01

    三种常见嵌入式设备通信协议是什么?

    三种常见嵌入式设备通信协议是什么?
    发表于 12-23 08:17

    基于嵌入式Linux的RS485通信协议

    嵌入式Linux平台上设计并实现一个RS485总线通信协议。该协议在网络冲突检测及数据帧结构设计时,利用RS485总线支持点对多点传输的特点,将RS485总线传统的主从
    发表于 04-22 09:05 36次下载

    EPA 通信协议在μC/OS-II嵌入式系统中的设计与实现

    本文提出了一种基于μC/OS-II 嵌入式系统的EPA 通信协议的实现方案。简要介绍了 EPA 通信协议和模型,针对在以μC/OS-II 嵌入式系统为平台实现EPA
    发表于 05-25 15:02 18次下载

    基于嵌入式的实时通信协议栈研究与设计

    传统的TCP/IP协议重点在于保证数据传输的可靠性及流量控制,而在实时性要求相对较高的嵌入式领域, 其实时性方面的性能显得不足。为此,对基于TCP/IP协议嵌入式
    发表于 09-23 17:55 27次下载

    结合内部CAN总线与外部网络通信协议嵌入式系统开发

    结合内部CAN总线与外部网络通信协议嵌入式系统开发,网络通信的技术资料,很好很实用。
    发表于 03-28 10:47 10次下载

    基于嵌入式网关的socket编程及通信协议

    基于嵌入式网关的socket编程及通信协议
    发表于 08-31 14:59 6次下载
    基于<b class='flag-5'>嵌入式</b>网关的socket编程及<b class='flag-5'>通信协议</b>

    在FPGA中实现嵌入式TCP/IP通信协议

    研究了嵌入式TCP/IP通信协议栈在Xilinx FPGA上的实现,介绍了其软硬件的系统组成和原理,提出一种实时操作系统上TCP/IP协议栈的高效工作模式,并在Virtex5 FPGA上移植成功。通过建立测试平台进行数据传输测试
    发表于 11-17 17:05 7948次阅读
    在FPGA中实现<b class='flag-5'>嵌入式</b>TCP/IP<b class='flag-5'>通信协议</b>栈

    II嵌入式的EPA通信协议与模型设计

    μC/OS-II是一种占先机制的实时多任务嵌入式操作系统,具有源码公开、可移植、可固化、可裁剪等特点,已经得到广泛的应用。相对于同为源码公开的μClinux,它具有内核小、实时性高等特点,更适合
    发表于 03-16 14:24 2861次阅读
    II<b class='flag-5'>嵌入式</b>的EPA<b class='flag-5'>通信协议</b>与模型设计

    三种常见嵌入式设备通信协议

    嵌入式设备与PC通讯的通信协议设计经验 嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现。
    的头像 发表于 03-06 10:06 1.7w次阅读
    三种常见<b class='flag-5'>嵌入式</b><b class='flag-5'>设备</b><b class='flag-5'>通信协议</b>

    单片机与嵌入式系统中的通信协议

    用途的计算机系统,通常被嵌入到其他设备或系统中,用于实现控制、监测、通信等功能。 在嵌入式系统中,单片机通过与其他设备或系统之间的
    的头像 发表于 04-19 14:08 1144次阅读

    PC机与嵌入式设备通信协议设计原则

    嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种。
    的头像 发表于 07-06 11:39 556次阅读
    PC机与<b class='flag-5'>嵌入式</b><b class='flag-5'>设备</b><b class='flag-5'>通信协议</b>设计原则

    几种常见嵌入式设备通信协议

    几种常见嵌入式设备通信协议
    的头像 发表于 09-18 16:43 1533次阅读
    几种常见<b class='flag-5'>嵌入式</b><b class='flag-5'>设备</b><b class='flag-5'>通信协议</b>

    IOT(物联网)的七大通信协议之Http协议

    一、什么是http协议嵌入式HTTP协议是一种轻量级的通信协议,专为嵌入式系统设计,用于实现设备
    的头像 发表于 05-24 08:11 2350次阅读
    IOT(物联网)的七大<b class='flag-5'>通信协议</b>之Http<b class='flag-5'>协议</b>