|_F5DU| U.D00 引言
O'Xr$w.c`8Q,\D0电子园51单片机学习网 gA*kR{AES 嵌入式系统开发已经进入了32位时代,8位MCU市场趋于稳定,32位的MPU代表着嵌入式技术的发展方向。然而,作为嵌入式系统低端应用的代表,8位单片机在家用电器、仪器仪表等领域仍然被广泛应用;而且随着IC技术的不断发展,单片机的扩展能力越来越强,8位单片机的开发、应用仍然受到很大重视。电子园51单片机学习网t4G oIp&tC0vvM
随着网络技术和通信技术的不断发展,对单片机的通信能力要求越来越高,异步通信技术通信距离远、节约成本、通信可靠,特别是以其通信速度越来越快的特点广泛应用在分级、分层和分布式控制系统以及远程通信中,尤其适合单机转向多机或联网的应用方向。目前普遍应用的MCS-51系列和其他一些专用的单片机通常只具有一个UART异步串行通信接口,而在实际应用系统中(如在多机通信系统中,主机既要和从机通信又要和终端通信)往往需要多个串行接口。对于三总线开放的单片机,通常的方法是利用Intel 8251或8250通用同步/异步收发器(USART)对系统进行扩展,这就增加了系统开发的硬件开销和成本。而且有些专用单片机(如ST62T32B)的三总线是不开放的,无法用通信接口芯片来扩展接口,给多机通信带来困难。本文仅仅利用51单片机内部的扩展模块(一个I/O端口、一个定时器T/C和一个外部中断INT)实现了一个通用的软件UART,可以以4800、9600、19200的波特率接收和发送数据,没有使用任何外围器件,通信可靠性高,节约了开发成本,而且软件使用C语言编写,具有很好的移植性。该软件UART已在多个单片机系统中应用,工作稳定可靠,是一种可以借鉴的通信方案。
1 异步通信简介电子园51单片机学习网%xq0sy7a5}
iL5P1ILS^xZ0 在异步通信中,数据通常是以字符(字节)为单位组成字符帧进行传送的。字符帧由发送端一帧一帧的发送,通过传输线在接收端一帧一帧的接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟彼此独立、互不同步。另外,发送端和接收端通过字符帧规定的格式和波特率来协调数据发送和接收。字符帧和波特率是两个重要指标,由用户根据实际情况选择。电子园51单片机学习网j/z ebd
字符帧由起始位、数据位、奇偶校验位和停止位四部分组成,如图1所示,各部分的功能和结构为:
3Z.xg!o:DV!Ko.T0 起始位 位于字符帧的开始位置,占一位,使数据线处于space(逻辑0)状态,用于向接收设备表明发送端开始发送数据。电子园51单片机学习网opn;T7h6Vaj6k
电子园51单片机学习网mf6^l)v0_g9f:x
数据位 紧跟起始位之后,根据字符编码方式的不同可取5位、6位、7位和8位。在数据传送过程中,低位在前,高位在后。如传送数据为ASCII码,则常取7位。
yJ e M~!f0 奇偶校验位 位于数据位之后,占一位,用于对数据传送作正确性检查。奇偶校验位有三种选择,即奇、偶和无校验,由用户根据需要设定。
xP#M'NEkl0 停止位 位于字符帧末尾,可占1、1.5和2位,在实际应用中由用户根据需要确定,它对应于mark(逻辑1)状态,用于向接收端表明一帧信息发送完毕[1]。电子园51单片机学习网,Mi$|EGNI:c w6\
ot5_-O&},R02 通用软件UART的设计思想
&f p$eM5\0,c4NP Sr0电子园51单片机学习网`cO1R p8Vp
表格 1不同波特率对应的定时器初值电子园51单片机学习网QU1F1yG
+i]}D`d0 由于该通用软件UART发送和接收过程中使用的是同一个定时器,因此是一个半双工的软件UART。在软件中利用宏定义和条件编译实现了根据用户需要对数据帧的格式和波特率进行设置,提高了软件的可移植性。电子园51单片机学习网Gf5CaU_b
电子园51单片机学习网 VFW-z#q(hG3 通用软件UART的实现电子园51单片机学习网H)^,Yg[U)F2B
,g/D)q'oN6@0 发送
p[Oy@bf0 发送过程采用的是单片机主动控制I/O端口,根据设置好的数据帧格式将数据发送出去,在发送过程中为保证每个发送位的发送时钟相同而将其它无关中断关闭。首先,设定定时器为定时初值,启动定时器,关闭其它无关中断,然后开始发送数据帧;发送完起始位space之后,通过循环结构将移位寄存器中的数据按照从低到高的顺序发送出去,同时计算数据的奇偶校验位,并在发送完数据位之后发送出去,最后发送停止位mark;关闭定时器,开放中断,一帧数据发送结束。发送流程图见图2。电子园51单片机学习网Ssy$lwc
接收电子园51单片机学习网 {Hw-L|
接收过程利用单片机的外部中断实现。将中断源的触发方式设置为下降沿触发,当出现中断时在中断处理程序中接收数据,并将数据放入提前设定的缓冲区内,等待单片机将数据读取。在数据读取的过程中,为了保证数据读取的正确性,必须在每个数据位的中间进行数据采样。在主程序中设置外部中断的触发方式,并将该中断设置为高优先级以保证连续接收数据,然后等待外部中断产生;在中断处理程序中,首先设置定时器初值,启动定时器,关闭其它无关中断;然后等待一个半位时钟,使采样点落在第一个数据位的中间位置,接着通过循环结构将数据读入移位寄存器,同时计算奇偶校验位,接收完毕后如果奇偶校验正确则将数据放到数据缓冲单元中,否则弃之不用;最后关闭定时器,恢复中断。接收流程图见图3。电子园51单片机学习网&Dd9d e#\S.~|q
在接收和发送的过程中需要注意的问题是中断响应时间校准、计数定时器T/C的溢出校准和实时读取。为了能够及时、连续、准确的发送和接收数据帧,在实际的应用过程中需要对定时器初值进行相应的调整,并且在发送和接收的过程中要将无关的中断关闭。电子园51单片机学习网"[ ~QDL(Bun9Z
*vX(kkao+@04 结论电子园51单片机学习网I Gu9v2Ow/R#s#m
电子园51单片机学习网8HH9XI(U,xA v本文实现的通用软件UART在多个工程项目中得到应用,并且经过多次改进使之具有了较好的可移植性,加快了系统的开发速度,可以应用在各种51系列的单片机中,并且达到了降低应用系统硬件开销、提高单片机资源利用率的目的。是一种值得推广的系统设计思想。
]N@i,n)W;AX.\0电子园51单片机学习网)a(BZ4EaJrL参考文献
5z^;Si zYc0电子园51单片机学习网Sz5t$Tr Q[1] 赵晓.MCS-51单片机原理及应用[M].天津:天津大学出版社,2001.187-200
/_o7T$B2I2@L7j0[2] 何立民.单片机应用技术选篇 6[C].北京:北京航空航天大学出版社,1999电子园51单片机学习网8Xb4T^2V8`N:k.]
[3] 李伟.基于ST62T32B单片机I/O口的异步串口的软件实现[J].浙江工程学院学报,第20卷,第3期:193-196电子园51单片机学习网~H&aNm-CyN
[4] 闫玉德,俞虹.MCS-51单片机原理及应用(C语言版)[M].北京:机械工业出版社,2003
(G Adr!M7na \0[5] 徐爱钧,彭秀华.单片机高级语言C51 Windows环境编程与应用[M].北京:电子工业出版社,2003电子园51单片机学习网 \{D%N+@E#t%m Ks
2.1 MPC8260简介
)KF |3A;vQ"o0 MPC8260是目前较先进的为电信和网络市场而设计的集成通信微处理器。由于采用了双处理器体系结构,用通信处理模块(CPM)分担了嵌入式PowerPC核的外围工作任务,其功耗要低于传统的体系结构的处理器,在各方面都有较高的性能,具有更大的灵活性、扩展能力和更高的集成度。它有三个主要的组成部分:嵌入的PowerPC内核、系统接口单元SIU和通信处理模块(CPM)。通信处理模块提供两个通用测试和操作物理接口(UTOPIA),能够实现155Mbps ATM SAR功能。它用硬件完成了ATM及ATM适配层(AAL)层的功能,大大降低了ATM技术的实现复杂度。它支持AAL0/AAL5/AAL2等适配技术,对每个连接,可由用户定义一个连接结构,实现用户的业务类型及服务质量需求,有很大的灵活性。电子园51单片机学习网d9I/gW,H4ch;z
2.2 ATM步长控制器原理分析电子园51单片机学习网$[6T9sv!swhz
Oy0K9d}C?b^0 电子园51单片机学习网 K}8p+t L1z/@ x
如图1所示,每个UTOPIA接口最多支持32个PHY,每个PHY最多支持八个优先级,能很好的满足现有ATM论坛定义的六种业务类型:CBR,恒定位速率;VBR,可变位速特率;ABR,可用位速率;UBR,未指定位速率;GFR,保障帧速率;VBR又可分为实时或非实时的。对各种业务,提供了不同的参数来实现业务成形算法。对CBR业务,提供了峰值信元速率(PCR、定义了可发送给ATM网络的业务量上限);对VBR业务,提供突发容限(BT、决定放入漏桶的令牌的最大数目)及可维持信元速率(SCR、决定一个令牌放入存储段的时间);对于实时业务,定义了最大允许迟延(MDA),如果服务迟延大于MDA,APC根据最小信元速率(MCR)参数重新调度此通道。如果迟延小于MDA,根据PCR重新调度。利用这些优先级,可根据服务类型,合理分配优先级,达到最大限度的利用资源满足用户需求的目的。
_h4yD3F k0 MPC8260用APC(ATM步长控制器)来实现信元的多路复用。对从多个虚电路过来的信元,它根据信元的速率、优先级进行调度发送。对每个优先级,都有一个调度表,通道按照一定的调度周期放在调度表入口。当PHY有空间允许信元发送时,它就发出一个TxClav信号。CPM(通信处理器)检查调度表,若发现调度表中有通道,则发送此通道一个信元,并将此通道按一定周期重新调度;否则发送空信元。各个通道都有一定优先级及相应的调度周期。调度周期由虚电路的速率决定,速率越大,调度周期越短,这样,就满足了信元的多路复用及各虚电路的QoS保证。值得注意的是,在MPC8260中,不是直接以标识符为VPI/VCI的虚电路为单元进行调度的,而是要通过一定的地址查找算法将VPI/VCI映射为CPM通道号。 MPC8260支持两种地址查找算法:一种是外加硬件模块来完成,另一种通过软件完成,即二级地址压缩算法。在通道数不是很多时,可以采用二级地址压缩算法来完成地址的查找。VP表为一级表,表单里面是VC表的入口地址,VC表为二级表,表单内容即为通道号。电子园51单片机学习网ip X P~
3 ATM驱动设计重点问题。
2`nu!V#{7W%F1u03.1 VxWorks网络模块分析
-Vg'UM*S0VxWorks是WindRiver 公司开发的具有工业领导地位的高性能实时操作系统,它具有可裁剪的微内核结构、高效的任务管理、灵活的任务间通讯及先进的网络功能。其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。要在实时操作系统VxWorks下开发基于MPC8260的ATM驱动。首先,对VxWorks网络模块进行分析。分析IP使用AAL5通过ATM网络传输数据报的情况。IP层在收到由应用程序接口传过来的数据,把它交给网络接口处理。网络接口完成的功能是:在发送数据前,必须建立到目的主机的一条虚电路(PVC或SVC),并且两端必须同意在该电路上使用AAL5。为了传输数据报,发送方将数据报以及标识电路的VPI/VCI一起传给AAL5。AAL5产生一个信尾,将数据报拆分为许多信元,然后将这些信元通过网络进行传输。在接收方,AAL5将这些信元装配成为数据报,检查校验和(CRC),确定没有比特丢失或出错,然后提取出数据报,并把它传给IP。这里的网络接口层实际上就是指ATM网络设备驱动。电子园51单片机学习网-Uq8t"C X:m|%A$b9H
VxWorks中支持了两种类型的网络设备驱动程序-VxWorks BSD 4.3网络驱动程序和VxWorks可裁减的增强型网络堆栈(SENS,Scalable Enhanced Networks Stack)。Wind River把专为使用SENS网络堆栈而编写的网络接口设备驱动称为增强的网络驱动程序(END,Enhanced Network Driver)。SENS模型独立于硬件设备接口,它将网络设备驱动程序细化,使开发者能专注于驱动程序(END驱动程序)本身的开发。在驱动程序与上层协议(例如TCP/IP)之间,SENS模型提供了协议驱动层。在协议层与驱动程序之间,SENS提供了MUX层。MUX层直接与END驱动程序相交互,其应用程序接口提供了独立于网络协议的驱动程序接口,可以与多个独立的END驱动程序同时交互。MUX层管理着网络协议接口和底层驱动程序之间的通信,使发送、接收数据的过程变得简单,而不需要再通过挂接钩子程序的方法解决。
SO;Tzc03.2 ATM驱动开发重点问题电子园51单片机学习网vw"xS!T(~~Y6[G
END驱动程序开发有一套模板,本文主要探讨在这种模式下开发ATM驱动所要注意的重点问题。电子园51单片机学习网!V:`b[!]2K
3.2.1用户定义的特殊驱动数据结构电子园51单片机学习网zCZz+o/wG K
(1)驱动程序控制结构
#V Fli;Wb0在MPC8260的ATM驱动设计中,除了应符合END驱动设计要求外还应充分考虑用户需求及硬件性能设计相应数据结构。首先,要为网络设备定义一个驱动程序控制结构。驱动程序通过这个结构获得所需的资源并进行相应的处理。其中,这个结构必须包含END_OBJ结构,并放在该结构的第一项。该结构中的内容是跟据网络设备和用户的需要而设计的。除了第一项,驱动控制结构的主要元素有:设备单元数、中断向量及中断级、ATM的mac地址以及有关缓冲操作的结构及函数指针等。需要指出的是,在这个结构中,还应注意物理层线速率、最大虚电路速率、最小虚电路速率的定义,因为在后续的工作中,要跟据这几个参数定义各个虚电路的传输速率、调度周期以及APC调度表的长度。电子园51单片机学习网 E1j ]"^2rr-~
(2)通道连接结构
0`u"T&q/@^DF Iq0在ATM驱动中,与众不同的是:因为ATM是面向连接的,在此设备控制结构中,需要定义一个通道连接结构来管理虚电路的连接。此通道连接结构的主要元素有:通道标识、业务类型、发送连接表、接收连接表、发送缓冲描述符(BD)链表、接收BD链表等。业务类型定义了由通信的两个主机协商好的业务类型。发送、接收连接表是为匹配MPC8260的硬件要求定义的。在发送连接表中,定义了通道的虚电路标识、ATM适配类型、发送速率、业务成形参数、BD基址以及连接表的状态、控制信息。接收连接表中,定义了通道的ATM适配类型、最大接收缓冲长度、接收BD基址以及连接表的状态、控制信息。
^@A`r03.2.2设备驱动程序表
dBP,u+y0(1)初始化函数电子园51单片机学习网Be&uV'in6F"Az^7?k
在装载设备驱动程序前,需要对设备驱动程序表进行初始化操作。一般来说,设备驱动程序表包含有:设备启动函数、设备停止函数、驱动程序的卸载函数、控制函数、数据发送函数等。ATM的启动函数相对于以太网的启动函数来说,有一定的复杂性。它除了进行必要的硬件初始化工作如初始化物理层线速率、初始化MPC8260的快速通信控制器(FCC)参数ram使其工作在ATM模式等;还需要根据ATM通道-VPI/VCI映射算法,初始化两级地址查找表并需要注册好用户所需的虚电路以及初始化好这些虚电路的发送、接收连接表结构。电子园51单片机学习网O"u ?3X a5A g ]X
(2)数据发送函数电子园51单片机学习网,J;B(mzWQ/~m4W
数据发送函数需完成的功能是从协议栈的缓冲区中取出需要发送的IP包,并把IP地址取出,查地址解析表,得到VPI/VCI,再经二级地址映射表,找出此虚电路对应的CPM通道。把VPI/VCI写入此通道连接表结构中的信元头。对数据缓冲的操作:为了节省拷贝缓冲的时间损耗,只传递缓冲指针,把IP包的数据缓冲地址指针赋给此通道对应的发送BD(缓冲描述符)环的缓冲地址,通过对BD状态的控制,来达到发送的目的。在本例中,采用手动发送模式,即准备好BD及BD缓冲后,对CPM的CPCR寄存器发出发送指令,ATM的发送器就会自动完成数据包的拆分(拆分为48字节)给每个信元(48字节)净荷加上5字节的信元头,并根据此通道的调度周期逐个、有序的发送信元。
'ur B V-n)y0(3)数据接收处理函数电子园51单片机学习网K)I6a m)od+}
数据的接收在中断服务程序里完成。根据中断的特点,中断处理程序必须分为两个部分 ,第一部分是响应中断的函数 ,它需要被绑定到 BSP分配的中断向量上。它不能有耗时较大的操作,只能进行状态位出错比如溢出、繁忙之类的处理;第二部分是对数据帧的处理,这个函数可以用系统函数(netJobAdd( ))在响应中断的函数中向网络工作队列添加新的工作 ,这将唤醒网络处理任务去调用相应的数据帧处理函数处理数据帧。中断处理程序发现有RxF/RxB(接收帧/接收缓冲)事件(在ATM发送器完成一个数据帧或一个缓冲后,会将此位置1)后,它会用netJobAdd( )函数把接收处理函数放在网络工作队列中。在接收处理函数中,从中断队列0(MPC8260一共提供了4个可用的中断队列,建议发送、接收分别使用一个中断队列。在本例中,定义了两个中断队列,队列0用于接收事件、异常;队列1用于发送事件、异常)取出发生此中断的CPM通道号。并跟据此通道结构得到相关的接收连接表、BD信息等。接收函数完成的功能为:在通道接收到信元时,通过此通道号,查找地址映射表得到此通道对应的虚电路标识VPI/VCI,并查IP-ATM地址对应表,得到此信元要发往的IP地址。用VxWorks下的内存分配函数申请Mblk缓冲区(VxWorks的缓冲结构),并遵循一定的方法把接收到的数据缓冲、IP地址组合成完整IP包,保存在相应的Cluster(VxWorks实际存放数据包的缓冲区)中,供协议栈调用转发。
qSU)}/|Q03.2.3 IP与ATM地址映射算法电子园51单片机学习网/Hh~Y~ b$y
还有一个重要问题就是,标准的VxWorks协议栈不提供ATM协议栈。这就是说,需要由用户完成CLIP (classical IP over ATM)协议,此协议由RFC2225规范,主要功能有:把IP包进行ATM适配以及完成IP地址与ATM逻辑地址VPI/VCI(虚通道标记/虚电路标记)的映射。对于PVC连接,由网络管理员配置好每一条PVC。对于SVC,需要在一个逻辑子网内配置ATMARP(ATM地址解析)服务器,此服务器维护一个数据库,保存着从IP地址到ATM地址的映射。通过此ATMARP服务器来实现同个逻辑子网内需要建立新连接的两个主机之间的地址查找。在我们的设计中,根据实际需要,只要以PVC方式与ATM交换机通信,再由交换机完成最终的路由转发。所以,我们只需维护一个简单的IP-ATM地址映射表,通过查找这个映射表,就可以在正确的虚电路上传输数据。
*@m4R6R+W l e04 总结
Aai:@"?8z0根据以上的方法,我们设计开发了基于MPC8260在VxWorks实时操作系统下的ATM驱动。我们根据应用需要,设计了三种业务类型:AAL2适配,采用微信元用来传送压缩过的语音,设置为实时VBR业务类型,采用BT、SCR进行业务流成形,优先级为最高级0;AAL5适配,设置为CBR类型,用来传送信令,采用PCR进行业务流成形,优先级为次高级1; AAL5适配,用来传送数据,设计为UBR业务类型,无需业务流成形,优先级为低。用户也可以在此驱动基础上添加或减少虚电路类型来满足业务需求。在充分测试、应用成熟的基础上,可以把此模块流片成SOC(片上系统),嵌入到3G移动通信系统中或其他通信设备中。
&lAF'Da-oL G0参考文献电子园51单片机学习网WJV?2n+^([
1 MPC8260 PowerQUICC User's Manual MOTOROLA
L1no5Z6n!X02 Tornado BSP Developer's Kit for VxWorks Wind River
j@o6Q%XY-z&hR+F03 Tornado User's Guide Wind River电子园51单片机学习网!b+D!A1}9P$M/eR0a
4 VxWorks Network Programmer's Guide Wind River电子园51单片机学习网5E b5@#[UX+my
5 Cisco ATM 解决方案 电子工业出版社
Z)Cmf1w;^@06 VxWorks下设备驱动程序及BSP开发指南 中国电力出版社摘要:通过对UART技术的研究,提出了一种利用软件实现UART的单片机扩展方法,没有使用任何外围器件,仅仅利用单片机的一个I/O端口、一个T/C技术定时器和一个INT外部中断并通过软件编程实现,节约了系统开发过程中的硬件开销,并且具有良好的软件兼容性,提高系统开发速度。电子园51单片机学习网GJsa0Q1Tx4~$X
关键字:软件UART;异步通信;帧;波特率电子园51单片机学习网P Sy@A
0 引言
Cd;E#yB2_X:e{&m!?0嵌入式系统开发已经进入了32位时代,8位MCU市场趋于稳定,32位的MPU代表着嵌入式技术的发展方向。然而,作为嵌入式系统低端应用的代表,8位单片机在家用电器、仪器仪表等领域仍然被广泛应用;而且随着IC技术的不断发展,单片机的扩展能力越来越强,8位单片机的开发、应用仍然受到很大重视。
2cL t.SV+[0随着网络技术和通信技术的不断发展,对单片机的通信能力要求越来越高,异步通信技术通信距离远、节约成本、通信可靠,特别是以其通信速度越来越快的特点广泛应用在分级、分层和分布式控制系统以及远程通信中,尤其适合单机转向多机或联网的应用方向。目前普遍应用的MCS-51系列和其他一些专用的单片机通常只具有一个UART异步串行通信接口,而在实际应用系统中(如在多机通信系统中,主机既要和从机通信又要和终端通信)往往需要多个串行接口。对于三总线开放的单片机,通常的方法是利用Intel 8251或8250通用同步/异步收发器(USART)对系统进行扩展,这就增加了系统开发的硬件开销和成本。而且有些专用单片机(如ST62T32B)的三总线是不开放的,无法用通信接口芯片来扩展接口,给多机通信带来困难。本文仅仅利用51单片机内部的扩展模块(一个I/O端口、一个定时器T/C和一个外部中断INT)实现了一个通用的软件UART,可以以4800、9600、19200的波特率接收和发送数据,没有使用任何外围器件,通信可靠性高,节约了开发成本,而且软件使用C语言编写,具有很好的移植性。该软件UART已在多个单片机系统中应用,工作稳定可靠,是一种可以借鉴的通信方案。
{\_0lD01 异步通信简介电子园51单片机学习网 oV3Z`6DF}5Y2q
在异步通信中,数据通常是以字符(字节)为单位组成字符帧进行传送的。字符帧由发送端一帧一帧的发送,通过传输线在接收端一帧一帧的接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟彼此独立、互不同步。另外,发送端和接收端通过字符帧规定的格式和波特率来协调数据发送和接收。字符帧和波特率是两个重要指标,由用户根据实际情况选择。
h$C+v3M Pzg m3Ez0字符帧由起始位、数据位、奇偶校验位和停止位四部分组成,如图1所示,各部分的功能和结构为:电子园51单片机学习网 _/v7k3Ln6`
起始位 位于字符帧的开始位置,占一位,使数据线处于space(逻辑0)状态,用于向接收设备表明发送端开始发送数据。电子园51单片机学习网i3K,s2zD0oh%Q ~
电子园51单片机学习网O9GbF)^1~s
数据位 紧跟起始位之后,根据字符编码方式的不同可取5位、6位、7位和8位。在数据传送过程中,低位在前,高位在后。如传送数据为ASCII码,则常取7位。
7z9DUrOQ0奇偶校验位 位于数据位之后,占一位,用于对数据传送作正确性检查。奇偶校验位有三种选择,即奇、偶和无校验,由用户根据需要设定。
+J,e6n)@ TRLRi0停止位 位于字符帧末尾,可占1、1.5和2位,在实际应用中由用户根据需要确定,它对应于mark(逻辑1)状态,用于向接收端表明一帧信息发送完毕[1]。
,XX0d/M |5}d,K'v^02 通用软件UART的设计思想
Z/] ]]b{tc4C#] y0在设计的硬件方面该通用软件UART仅仅使用了51系列单片机的一个通用I/O端口、一个T/C计数定时器和一个外部中断INT,最大限度地降低了系统硬件开销。该软件UART数据发送的设计思想是利用单片机的任意一个I/O端口作通用软件UART的发送端(TxD),通过T/Cx计数定时器设置通信波特率,将数据帧的起始位、数据位、奇偶校验位和停止位依次发送出去;数据接收的设计思想是将单片机的某一个外部中断作为数据接收端(RxD),并且将该中断源设置为下降沿触发方式,以利于及时检测到起始位的space(逻辑0)电平,在中断处理程序中对数据进行接收,这样设计有利于提高UART的响应速度和单片机的利用率。电子园51单片机学习网(^-f$|@i j2?
UART的波特率和采样时钟是利用T/Cx计数定时器实现的。对于不同的波特率,向T/Cx计数定时器赋予不同的初值,然后在指定的波特率下,利用软件实现UART的并行数据到串行数据的转换、每帧数据格式的生成、发送和接收功能。
K;x1dpX7mg+q0在本设计中,硬件系统采用正当频率为12M的主晶振,T/Cx记录振荡频率12分频后的脉冲个数(即机器周期个数),即每个机器周期使T/Cx的计数器增加1,直至记满回零后自动产生溢出中断请求。因此,达到指定波特率的定时器初值公式为:
w"`8XHWe0g1
&b `D!U1K0其中, 为定值器初值, 为计数器的模值, 为需要计数的个数[2]-[3]。
电子园51单片机学习网)}w$X,J*Q w'dE
#PD}"b-\ End ]#I0
!V4y1~w{6M0表格 1不同波特率对应的定时器初值电子园51单片机学习网4G&GB1Ti8A3z
lO@*`5?d"_0q'b0由于该通用软件UART发送和接收过程中使用的是同一个定时器,因此是一个半双工的软件UART。在软件中利用宏定义和条件编译实现了根据用户需要对数据帧的格式和波特率进行设置,提高了软件的可移植性。
9N[ \&Qi(u?OX$T03 通用软件UART的实现电子园51单片机学习网|.G5_ e-c!wx3K8D
发送
7Z:_],Y)p6[s0发送过程采用的是单片机主动控制I/O端口,根据设置好的数据帧格式将数据发送出去,在发送过程中为保证每个发送位的发送时钟相同而将其它无关中断关闭。首先,设定定时器为定时初值,启动定时器,关闭其它无关中断,然后开始发送数据帧;发送完起始位space之后,通过循环结构将移位寄存器中的数据按照从低到高的顺序发送出去,同时计算数据的奇偶校验位,并在发送完数据位之后发送出去,最后发送停止位mark;关闭定时器,开放中断,一帧数据发送结束。发送流程图见图2。电子园51单片机学习网GawM0C%|&Kb v
接收
1G_%`8v R*D[0接收过程利用单片机的外部中断实现。将中断源的触发方式设置为下降沿触发,当出现中断时在中断处理程序中接收数据,并将数据放入提前设定的缓冲区内,等待单片机将数据读取。在数据读取的过程中,为了保证数据读取的正确性,必须在每个数据位的中间进行数据采样。在主程序中设置外部中断的触发方式,并将该中断设置为高优先级以保证连续接收数据,然后等待外部中断产生;在中断处理程序中,首先设置定时器初值,启动定时器,关闭其它无关中断;然后等待一个半位时钟,使采样点落在第一个数据位的中间位置,接着通过循环结构将数据读入移位寄存器,同时计算奇偶校验位,接收完毕后如果奇偶校验正确则将数据放到数据缓冲单元中,否则弃之不用;最后关闭定时器,恢复中断。接收流程图见图3。电子园51单片机学习网t8da{3AA2k
在接收和发送的过程中需要注意的问题是中断响应时间校准、计数定时器T/C的溢出校准和实时读取。为了能够及时、连续、准确的发送和接收数据帧,在实际的应用过程中需要对定时器初值进行相应的调整,并且在发送和接收的过程中要将无关的中断关闭。
_D9L(u]8M04 结论
:yM D#q.k'U U%tt0本文实现的通用软件UART在多个工程项目中得到应用,并且经过多次改进使之具有了较好的可移植性,加快了系统的开发速度,可以应用在各种51系列的单片机中,并且达到了降低应用系统硬件开销、提高单片机资源利用率的目的。是一种值得推广的系统设计思想。
Y6ei LH3\0参考文献
/T5N{:j9Bi+X0[1] 赵晓.MCS-51单片机原理及应用[M].天津:天津大学出版社,2001.187-200电子园51单片机学习网)R4?Lj%K;?
[2] 何立民.单片机应用技术选篇 6[C].北京:北京航空航天大学出版社,1999电子园51单片机学习网8B xOP2cKhD
[3] 李伟.基于ST62T32B单片机I/O口的异步串口的软件实现[J].浙江工程学院学报,第20卷,第3期:193-196电子园51单片机学习网"S w,}K;k)D
[4] 闫玉德,俞虹.MCS-51单片机原理及应用(C语言版)[M].北京:机械工业出版社,2003
i5d(IPj1r0[5] 徐爱钧,彭秀华.单片机高级语言C51 Windows环境编程与应用[M].北京:电子工业出版社,2003
文章评论(0条评论)
登录后参与讨论