您的位置 首页 报告

嵌入式体系上的异步串口通讯的完成

在嵌入式系统中,异步串口(UART)使用非常频繁,可以用于与各种外部系统(帧括PC)之间的通信。在硬件上UART通过在每个字节的传输中插入开始位和停止位,保证接收端可以正确地找到字节的开始和结束,

  在嵌入式体系中,异步串口(UART)运用十分频频,能够用于与各种外部体系(帧括PC)之间的通讯。在硬件上UART经过在每个字节的传输中刺进开端位和中止位,确保接纳端能够正确地找到字节的开端和完毕,一起也能够经过刺进奇偶校验位,让接纳端查验收到的字节是否正确。并且,因为有开端位和中止位的存在,使得字节之间能够刺进恣意的闲暇位(与中止位同为高电平),而不影响下一个字节的正常传输。因而,UART硬件确保了每个字节的正确传输,并能够有用检出字节传输的过错。但并不确保一串字节的正确传输,这需求软件来完结。

  从软件的视点来看,一切的通讯都是一串字节(叫做数据帧)的接连传输。软件需求选用恰当的机制来确保接纳端能够正确识别出一个完好的数据帧、能够查看接纳到的数据帧是正确的、在传输产生过错时有适宜的康复机制。为此就需求界说一个适宜的数据帧格局。

  数据帧的提取

  为了识别出一个完好的数据帧,根本上有两个机制:一是在软件上规则字节之间的距离最大值,一旦两个字节间的距离超越某个阈值,就以为一个数据帧完毕;另一种机制不对字节间的距离作规则,而是用特别的字节来界说数据报的开端和完毕,当收到该特别字节时,就以为一个数据帧的传输已完结。

  选用第一种机制的,比方Modbus-RTU。便是规则了同一个数据帧的字节距离不能大于1.5个字节的传输时刻,一旦大于该距离,则以为前一个帧的传输现已完毕,或许犯错。一起为了确保不同数据帧之间有满足的距离,还规则了两个数据帧之间最少刺进3.5个字节的闲暇位。下图摘自Modbus协议,表明了一个正确的数据帧、过错的数据帧以及数据帧之间的距离。一起在数据报中引入了CRC,用于检出数据帧层面的传输过错。

    

 

    

 

  第二种机制需求选用一个特别字节作为帧头帧尾(也能够给帧头帧尾选用不同的字节),比方说,选用0xFF作为帧头帧尾字节,也即发送端在每个数据帧的头尾都刺进至少一个0xFF,接纳端收到该字节就完毕上一个帧的接纳,一起从下一个非0xFF字节开端一个新的数据帧的接纳。但该机制有一个问题,那便是所选的特别字节(此处是0xFF)也可能是数据帧中的一个有用字节,假如不作特别处理,接纳端就可能把这个数据帧中的字节误以为是数据帧的完毕标识,然后导致接纳过错。因而,此处采纳字节替换的特别处理,以消除在数据帧的中心呈现的特别字节,以下是一个比方。

    

 

  在此处,选0xFE作为字节替换的标识字节,将0xFF替换成0xFE 0x0F。因为0xFE是字节替换的标志,也成了一个特别字符,相同需求进行替换。在上图中,将0xFE替换成0xFE 0x0E。

  选用该机制时,发送端对数据帧中的一切0xFF,0xFE进行替换。在接纳端则进行反向替换。假如在接纳端的0xFE后边的字节收到非0x0F,0x0E的字符,阐明产生了传输过错,丢掉现已接纳的内容,从头查找帧头字符开端一个新数据帧的接纳。

  数据帧的校验

  考虑到串口通讯有必定的误码率,无论是选用那种传输方法,必须有过错帧检出机制。一般选用的是CRC。一般用2个字节或4个字节。

  串口驱动的完结

  在嵌入式体系中,串口驱动的完结一般有两个途径:一个是经过串口的收发中止与串口控制器的Buffer直接交流数据;另一种是经过DMA,使用DMA与串口Buffer交互主动收发数据。

  与串口控制器直接交互的方法,完结简略,既能够实时进行字节替换以节约内存,也能够便利设置字节间的定时器。但频频打断CPU,对有必定BUFFER巨细的串口,还能够使用BUFFER进行功能优化,而对一些只要一个字节或两个字节BUFFER的串口,就需求一个字节起一次中止,假如CPU负荷较重,很简单因为中止处理不及时而导致字节丢掉,特别是在高波特率的状况。

  使用DMA与串口控制器交互的方法,因为不能实时进行字节替换,需求在放入DMA之前完结字节替换,导致占用较大内存空间。别的关于字节间距离灵敏的传输战略,需求用别的的机制,比方PRS,去操作定时器。用DMA的另一个问题是在接纳时无法实时确认帧尾(选用帧头帧尾形式时),一般只能选用定时器与DMA合作,用字节省的方法处理接纳。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/160991.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部