CN101631012B - 一种通用异步收发报机的控制方法及其装置 - Google Patents
一种通用异步收发报机的控制方法及其装置 Download PDFInfo
- Publication number
- CN101631012B CN101631012B CN 200910163691 CN200910163691A CN101631012B CN 101631012 B CN101631012 B CN 101631012B CN 200910163691 CN200910163691 CN 200910163691 CN 200910163691 A CN200910163691 A CN 200910163691A CN 101631012 B CN101631012 B CN 101631012B
- Authority
- CN
- China
- Prior art keywords
- uart
- cpu
- redundant data
- write
- data sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种通用异步收发报机的控制方法及其装置,包括:通信主控方的CPU在写入UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;当CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,所述CPU通过该发送存储寄存器空中断对所述UART进行控制。用本发明能够在UART现有硬件资源的基础上实现,无需增加硬件的额外开销,软件开销小且易于实现,提高了控制准确性。
Description
技术领域
本发明涉及通信领域,尤其涉及一种通用异步收发报机(UniversalAsynchronous Receiver Transmitter,简称UART)的控制方法及其装置。
背景技术
UART应用广泛,已成为低速率串行通讯的标准设备,许多通讯处理器在片内集成有UART模块。但UART应用在半双工通讯、总线式全双工通讯场景中有一个缺陷,即它不提供真正意义上的数据发送完成中断,具体如下:
数据发送时,UART仅提供发送存储寄存器空中断(transmitter holdingregister empty interrupt),该中断对应发送存储寄存器(transmitter holdingregister)的内容移入移位发送寄存器(shift transmitter register)事件。该中断发生时,刚移入移位发送寄存器的数据此时处于待发状态,尚未发出。而移位发送寄存器的内容发完时UART并不产生中断。
而在半双工、总线式全双工通讯场景中,一个设备在发送完数据后,一般需要立即释放数据发送权,并且从发送完成到总线释放之间的时间间隔尽可能短,使其他设备可以在该设备发送完成后立刻获得并使用数据发送权而不产生总线冲突。在这类应用场景中,由于UART不提供数据发送完成中断这一控制机制,需要UART在数据发送完成时刻的相关控制只能通过引入额外机制才能准确实现。
当前主要通过以下4种方案来解决该问题,包括:
A.在UART产生的发送存储寄存器空中断中启动一个软件延时,计时长度等于UART发送完移位寄存器里的数据所需的时间,之后执行发送完成对应的控制操作。
B.将方法A中的延时改成循环读取UART发送完成标志,首次读到标志为真时执行发送完成对应的控制操作。
C.UART的发送存储寄存器空中断发生后,暂时不清除中断标志,让中断持续发生,并在中断里读取UART发送完成标志。首次读到发送完成标志为真时执行发送完成对应的控制操作,然后清除该中断标志。
D.分别给UART的每一个通道配备一个硬件定时器,当UART产生发送存储寄存器空中断且发送缓冲区为空时,启动这个硬件定时器进行单次定时,定时长度为最后一个数据发送完所需时间。定时器中断发生时,执行发送完成对应的控制操作并关闭该定时器。
但上述4种方案均有一定缺陷:
方案A、B简单但控制准确性差,因为多任务处理环境下A、B这类基于软件延时、软件查询的方式会因其所在软件任务被抢占而错过控制时机;此外方案A、B存在严重的CPU处理能力浪费问题,原因是方案A、B在延时期间CPU在做无用功。CPU浪费与UART速率成反比,即UART传输速度越低CPU浪费越大,以2400bps传输场景为例,假设每个字节传输对应10bit,则每次至少浪费4ms的CPU处理时间。
方案C简单、控制准确性好,但和方法A、B一样,也存在严重的CPU处理能力浪费问题。
方案D相对较好,动作准确、CPU开销小,但每个UART通道需要一个额外硬件定时器资源来支持,并且实现起来也比较复杂。
因此,当前需要一种技术方案来解决上述当前方案存在的问题。
发明内容
本发明所要解决的技术问题是提供一种通用异步收发报机的控制方法及其装置,解决了当前技术方案在UART发送完成时刻控制上存在的动作准确性问题、软硬件资源开销问题以及实现复杂度问题。
为了解决上述问题,本发明提供了一种通用异步收发报机的控制方法,包括:
通信主控方的CPU在写入通用异步收发报机UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;
当所述CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,所述CPU通过该发送存储寄存器空中断对所述UART进行控制。
本发明还提供了一种通用异步收发报机的控制装置,包括:CPU,用于在写入所述通用异步收发报机UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;当将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,通过该发送存储寄存器空中断对所述UART进行控制。
与现有技术相比,应用本发明,能够在UART现有硬件资源的基础上实现,无需增加硬件的额外开销,软件开销小且易于实现,提高了控制准确性。
附图说明
图1是使用UART的半双工通信装置图;
图2是UART的发送工作原理图;
图3是本发明的通用异步收发报机的控制方法的流程图;
图4是本发明实例中某型基站中心控制板的半双工通信装置图;
图5是本发明实例中某型基站中心控制板使用UART的半双工通信的方式E的流程图;
图6是本发明实例中某型基站中心控制板使用UART的半双工通信的方式F的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
如图1所示的通讯系统中,该系统主要由通信主控方A及其通讯对象B组成。其中,通信主控方A包括CPU、UART、总线控制命令锁存单元、半双工UART驱动器4个部分。通讯对象B则是暗箱设备,制造商仅提供其通讯接口电气特性定义(半双工485)以及通讯文格式定义。设备B对外部命令的响应时间在几毫秒至几秒之间。设备B平时处于侦听状态,当收到命令地址是指向自己的命令后向通信主控方A发送应答报文。
本发明的主要构思在于:在通信主控方A的CPU写给UART的原待发数据序列末尾增加一冗余数据形成新数据序列,以该新数据序列为发送数据。当发送数据末尾的新增冗余数据被写入UART后,它对应的发送存储寄存器空中断发生时,刚好是原待发数据序列最后一个数据的发送完成时刻,所以此发送存储寄存器空中断就可以作为原待发数据序列的发送完成中断来用。至于该新增的冗余数据对系统的影响,可以通过关闭UART当前通道的发送功能或者关闭相应外接总线驱动器的发送功能等方式方法来消除。
图2是UART的发送工作原理图。
其中,对于UART的冗余数据的插入可以通过以下两种方式实现:1、在应用层插入冗余数据,即CPU向UART写入待发数据序列前,在发送给UART的待发数据序列末尾直接增加一冗余数据;2、在驱动层插入冗余数据,即CPU向UART发送完待发数据后,CPU再向UART的发送存储寄存器写入一个任意数据。
如图3所示,本发明的通用异步收发报机的控制方法,包括以下步骤:
步骤300:通信主控方的CPU设置外接总线驱动器为发送模式,并使能UART当前通道的发送功能;
步骤310:通信主控方的CPU向UART发送由待发数据序列和在该待发数据序列末尾增加的冗余数据组成的新数据序列,直至该冗余数据也被写入UART;
步骤320:当所加冗余数据产生发送存储寄存器空中断时,CPU在该中断的中断服务函数里关闭UART当前通道发送功能或者关闭UART相应总线驱动器的发送功能来消除冗余数据对系统的影响;
步骤330:CPU执行UART数据发送完成时的操作,并做本次发送后的处理。
执行UART数据发送完成时刻所需的操作,可以是指:打开UART当前通道的外接总线驱动器的接收使能,接收通讯对象设备发送的响应电文。
本发明的通用异步收发报机的控制装置,主要包括:CPU,用于在写入所述通用异步收发报机UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;当将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,通过该发送存储寄存器空中断对所述UART进行控制。
所述CPU在写入所述UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART,具体是指:
所述CPU在发送给所述UART写入待发数据序列前,在发送给UART的待发数据序列末尾直接增加一冗余数据形成新数据序列,并将该新数据序列写入该UART;
或者所述CPU向所述UART写入完待发数据序列后,再向该UART的发送存储寄存器写入一冗余数据。
所述CPU,还用于将所述新数据序列写入所述UART前,设置外接总线驱动器为发送模式,并使能所述UART当前通道的发送功能。
所述CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,通过该发送存储寄存器空中断对所述UART进行控制,是指:所述CPU关闭所述UART当前通道发送功能或者关闭所述UART相应总线驱动器的发送功能,消除该冗余数据对系统的影响。
所述CPU关闭所述UART当前通道发送功能是指所述CPU在所述中断的中断服务函数里关闭所述UART当前通道发送功能。
下面是本发明所述方法应用在某微型移动通讯基站中心控制板中UART数据传输控制过程的实例。
该控制板硬件主要有4个部分:CPU、UART、FPGA(现场可编程门阵列)以及半双工485驱动芯片。其中,UART为包含有4个通道的TL16C554。UART通道1、2和3均工作于全双工点对点模式下,与本发明所述方法无关;通道0应用了本发明所述的控制方法,外接有1片MAX3485E(Dallas公司生产的半双工485驱动芯片),与3个环境监控仪表共用一个3线的半双工485总线进行通讯,具体如图4所示。
半双工485总线上,控制板为主设备,3个仪表为从设备,分别为温度表、湿度表以及电源监控仪表。主从之间通过命令/响应方式交互,各仪表命令报文不同、编址不同。各仪表仅响应编址指向自己的命令。数据格式:1个启动位、1个停止位、无校验位以及8bit数据,速率为2400bps。
该实例中包括两种方式:方式E是在向UART写待发数据发送前进行冗余数据插入,适用在应用层实现;方式F则是在向UART写完待发数据后进行冗余数据插入,适用在驱动层实现。
以上两种实现方式没有实质差别,区别仅在于冗余数据的插入阶段的不同。
方式E的步骤如图5所示:
步骤500:CPU置通道0外接总线驱动器为只发模式(send only mode);
步骤510:CPU构造在待发数据序列末尾增加一个字节,生成新的待发数据序列,并发送新数据序列,直至新数据序列的最后一个字节已写入UART;
步骤520:UART通道0产生发送存储寄存器空中断,在该中断的中断服务函数里关闭通道0外接总线驱动器的发送使能,用于消除冗余数据对系统的影响;
步骤530:CPU打开通道0外接总线驱动器的接收使能,准备接收从设备的响应电文。
方式F的步骤如图6所示:
步骤600:CPU置通道0外接总线驱动器为只发模式(send only mode);
步骤610:CPU向UART写入待发数据,直至最后一个数据产生的发送存储寄存器空中断,在该中断里再向UART通道0的发送存储寄存器写入一个任意字节并退出中断;
步骤620:UART通道0再次产生发送存储寄存器空中断,在该中断的中断服务函数里关闭通道0外接总线驱动器的发送使能,用于消除冗余数据对系统的影响;
步骤630:CPU打开UART通道0外接总线驱动器的接收使能,准备接收从设备的响应电文。
经过实际测试证明,本发明所述的方法在没有额外硬件资源支持的情况下,达到了当前方案可以达到的最佳性能。
本发明所述方法简捷、清晰,易于实现且无额外硬件资源需求,可以作为UART应用于半双工点对点、总线式全双工场景下的一个通用方法,随UART广泛应用于串行通讯领域。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种通用异步收发报机的控制方法,其特征在于,包括:
通信主控方的CPU在写入通用异步收发报机UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;
当所述CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,所述CPU通过将该发送存储寄存器空中断作为原待发数据序列的发送完成中断释放所述UART的数据发送权。
2.如权利要求1所述的控制方法,其特征在于,
所述通信主控方的CPU在写入所述UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART,是指:
所述CPU在向所述UART写入待发数据序列前,在发送给UART的待发数据序列末尾直接增加一冗余数据形成新数据序列,并将该新数据序列写入该UART;
或者所述CPU向所述UART写入完待发数据序列后,再向该UART的发送存储寄存器写入一冗余数据。
3.如权利要求1所述的控制方法,其特征在于,
所述CPU将所述冗余数据写入所述UART前,还包括:所述CPU设置外接总线驱动器为发送模式,并使能所述UART当前通道的发送功能。
4.如权利要求1所述的控制方法,其特征在于,
当所述CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,所述CPU通过将该发送存储寄存器空中断作为原待发数据序列的发送完成中断释放所述UART的数据发送权,是指:所述CPU关闭所述UART当前通道发送功能或者关闭所述UART相应总线驱动器的发送功能,消除该冗余数据对系统的影响。
5.如权利要求4所述的控制方法,其特征在于,
所述CPU关闭所述UART当前通道发送功能是指所述CPU在所述发送存储寄存器空中断的中断服务函数里关闭所述UART当前通道发送功能。
6.一种通用异步收发报机的控制装置,其特征在于,
包括:CPU,用于在写入所述通用异步收发报机UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART;当将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,通过将该发送存储寄存器空中断作为原待发数据序列的发送完成中断释放所述UART的数据发送权。
7.如权利要求6所述的控制装置,其特征在于,
所述CPU在写入所述UART的待发数据序列末尾增加一冗余数据,并将所加所述冗余数据写入该UART,是指:
所述CPU在向所述UART写入待发数据序列前,在发送给UART的待发数据序列末尾直接增加一冗余数据形成新数据序列,并将该新数据序列写入该UART;
或者所述CPU向所述UART写入完待发数据序列后,再向该UART的发送存储寄存器写入一冗余数据。
8.如权利要求6所述的控制装置,其特征在于,
所述CPU,还用于将所述冗余数据写入所述UART前,设置外接总线驱动器为发送模式,并使能所述UART当前通道的发送功能。
9.如权利要求6所述的控制装置,其特征在于,
所述CPU将所加所述冗余数据写入所述UART产生发送存储寄存器空中断时,通过将该发送存储寄存器空中断作为原待发数据序列的发送完成中断释放所述UART的数据发送权,是指:所述CPU关闭所述UART当前通道发送功能或者关闭所述UART相应总线驱动器的发送功能,消除该冗余数据对系统的影响。
10.如权利要求9所述的控制装置,其特征在于,
所述CPU关闭所述UART当前通道发送功能是指所述CPU在所述发送存储寄存器空中断的中断服务函数里关闭所述UART当前通道发送功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910163691 CN101631012B (zh) | 2009-08-13 | 2009-08-13 | 一种通用异步收发报机的控制方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910163691 CN101631012B (zh) | 2009-08-13 | 2009-08-13 | 一种通用异步收发报机的控制方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101631012A CN101631012A (zh) | 2010-01-20 |
CN101631012B true CN101631012B (zh) | 2013-03-20 |
Family
ID=41575975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910163691 Expired - Fee Related CN101631012B (zh) | 2009-08-13 | 2009-08-13 | 一种通用异步收发报机的控制方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101631012B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546843B (zh) * | 2012-01-17 | 2017-10-24 | 厦门雅迅网络股份有限公司 | 一种通过软件模拟实现多个uart通信接口的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717870A (en) * | 1994-10-26 | 1998-02-10 | Hayes Microcomputer Products, Inc. | Serial port controller for preventing repetitive interrupt signals |
CN101136735A (zh) * | 2006-09-12 | 2008-03-05 | 中兴通讯股份有限公司 | 使用通用异步收发报机的半双工串口通信系统及通信方法 |
-
2009
- 2009-08-13 CN CN 200910163691 patent/CN101631012B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717870A (en) * | 1994-10-26 | 1998-02-10 | Hayes Microcomputer Products, Inc. | Serial port controller for preventing repetitive interrupt signals |
CN101136735A (zh) * | 2006-09-12 | 2008-03-05 | 中兴通讯股份有限公司 | 使用通用异步收发报机的半双工串口通信系统及通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101631012A (zh) | 2010-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101866328B (zh) | 一种自动访问的串行总线读写控制方法 | |
CN102629240B (zh) | 一种串口通信方法与装置 | |
CN106959935B (zh) | 一种兼容i2c通信与ipmb通信的方法 | |
CN109471824B (zh) | 基于axi总线的数据传输系统及方法 | |
TW200632666A (en) | Hardware supported peripheral component memory alignment method | |
US9645958B2 (en) | Method and device for transmitting data having a variable bit length | |
CN103840993A (zh) | 一种双冗余can总线数据发送方法 | |
US11374795B2 (en) | Gateway apparatus and method for controlling thereof | |
US9503309B2 (en) | Ethernet communication system and method based on MMC/SD interface | |
CN101415027B (zh) | 基于hdlc协议的通讯模块及数据实时转发存储控制方法 | |
CN103986771A (zh) | 一种不依赖于共享存储的高可用集群管理方法 | |
CN101631012B (zh) | 一种通用异步收发报机的控制方法及其装置 | |
US8744355B2 (en) | Communication method, and bluetooth device utilizing the communication method | |
KR101612825B1 (ko) | Can 컨트롤러, 차량 내부 통신을 위한 게이트웨이 및 그 제어 방법 | |
JP4453449B2 (ja) | 車載通信モジュールおよび車載機 | |
CN108196866B (zh) | 一种固件更新方法及装置 | |
CN112491620A (zh) | 一种基于srio的多通道数据传输控制器及调整方法 | |
CN101667951A (zh) | 网络设备及其数据传输方法 | |
US9794197B2 (en) | Method and apparatus for transmitting can frame | |
CN111752875A (zh) | 一种模块间通信方法及系统 | |
CN112685350B (zh) | 一种1394链路层芯片内部数据路由调度电路及其调度方法 | |
CN116232964B (zh) | 一种1553b总线通信网络中的实现rtmt功能的监控方法 | |
CN220526221U (zh) | 一种工业控制管理设备 | |
CN204087203U (zh) | 多个arm间的通信电路 | |
JPH10303962A (ja) | ノード認識方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20190813 |
|
CF01 | Termination of patent right due to non-payment of annual fee |