当前位置:首页 > 单片机 > 单片机
[导读]在利用单片机开发各种嵌入式应用系统时,异步串行通信是常用的一种通信模式,有的应用中还要求实现多路异步串行通信。人们平时所应用的各种厂商的单片机,绝大部分片上只提供一个UART(通用异步收发器)硬件模块,利用

在利用单片机开发各种嵌入式应用系统时,异步串行通信是常用的一种通信模式,有的应用中还要求实现多路异步串行通信。人们平时所应用的各种厂商的单片机,绝大部分片上只提供一个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单片机的特点,下面介绍一种常用且十分可靠的方法——三倍速采样法。

2 三倍速采样法
2.1 三倍速采样法的实现
    三倍速采样法就是以3倍于波特率的频率对接收引脚Rx进行采样,保证检测到起始位,又可以调整采样的时间间隔;将有效数据位的采样点控制在码元的中间1/3处,最大限度地减少误码,提高接收的准确性。将图1的起始位和部分数据位放大,如图2所示,把每个信息位分成三等份,每等份的时间宽度设为t ,以便于分析。
 
图2 三倍速采样法格式
    以三倍频对信息位进行采样时,每个信息位都可能被采样到3次。当处于空闲状态并检测起始位时,最早检测到起始位低电平的时刻必将落在S0阴影区,虽然每次具体的采样点会在此S0阴影区随机变化。检测到起始位低电平后,间隔4ts时间,正好是第1位数据位的中间1/3处(图2中Ds阴影区)。此后的数据位、校验位和停止位的采样间隔都是3ts ,所有采样点均落在码元的中问1/3处,采样数据最可靠。
    PIC单片机采用此法实现软件UART时,硬件上只需要任意定义两个I/O引脚,分别初始化成输入(串行数据接收)和输出(串行数据发送)即可。软件上只要实现定时采样,定时时间间隔在中档以上有中断机制的单片机上可以用不同的定时器(TMR0、TMR1、TMR2等),通过定时中断实现;在低档无中断的PIC单片机上可以控制每次主循环所耗的时间来实现。对于1200 bit/s波特率,码元宽度为833us,采样时间间隔即为278us。整个串行接收或发送是一个过程控制问题,用状态机方式实现最为高效简易。图3给出了串行接收的参考状态机转移过程。
 
图3 状态机转移流程

    接收端空闲状态为高电平,当收到低电平确认为起始位后,间隔4ts采样第1个数据位,然后每间隔3ts采样其它数据位,最后接收高电平确认停止位,数据接收完后回到空闲状态。如果起始位或停止位确认不对,程序均转入帧错误执行,回到空闲状态重新接收。
2.2 三倍速采样法实际应用
    文中对中档单片机PIC12F675进行了软件异步串行通信设计,在程序设计中,关键部分是TMR0的中断服务。当通信波特率为1200 bit/S时,TMR0采用278us左右中断一次,TMR0的中断响应就为软件UART接收和发送通信过程的实现。通过MPLAB高效的代码编译后,约有150条单字指令代码,整个中断服务平均用约35个指令周期,实现一路软件UART在4 MHz工作频率下占用MCU约12%的运行带宽,通信过程比较可靠。理论上,只要保证MCU留有足够的运行带宽给其他任务,在此中断服务程序内把接收和发送的代码再复制1份或多份(数据结构独立),即可实现多路软件UART。当然,如果每路的波特率不同,采样频率必须是最高波特率的3倍,不同波特率的采样点间隔要独立调整。
    该方法还在实际产品设计中都得到了很好的验证 最典型的是红外线自动抄表系统。该系统采用38 kHz红外调制,波特率为1200 bit/s的半双工串行异步通信。用软件实现此UART,并利用PIC单片机CCP模块的PWM输出38 kHz载波,在单片机外只须一个一体化红外接收头和一个红外发射二极管,即可完成所有设计要求,最大程度地减化了硬件设计,降低了成本,提高了系统的可靠性和性价比。

3 结束语
    综上所述,三倍速采样法最大的好处是软硬件配置灵活、经济可靠,接收发送的引脚可以任意定义,采样定时可以用不同的定时器实现,利用同一个定时采样可以方便地实现多路软件UART,无需复杂的外围电路,即可实现可靠的串行异步通信。但也有些不足,不管有无数据通信,始终占用MCU运行带宽,串行通信的波特率不能太高,4 MHz频率工作的PIC单片机一般只能实现2400 bit/s的全双工通信。为此,可以通过提高MCU的振荡频率来实现高波特率通信,比如PIC单片机工作在20 MHz时,就可实现9600 bit/s;而且其通信可靠性可通过在采样时刻多次采样、多种校验等方法得到进一步提高。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭