碧波液压网 欢迎你,游客。 登录 注册

基于PIC软件设计串行异步通信三倍速采样方法

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  在利用单片机开发各种嵌入式应用系统时,异步串行通信是常用的一种通信模式,有的应用中还要求实现多路异步串行通信。人们平时所应用的各种厂商的单片机,绝大部分片上只提供一个UART(通用异步收发器)硬件模块,利用它可以方便地实现一路串行通讯。PIC系列单片机也不例外,在其丰富的一系列产品中,除高端系列(PIC 17/18)一些型号片上带有2路UART硬件模块外,其他大部分型号片上只有1路UART,一些低端廉价的PIC单片机甚至还不带硬件UART。为了提高系统的性价比,要求设计者用软件实现1路或多路异步串行通信。很多人对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是采用何种方式来实现可靠的UART功能。

  1 串行异步通信的基本协议

  1.1 起止式协议的原理

  起止式异步协议是串行异步通信的基本协议,特点是逐个字符传输,并且传送单个字符总是以起始位开始,停止位结束,字符之间没有固定的时间间隔要求,它的数据格式是靠起始位和停止位来实现字符界定的,故称为起止式协议。

  起止式协议的格式定义为:对于一个完整的字符信息,必须包括起始位、若干数据位、奇偶校验位和停止位;必须定义每位信息的时间宽度—— 每秒发送的信息位个数,即为波特率。单片机系统中常用的波特率为300 bit/s~19200 bit/s。当波特率为1200 bit/s时,每个信息位的时间宽度为1/1200≈833(us);无数据通信时,数据线空闲状态应该是高电平,起始位为低电平,数据位低位先发且后跟奇偶校验位(若有),停止位为高电平,如图1所示。

  

图1 起止式串行异步通信的格式

  1.2 起止式协议的优劣

  起止式协议是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以该异步串行通信的可靠性高。但由于要在每个字符中加上起始位和停止位这样一些附加位,使得传输效率变低,只有约80%。因此,该通信协议一般用在数据速率较慢的场合(小于19.2 kbit/s)。在高速传送时,一般要采用同步协议。

  按图1最基本的异步串行通信时序,软件实现UART在不同架构的单片机上有多种方法。其中数据接收是关键,因异步通信没有可参照的时钟信号,发送方随时都可能发送数据,任何时刻串行数据到来时,系统都应该及时准确地接收。比较而言,本机发送串行数据相对容易,只要对发送出去的电平做持续时间的定时即可。按不同的接收技巧并针对PIC单片机的特点,下面介绍一种常用且十分可靠的方法——三倍速采样法。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论