基于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单片机的特点,下面介绍一种常用且十分可靠的方法——三倍速采样法。
相关文章
- 2023-03-02智能化色谱分析软件的研究与应用探讨
- 2024-07-31铁路客车提速轴承外圈非基准端面挡边平行度测量仪的研制
- 2022-04-27监控摄像机日夜及彩色黑白转换两用简析
- 2024-07-09多CCD拼接相机中图像传感器不均匀性校正
- 2024-02-26实现同一分析周期内两流路并行分析的技术改造



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