网站大量收购独家精品文档,联系QQ:2885784924

两种mcu间的串行通信协议设计.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
两种MCU间的串行通信协议设计 引言 Cortex-M3是ARM公司推出的32位处理器,使用了必威体育精装版一代的ARMv7架构,具有高性能、低功耗和低成本的优点。对那些对功耗与成本敏感、但又要求较高性能的嵌入式应用来说,Correx-M3无疑是最佳解决方案;而对成本要求苛刻、运算能力要求不高的设备来说,嵌入成熟稳定的8051处理器,已经成为了业内的流行做法。目前,越来越多的嵌入式系统同时使用了上述两种MCU,因此如何使Cortex-M3与8051之间可以高效地进行信息交互,是实现设计目标的关键。1 方案设计 要进行信息交互,离不开物理接口。在嵌入式应用中,目前常用的接口有UART、SPI和I2C等串行接口。UART接口只需两根数据线就可以工作,时序控制简单,大部分设备都整合了这种接口。而且,经过电平转换后UART的TTL电平可以转换成RS232电平,RS232接口是计算机标准配置的通信接口,可以通过超级终端查看串口的数据,便于使用PC机对线路进行检测分析。因此,本设计采用UART接口作为Cortex-M3与C51之间的通信接口。 考虑到各种需求,本文设计了一种基于UART接口的,用于Cortex-M3和C51之间的通信协议,使Cortex-M3与C51之间可以高效地进行信息交互。当两个MCU之间需要进行通信的时候,发送方把原始数据下放给通信协议,通信协议按照特定格式把数据打包,通过UART接口发送给对方。接收方收到数据时,MCU运行相应的通信协议,把数据解包,就可以得到发送方的原始数据,将其交付给上层程序。体系结构。 如果使用其他串行接口,原理大体相同,只需对硬件作相应改动,即对接口控制模块稍作修改即可投入使用。 下面以实际工程中某种多媒体系统为例详细说明。该系统采用了以Cortex-M3为内核的STM32处理器和嵌入了C51核的MST776视频处理芯片,使用UART接口进行通信。2 具体实现2.1 硬件设置 具体的器件不同,UART的工作方式也有所区别,主要表现在波特率、停止位、数据字长度等参数上。当两个器件用UART连接时,所有参数必须完全一致,否则通信很容易出错。在此,要特别注意波特率的设置:当线路质量好的时候,波特率可以设置得高点,以获得较高的传输速率;线路质量差的时候,就要减小波特率,以降低误码率。 本设计中,STM32与MST776都整合了UART接口,只需配置少量电阻;同时,线缆长度不超过20 cm,使用环境的电磁干扰小,波特率可以设置为38 400bps,甚至更高。另外,考虑到C51的处理速度较低,因此波特率不应设置得太高,避免造成C51侧数据溢出,进而造成死机。 本设计只需使用两根数据线来实现两个MCU之间的互连,把STM32上选定的UART接口的TX与对端的UART接口的RX相连,把RX与对端的UART接口的TX相连。2.2 软件设计2.2.1数据帧解析 Cortex-M3侧和C51侧采用同样的数据帧格式,以简化编程的难度,增强程序的可移植性。数据帧由起始标识符、数据长度、类型ID、通信内容、循环冗余校验码构成,。 (1)起始标识符 起始标识符的作用主要是用于定界,把不同的数据帧在一连串的数据中分离开来。起始标识符内的数据不能与数据帧中可能出现的任何数据相同,否则会引起歧义,导致定界失败,造成数据错误。在本例中,为2个字节,选用0xFF+0xAA,因为该组合与其他数据具有排他性,不会引起歧义。 (2)数据长度 数据长度的计算方法为,从该位开始,到最后一个数据位结束,也就是CRC校验位之前的一个字节。虽然使用Length位可以表示很长的数据帧,但在应用中应尽量采用短帧,以避免各种干扰因素造成少数数据位出错,导致大量数据无效,影响通信效率。同时,应该设置一个最大发送长度,以便设置超时重传计时器的值。本例采用1个字节,最大帧长为260个字节。 (3)类型ID 根据实际需要,类型ID可以采用1个或多个字节,用于表示该数据帧的作用类型。本例中,采用1个字节,可以表示256种作用类型,例如设备参数帧(如音量)、线路探测帧或应答帧。 (4)通信内容 通信内容与类型ID结合,表达特定意义。相同的Data,但ID不同的话,表达的信息不一样。根据不同的ID,Data的长度可能会有所不同。 (5)循环冗余校验码 循环冗余校验码用于校验接收到的数据是否在传输过程中出错。本例中采用CRC-16算法,占2个字节,对从起始标识符开始到最后一个通信内容位的所有数据进行运算,把得到的结果附在最后。2.2.2 收发流程 发送流程:将要发送的数据添加起始标识符和长度后,计算CRC-16校验码,附在最后,形成一个完整的数据帧,然后通过UART发送出

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档