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

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

3天内不再提示

消息协议如何提高数据传输的可靠性

454398 来源:工程师吴畏 2019-08-01 16:48 次阅读

串行端口PIC与其他设备通信的最简单方法之一。但是,事件串行端口存在缺陷,因此在本教程中,我们将了解消息协议如何提高数据传输的可靠性。

示意图

原始数据传输

现代微控制器通常内置许多设备接口外设,包括I2C,SPI,UART和能够。虽然I2C和SPI专用于器件,并且严重依赖于选择信号或启动/停止信号,但UART更加自由。 UART的最大缺点之一是缺少时钟信号,这可能导致发送器或接收器的时钟漂移(导致波特差异),帧错误,甚至当其中一个缓冲器出现溢出错误方满了。当然,这些问题是使用定时器,监视器和事件容易克服的相对性。但是,与I2C和SPI不同,串行连接在一种特定情况下更常见:可移动硬件。 I2C和SPI器件通常是直接焊接到主电路板或永久连接到它们的IC。同时,这些设备是主控制器的子设备,因此无法自行启动数据传输。

想象一下PIC和计算机通过串行连接进行通信,其中每个设备都可以发送命令或数据到另一个设备。这样的系统可以用普通的消息协议轻松实现,其中发送的第一个字节代表命令,后面的字节代表该命令的数据。只要没有中断,该系统就可以正常运行。但是,如果计算机在发送命令后传输数据字节的一半时崩溃并重新启动会发生什么?好吧,我们的程序将重新启动并尝试发送命令字节以启动数据传输,但命令字节将被PIC解释为数据字节,因为它仍然期望一个数据字节。这会导致PIC产生错误,因为它读取的字节可能会产生意外结果。但这不仅仅是UART的一个问题;任何可能被终止的连接,无法知道连接已被终止,也可能崩溃。解决方案是使用消息协议!

我们的消息协议:DHP - DIY黑客协议

确保命令始终正确处理,命令字节值将是唯一的。对于我们的系统,我们将有以下命令:

0x00 - 无操作

0x01 - 请求数据

0x02 - 写数据

0x03 - 数据结束

0x04 - 重启(发生错误或失败)

作为一个简单的例子,如果我们想通过计算机向PIC发送一些数据,我们必须首先发送0x02,然后发送所有数据,然后发送数据结束字节。如果传输中断并且计算机尝试重新发送数据,它将再次发送整个数据包。 PIC将正确解释命令字节并意识到正在发送新数据包。但是,如果我们的数据包含0,1,2,3或4,会发生什么? PIC会将这些解释为命令字节,因此会发生致命错误。那么,我们如何解决这个问题?

虽然不是最有效的方法,但我们可以用其他形式表示我们的数据而不是原始字节值。一种方法是将我们的数据表示为十六进制形式的ASCII字符,以便两个ASCII字节代表一个字节的数据。例如,FF表示255,其中00表示0.因此,我们的数据字节永远不能与命令字节相同,并且通过使用ASCII编码的十六进制字节,理论上我们可以有多达240个命令字节(留下16个十六进制字符用于数据)。使用ASCII编码数据的缺点是我们有效地将数据速率减半,命令字节进一步降低了速度。但与此同时,系统的可靠性也得到了显着提高。

数据完整性怎么样?我们可以通过在数据包中添加校验和来实现这一点,这样接收方就可以确保数据完好无损。一种简单的方法是对收到的所有字节进行异或,并将其用作校验和。如果任何一个位被误读,这将显示在XOR校验和中。如果同一列中的两个位被误读,则校验和保持不变,因此XOR仅对单位错误有效(但这些是最常见的)。

示例包

编写数字92(十六进制0x5C)

从设备读取(TX设备)请求数据,RX设备发送请求的数据)

的构建的的

该项目可以使用许多不同的电路构造技术构建,包括条形板,矩阵板,面包板和PCB。在这个例子中,我使用了在CNC机床上制造的PCB(通过隔离布线),但我正在考虑回到化学过程,原因将在后面的文章中讨论。

这也是我第一个包含使用XYZ da Vinci Jr. 3D打印机制作的自定义项目框的项目。设计本身(痛苦地)在Google SketchUp中制作,然后由于STL导出器插件导出为STL文件。然后,STL文件在XYZmaker中导入并打印。虽然这个项目盒不使用螺丝,但未来的设计将会如此。虽然3D打印的型号可能价格昂贵(这个盒子使用价值约1.00美元的塑料),但它是一种定制设计,可以制作近乎完美的功能,如切口和孔。

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

    关注

    9

    文章

    1823

    浏览量

    64464
收藏 人收藏

    评论

    相关推荐

    如何提高CAN总线的传输可靠性

    提高CAN总线的传输可靠性可以从多个方面入手,以下是一些具体的方法: 一、优化CAN总线设计 选择合适的传输介质 : 使用屏蔽电缆或光纤等高质量的
    的头像 发表于 11-21 10:26 113次阅读

    socket 数据传输效率提升技巧

    TCP :提供可靠的、有序的和错误检查的数据传输。适用于需要保证数据完整的场景。 UDP :提供快速但不可靠
    的头像 发表于 11-12 14:34 183次阅读

    CAN总线数据传输速率设置

    数据传输速度的指标,以每秒传输的位数(bps)来表示。 1. CAN总线概述 CAN总线由Bosch公司在1980年代开发,最初用于汽车工业,以取代传统的点对点布线系统。CAN总线以其可靠性、灵活性和成本效益而闻名,现已广泛应用
    的头像 发表于 11-12 10:03 167次阅读

    网络数据传输速率的单位是什么

    网络数据传输速率的单位是 bps(bit per second) ,即比特每秒,也可以表示为b/s或bit/s。它表示的是每秒钟传输的二进制数的位数。比特(bit)是计算机中数据量的单位,也是信息论
    的头像 发表于 10-12 10:20 882次阅读

    N型插座在数据传输中的应用有哪些

    德索工程师说道N型插座的低插入损耗特性意味着信号在传输过程中的衰减较小,从而保证了信号强度的稳定性和传输质量。低电压驻波比则确保了信号在连接器内部的稳定传输,减少了信号反射和干扰。这两个特性共同作用,
    的头像 发表于 09-26 15:17 259次阅读
    N型插座在<b class='flag-5'>数据传输</b>中的应用有哪些

    12芯M16插头数据传输准确怎样

     德索工程师说道12芯M16插头在数据传输准确方面表现出色,其设计特点和电气性能确保了数据传输过程中的稳定性和可靠性。以下是对12芯M1
    的头像 发表于 06-17 17:26 307次阅读
    12芯M16插头<b class='flag-5'>数据传输</b>准确<b class='flag-5'>性</b>怎样

    can总线的数据传输过程是什么

    CAN总线(Controller Area Network)是一种用于汽车和工业控制系统的通信协议。它具有高可靠性、实时和灵活性,因此在许多领域得到了广泛应用。本文将详细介绍CAN总线的数据
    的头像 发表于 06-16 10:18 2330次阅读

    8芯M16插头数据传输的准确

      德索工程师说道8芯M16插头作为高性能连接器,其数据传输的准确对于整个系统的稳定性和可靠性至关重要。以下是对8芯M16插头数据传输准确
    的头像 发表于 06-14 18:06 282次阅读
    8芯M16插头<b class='flag-5'>数据传输</b>的准确<b class='flag-5'>性</b>

    GMSL技术 实现高带宽、低延迟和高可靠性数据传输# ADI# GMSL# 汽车# 数据传输

    adi数据传输电机
    Excelpoint世健
    发布于 :2024年05月17日 16:34:25

    光纤布线如何保证数据可靠传输

    在当今的数字环境中,数据传输是技术进步的命脉,通信网络的稳定性和可靠性至关重要。随着对更快、更高效的数据传输的需求不断增长,创新者不断寻求解决方案来保证无缝连接;在这些解决方案中,光纤布线代表了
    的头像 发表于 04-07 10:34 315次阅读

    水利SL427协议是什么?水资源监测数据传输规约sl427

    结构、数据传输可靠性等。 SL427协议规约明确了水资源监测数据的标准格式,包括数据采集时间、地点、指标参数等统一字段的定义与编码标准,以
    的头像 发表于 03-16 17:30 617次阅读

    DTU的多种协议,解锁数据传输的无限可能

    DTU,即数据传输单元,是一种在物联网(IoT)网络中常用的设备,主要用于在传感器和智能设备之间进行数据传输。DTU使用多种协议来实现这一目标,这些协议不仅
    的头像 发表于 03-01 11:00 735次阅读
    DTU的多种<b class='flag-5'>协议</b>,解锁<b class='flag-5'>数据传输</b>的无限可能

    万兆电口模块:满足大规模数据传输需求的解决方案

    万兆电口模块具有高速传输、兼容好、可靠性高等优势,可以满足大规模数据传输需求,推动网络技术发展。
    的头像 发表于 02-26 16:27 555次阅读

    多业务光端机安全解析:保障数据传输可靠性与保密

    随着信息技术的飞速发展,数据的安全和保密已成为各行各业关注的焦点。多业务光端机作为一种高速、高效的光通信设备,在保障数据传输可靠性与保
    的头像 发表于 02-23 13:58 409次阅读

    让“可靠”变得“更快更安全”的数据传输协议:SCTP

    SCTP(Stream Control Transmission Protocol,流控传输协议)的出现,并不是万丈高楼平地起,而是站在TCP这个巨人肩膀上,让数据传输从“可靠”变得“
    的头像 发表于 12-28 17:25 1343次阅读
    让“<b class='flag-5'>可靠</b>”变得“更快更安全”的<b class='flag-5'>数据传输</b><b class='flag-5'>协议</b>:SCTP