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(换行符)。

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

    关注

    5186

    文章

    20146

    浏览量

    328802
  • 通信协议
    +关注

    关注

    28

    文章

    1073

    浏览量

    41869

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Xilinx FPGA串行通信协议介绍

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

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

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

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

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

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

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

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

    在今天的信息化社会,嵌入式通信电源系统已经成为许多通信设备的核心组成部分。特别是在广州邮科,嵌入式通信
    的头像 发表于 08-30 11:01 429次阅读
    广州邮科<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 1815次阅读
    【干货】一文带你了解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 1710次阅读
    ElfBoard<b class='flag-5'>嵌入式</b>教育科普|CAN接口全面解析

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

    在现代科技领域,嵌入式系统接口作为信息交互的核心载体,发挥着至关重要的作用,各类接口通过预定义的通信协议与标准化规范,可以实现设备间的精准数据传输与智能控制。 作为嵌入式开发的技
    的头像 发表于 03-05 11:11 2739次阅读
    <b class='flag-5'>嵌入式</b>教育科普|GPIO接口全面解析

    Modbus 转 Profinet:工业通信协议的桥梁

    1. 引言 在工业自动化领域,Modbus 和 Profinet 是两广泛使用的通信协议。Modbus 是一串行通信协议,常用于连接工业电子设备
    的头像 发表于 02-24 11:11 685次阅读
    Modbus 转 Profinet:工业<b class='flag-5'>通信协议</b>的桥梁

    搞懂TTL、RS232、485通信协议

    本文介绍了TTL、RS232和RS485这三种常见通信协议的传输距离、应用场景以及影响通信距离的各种因素。TTL是一短距离
    的头像 发表于 01-16 10:59 1.1w次阅读
    搞懂TTL、RS232、485<b class='flag-5'>通信协议</b>!

    总线通信协议解析及应用

    在现代计算机系统中,总线通信协议扮演着至关重要的角色。它们定义了数据如何在处理器、内存、输入/输出设备等组件之间传输。 总线通信协议的基本概念 总线通信协议是一组规则,它规定了数据在系
    的头像 发表于 12-31 10:07 1919次阅读

    ARM嵌入式通信协议及应用

    随着科技的飞速发展,嵌入式系统在各个领域扮演着越来越重要的角色。ARM处理器因其高性能、低功耗的特点,在嵌入式系统中得到了广泛应用。通信协议作为嵌入式系统的重要组成部分,对于实现
    的头像 发表于 12-28 09:18 1491次阅读

    常见串口通信协议 如何设置串口参数

    串口通信是一常见通信方式,广泛应用于计算机、嵌入式系统和各种电子设备之间。串口
    的头像 发表于 12-27 09:51 4702次阅读