新闻中心

EEPW首页 > 嵌入式系统 > 学习方法与实践 > PIC单片机软件异步串行口实现技巧

PIC单片机软件异步串行口实现技巧

——
作者:美国微芯科技咨询(上海)有限公司 张明峰时间:2007-12-29来源:《单片机与嵌入式系统应用》收藏

       在用开发各种应用系统时,串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路串行通信。大家平时熟悉的各种厂家的,绝大部分片上只提供一个硬件UART模块,利用它可以方便实现一路串行通讯。

        系列也不例外,在其丰富的产品家族成员中,除高端系列(17/18)一些型号片上带有两路硬件UART模块外,其它大部分型号片上只有一路UART,一些低端廉价的单片机甚至还不带硬件UART。为了提高系统的性能价格比,就要求设计工程师用增加实现一路或多路串行通信。很多工程师对用实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是看采用何种方式来实现可靠的UART功能。 
  

       在讨论具体实现方式前,我们先来简单回顾一下异步串行通信的格式定义。发送一个完整的字节信息,必须有“起始位”、“若干数据位”、“奇偶校验位”和“停止位”;必须定义每位信息的时间宽度——每秒发送的信息位个数,即为“波特率”。单片机系统中常用的波特率从300~19 200 b/s。当波特率为1200b/s时,每个信息位的时间宽度为 1/1200≈833μs;无数据通信时,数据线空闲状态应该是高电平,“起始位”为低电平,数据位低位先发且后跟奇偶校验位(若有),“停止位”为高电平,如图1所示。


             
                                       图1

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

  1  三倍速采样法

  三倍速采样法顾名思义就是以三倍于波特率的频率对接收引脚Rx进行采样,保证检测到“起始位”,又可以调整采样的时间间隔;将有效数据位的采样点控制在码元的中间1/3处,最大限度地减少误码,提高接收的准确性。我们把图1的起始位和部分数据位放大,如图2所示,把每个信息位分成三等份,每等份的时间宽度设为ts,以方便分析。


         
                                         图2

  以三倍频对信息位进行采样时,每个信息位都将可能被采样到三次。当处于空闲状态并检测起始位时,最早检测到起始位低电平的时刻必将落在S0阴影区,虽然每次具体的采样点会在此S0阴影区随机变化。检测到起始位低电平后,间隔4

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭