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

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

3天内不再提示

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

Q4MP_gh_c472c21 2018-03-06 10:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式设备与PC通讯的通信协议设计经验

嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种:

表1 三种常见通信协议

从上表可以看到,一般嵌入式设备内存和运算性能都有限,因此固定二进制是首选通信协议。

一. 简单性

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

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

二. 可扩展

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

三. 低耦合

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

四. 稳定性

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

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

五. 高效率

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

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

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

六. 易实现

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

七.软件开发

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

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

接收不定长的数据帧,可以使用状态机,当接收到“帧尾数据”时向进程发消息。小心数据紊乱和超时异常(数据紊乱时需要将状态机及时复位,超时一般使用定时器监控)。

八. 考虑硬件

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

如果通信链路是低速总线(如UART一般100kbps),一般接收一字节产生一次中断,可以将协议设计成变长帧,如附录B。它具备高灵活性,但效率较低。

附录A 一个基于DMA传输固定长度的协议实例。

图1显示了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, 帧尾,可见字符’}’

图1 PC发送数据帧

表2 Data域数据结构实例

附录B 一个基于变长格式的UART通信协议实例。

PC与iWL880A(一种无线通信产品,详见www.rimelink.com)通信帧采用变长格式,如下图所示。大部分设备(常见为PC机)对于接收以“回车符”的机制很好处理,协议中的Tail就等于0x0D(换行符)。

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

    关注

    5212

    文章

    20763

    浏览量

    338787
  • 通信协议
    +关注

    关注

    28

    文章

    1098

    浏览量

    42440

原文标题:嵌入式设备与PC通讯的通信协议设计经验

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2025嵌入式开发教程|远航哥

    https://www.bilibili.com/opus/1178756596191199237 嵌入式通信协议剑客:串口、I2C与SPI的深度解析 在嵌入式系统开发中,
    的头像 发表于 03-20 17:35 1494次阅读
    2025<b class='flag-5'>嵌入式</b>开发教程|远航哥

    嵌入式驱动开发,需要掌握哪些技能?

    :掌握UART、SPI、I2C等接口常见通信协议,以及如何开发和调试相应的通信代码。 2、 编程技能扎实的编程基础:嵌入式驱动开发的核心是软件编程,因此至少需要掌握C语言技能。 掌
    发表于 01-20 16:46

    小身材大能量的嵌入式板卡,profinet工业现场的通信替代好物

    推进,提升了能量密度和安全性。同时,回收技术的发展也在应对环境挑战。政策支持与投资加速推动行业向更可持续和高效的方向发展,预计未来几年将保持强劲增长。 嵌入式板卡评估板在锂电池行业的应用效果: 通信协议的多样性 多协议
    的头像 发表于 12-15 15:40 456次阅读

    通信协议IIC与SPI最全对比分析

    忘记的是各种总线的用途是什么。“大”协议是用于系统外的整个系统之间通信的,“小”协议是用于系统内各芯片间的通信,没有迹象表明“大”协议有必要
    发表于 12-10 06:04

    Xilinx FPGA串行通信协议介绍

    Xilinx FPGA因其高性能和低延迟,常用于串行通信接口设计。本文深入分析了Aurora、PCI Express和Serial RapidIO这三种在Xilinx系统设计中关键的串行通信协议。介绍了它们的特性、优势和应用场景
    的头像 发表于 11-14 15:02 2931次阅读
    Xilinx FPGA串行<b class='flag-5'>通信协议</b>介绍

    如何使用FPGA实现SRIO通信协议

    本例程详细介绍了如何在FPGA上实现Serial RapidIO(SRIO)通信协议,并通过Verilog语言进行编程设计。SRIO作为一高速、低延迟的串行互连技术,在高性能计算和嵌入式系统中广
    的头像 发表于 11-12 14:38 6197次阅读
    如何使用FPGA实现SRIO<b class='flag-5'>通信协议</b>

    嵌入式需要掌握哪些核心技能?

    /网络设备)、中断底半部处理,适用于高端嵌入式设备。 企业需求:RTOS是60%岗位的核心要求,Linux开发需求随项目复杂度增长。 4)通信协议与接口 基础
    发表于 10-21 16:25

    分布能源并网的通信协议有哪些?

    在分布能源(如光伏、储能、微电网)并网场景中,通信协议需满足 设备互联、数据传输、远程控制、调度协同 等核心需求,不同协议因设计目标不同,适用于从
    的头像 发表于 09-18 16:40 2161次阅读
    分布<b class='flag-5'>式</b>能源并网的<b class='flag-5'>通信协议</b>有哪些?

    嵌入式达到什么水平才能就业?

    :包括GPIO、定时器、中断、ADC 等外设的配置与调试,能实现如温湿度采集、电机控制等功能掌握嵌入式 Linux 驱动开发基础:能编写简单字符设备驱动,实现设备的初始化、读写操作,会用内核调试
    发表于 09-15 10:20

    广州邮科嵌入式通信电源系统:提升通信设备稳定性与效率的关键

    在今天的信息化社会,嵌入式通信电源系统已经成为许多通信设备的核心组成部分。特别是在广州邮科,嵌入式通信
    的头像 发表于 08-30 11:01 815次阅读
    广州邮科<b class='flag-5'>嵌入式</b><b class='flag-5'>通信</b>电源系统:提升<b class='flag-5'>通信</b><b class='flag-5'>设备</b>稳定性与效率的关键

    【干货】一文带你了解CAN、Modbus与LoRa三种通信协议的区别

    在工业自动化与物联网领域,CAN、Modbus和LoRa是三种主流通信技术。而亿佰特在该行业具有丰富的产品供客户选择与使用,帮助客户进一步确定需求,本文将结合技术细节与实际案例解析其核心区别。一
    的头像 发表于 08-28 19:32 2379次阅读
    【干货】一文带你了解CAN、Modbus与LoRa<b class='flag-5'>三种</b><b class='flag-5'>通信协议</b>的区别

    哪些协议是工业通信协议?#格电子

    通信协议
    三格电子科技
    发布于 :2025年08月27日 14:16:07

    入行嵌入式应该怎么准备?

    任务调度的代码是非常重要的。此外,了解操作系统内核的工作原理以及与硬件交互的方式也是必须的。 四、通信协议嵌入式系统通常需要与其他设备或系统进行通信。了解
    发表于 08-06 10:34

    ElfBoard嵌入式教育科普|CAN接口全面解析

    CAN的全称是Controller Area Network,译为控制器区域网络,是一用于车辆、电力系统、工业设备嵌入式系统的半双工异步串行通信协议和物理接口。
    的头像 发表于 05-28 16:30 2909次阅读
    ElfBoard<b class='flag-5'>嵌入式</b>教育科普|CAN接口全面解析

    芯知识|广州唯创电子语音芯片UART通信协议解析:发码长度与校验码计算

    一、UART通信协议概述UART(通用异步收发器)是一广泛应用于嵌入式系统的串行通信协议,其核心特点为无需时钟同步,通过起始位、数据位、校验位和停止位构成数据帧。在语音芯片应用中,U
    的头像 发表于 05-27 08:48 976次阅读
    芯知识|广州唯创电子语音芯片UART<b class='flag-5'>通信协议</b>解析:发码长度与校验码计算