资源描述:
《增强型UART的原理及其应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第25巻第3期咸宁学院学报Vol.25,No.32005年6月Journa]ofXianningCollegeJun.2005文章编号:1006-5342(2005)03-0059-03增强型UART的原理及其应用"张红兵(咸宁学院计算机系,湖北咸宁437005)摘要:增强型UART(UniversalAsynchronousReceiver/Transmitter)是在标准型UART的基础上增加了帧错误检测和自动地址识别两种功能.帧错误检测通过检测一帧信息的停止位来判斯该帧是否有效.自动地址识别功能自动将收到的地址帧内容与单
2、片机的地址进行比较,只有匹配时才产生串行中断•这两个功能均由内置硬件电路完成,大大提高了串行通信的可靠性和效率.关键词:串行通信;帧错误检测;自动地址识别中图分类号:TP334.4文献标识码:A图1SCON和PCON中的位定义示意田SCON(98H)SCON(98H)»收稿日期:2005-04-08作者简介:张红兵(1964-),男,湖北黄梅人,咸宁学院计算机系副教授,华南理工大学机械工程学院在读博士生,主要从事嵌入式系统的开发和研究.在8051系列单片机中,多家厂商,如Intel.SST.STC等,都在原有的标准体系结构上为
3、内置的I/O端口增加了很多功能,其中通用异步接收/发送器,即UART(UniversalAsynchronousRe-ceiver/Transmitter)就是一例.增强型UART在标准UART基础上增加了两个功能,一个是帧错误检测,即FED(FramingErrorDetection)»另一个是自动地址识别,即AAR(AutomaticAddressRecognition).这两项功能均应用于串行通信的接收过程.1帧错误检测帧错误检测的功能是通过检测接收到的一帧信息的完整性来判断该信息是否可靠,该功能由内部硬件电路自动完成而
4、无需软件支持.串行接收信号线RXD上的第一个由高到低的变化表明是一帧的开始,正常情况下,当接收到第8个数据或第9个数据位后,就是停止位,此时RXD应出现高电平,且至少持续一个位的吋间•但如果出现通信故障则会在应该出现停止位的时刻却检测不到停止位•帧错误检测是通过硬件电路来判断这种情况,如果出错,则要求发送方重发,从而使得通信更为可靠•通信线路上的噪声、发送端和接收端的串行通信波特率不一致,或者是两个单片机同时向线路发送数据均会造成不正确的停止位.帧错误检测只在串行工作模式1、2和3中有效,模式0是同步串行通信协议,它不使用停止
5、位,因而不支持该项功能.使能帧错误检测的方法是将PCON寄存器中的SMOD0位置1.帧错误标志FE(FrameError)位于特殊功能寄存器SCON的最高位SCON[7],而SM0也使用同一个位,SM0用于串行通信模式的设定.SCON[7]是选择FE还是SM0,由PCON中的SMOD0位的置位或复位来选择,如果SMOD0=1,则SCON[7]=FE,如果SMOD0-0,则SCONL7]=SM0,见图1.一旦选择了FE,如果在串行接收时检测到无效的停止位,该位将置位,这个过程由硬件来完成.在接收到一帧数据后由软件来检测FE位并处
6、理任何可能的帧错误•无论FE是否置位,都不影60成宁学院学报第25卷响后续数据的接收.FE一旦置位,它只能由软件清除•即使后续帧接收正常,也不会因此而自动清除FE位.图2显示了在串行工作模式2和模式3中,使用了帧错误检测功能后,RI出现的时刻发生了变化.SMOD0为0时,RI出现在起始位之后的第9位,而SMOD0为1时,RI与FE出现在停止位,可见RI与FE是否置位与停止位是否正常息息相关.RXDDO05D6D7STOPIISMODOOSMOOOIFESM0DO1图2祯结构与RI.FE标志的时序图在软件编写上与标准型8051单
7、片机有两点区别•一是在初始化阶段,由于SCON[7]是SM0和FE的复用位,因此应当先使SMOD0=0,SM0有效,从而设置好SCON中的串行工作模式,然后使SMOD0=1,使能帧错误检测功能,SCON[7]成为帧错误检测标志FE.二是在接收到一帧信息后对FE进行检査,如果FE=0,则该帧信息有效,反之表明该帧无效,需要发送方重发.图3是査询方式接收一帧信息后的处理流程.■图3串行接收处理流存图2自动地址识别2.1作用和基本原理自动地址识别在多机串行通信中非常有用.多个单片机共用同一传输介质,主机向某个从机发送数据时需要识别从
8、机,因此每个从机都必须指定一个地址•当与从机通信时,主机首先传输地址帧,然后再传输数据帧•每个从机将收到的地址的情况下才开始接收后面的数据信息.对于标准型8051单片机,每一次地址帧都会产生串行接收中断,而无论该地址帧是否与自己匹配,然后在软件中将地址帧内容与自己的地址进行比