CN110099028A - 一种串口数据传输的方法及装置 - Google Patents
一种串口数据传输的方法及装置 Download PDFInfo
- Publication number
- CN110099028A CN110099028A CN201810087885.1A CN201810087885A CN110099028A CN 110099028 A CN110099028 A CN 110099028A CN 201810087885 A CN201810087885 A CN 201810087885A CN 110099028 A CN110099028 A CN 110099028A
- Authority
- CN
- China
- Prior art keywords
- data
- serial data
- spare bits
- packet
- serial
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
一种串口数据的传输方法及其装置,所述方法包括:串口数据发送单元发送数据包数据;在每个数据包发送完成之后,再发送一定长度的空闲位;串口数据接收单元接收数据包数据和空闲位,并对接收到的空闲位进行计数;判断数据包数据是否接收完成:当空闲位的个数大于一预定的阈值时,则判断数据包数据已经发送完毕,该串口数据接收单元向CPU发起中断申请;否则继续接收数据包数据。本发明通过数据包发送结束之后增加额外的空闲位,使得串口数据接收单元可以检测空闲位的个数来确定是否接收到完整的数据包,如果是串口数据接收单元才会向CPU发送中断申请。这样减少了接收CPU对串口接收过程的干预,减少了CPU资源的占用,提高了接收单元的资源利用效率。
Description
技术领域
本发明涉及通信领域,具体涉及一种串口数据传输的方法及装置。
背景技术
通用异步串口UART(Universal Asynchronous Receiver/Transmitter)是一种常用的串行通信协议,广泛应用于电子设备之间的数据通信。UART可以采用专用的硬件握手信号进行收发设备之间数据通信的握手,但是硬件握手方式会增加一些专用的通信信号,这样就增加了收发设备之间的连线的数量,其成本会比不采用硬件握手方式的成本要高一些。因此在很多串口通信设备中,为了降低成本、降低系统复杂性,往往不再采用硬件握手。
串口设备为了能够正确进行数据通信,通信的双方(或者多方)一般需要定义通信协议,即为通信的数据规定了一定的格式,数据按照这个格式组成数据包,数据包在收发设备之间进行传递和理解。数据包通常包含有长度、类型、数据、校验值等。在包含长度信息的数据包中,接收方一般需要接收到完整的数据包以后才能够进行数据处理,因此接收方每接收到一个字节以后,都需要比较数据包的实际长度是否达到了数据包的要求,以判断是否收到了完整的数据包。
当数据通信的速度不高时,接收方用CPU去进行判断,所耗费的CPU资源并不太多,因此是可以接受的。但是如果数据通信的速度比较高,比如达到1Mbps甚至更高时,CPU耗费在串口数据接收上的时间就大大增加,从而占用了用于其它计算任务的宝贵资源。需要设计出一种可以提高串口通信效率的方法。
发明内容
基于上述问题,本发明的目的是提供一种串口数据的传输方法和装置,通过数据包发送结束之后增加额外的空闲位,使得串口接收单元可以检测空闲位的个数来确定是否接收到了完整的数据包,如果是则串口接收单元才会向CPU发送中断申请。这样就大大减小了CPU对数据接收的干预,从而节约了CPU的处理资源。
为解决上述问题,本发明的第一方面提供了一种串口数据传输方法,包括如下步骤:
串口数据发送单元发送数据包数据;
在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;
串口数据接收单元接收数据包数据;
所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;
判断数据包数据是否接收完成:当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
进一步地,所述串口数据发送单元发送的空闲位的个数大于所述阈值。
进一步地,所述串口数据接收单元的所述阈值由如下公式确定:
阈值=串口发送单元发送空闲位的个数*0.95-安全余量个数;所述安全余量个数大于等于1。
进一步地,串口数据发送单元的发送数据FIFO所存储的内容包括:数据包数据和空闲位的个数;当串口数据发送单元判断发送的数据为数据包数据时,则按照正常的方式发送该数据包,否则发送该个数的空闲位;在空闲位发送完成之前,串口数据发送单元不再响应其他的数据发送命令。
进一步地,串口数据发送单元方的CPU将发送数据FIFO映射为两个地址:一个地址用于写入发送数据;另一个地址用于写入空闲位的个数。
本发明的另一方面提供一种串口数据传输装置,包括:
串口数据发送单元,用来发送数据包数据;在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;
串口数据接收单元接收数据包数据;所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;
判断单元,用于判断数据包数据是否接收完成;当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
进一步地,所述串口数据发送单元发送的空闲位的个数大于所述阈值。
进一步地,所述串口数据接收单元的所述阈值由如下公式确定:
阈值=串口发送单元发送空闲位的个数*0.95-安全余量个数;所述安全余量个数大于等于1。
进一步地,串口数据发送单元的发送数据FIFO所存储的内容包括:数据包数据和空闲位的个数;当串口数据发送单元判断发送的数据为数据包数据时,则按照正常的方式发送该数据包,否则发送该个数的空闲位;在空闲位发送完成之前,串口数据发送单元不再响应其他的数据发送命令。
进一步地,串口数据发送单元方的CPU将发送数据FIFO映射为两个地址:一个地址用于写入发送数据;另一个地址用于写入空闲位的个数。
综上所述,本发明提供了一种串口数据传输方法及其相应的装置,该方法包括串口数据发送单元在每个数据包发送完成之后,发送一定长度的空闲位,以表明前一个数据包已经发送结束;使得串口数据接收单元接收数据包后对接收到的空闲位进行计数,当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请。
本发明的上述技术方案具有如下有益的技术效果:
数据发送单元在两个数据包之间插入一定长度的空闲位,以表明前一个数据包已经发送结束;数据接收单元通过检测空闲位的长度,以识别是否接收到了完整的数据包。接收到完整数据包之后,才会给CPU发送中断。这样就减少了接收CPU对串口接收过程的干预,减少了CPU资源的占用,提高了接收单元的资源利用效率。
附图说明
图1是本发明的串口数据传输方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
串口通信协议规定,每个字节的传送,包含了1个bit的起始位(低电平)、N个bit的数据(N为6、7、8等)、可选的奇偶校验位、至少1个bit的停止位(高电平)。虽然串口协议本身具备一定的灵活性,但是在实际使用时,一般采用1bit起始位,8bit数据位,没有奇偶校验位,1bit停止位,这样一个字节占用10个bit的时间。在进行数据包的传送时,多个字节连续传送,就组成了1位起始位、8位数据位、1位停止位→1位起始位、8位数据位、1位停止位→…这样的序列。
如图1所示,本发明提供了一种串口数据传输方法,具体包括如下步骤:串口数据发送单元发送数据包数据;在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;串口数据接收单元接收数据包数据;所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;判断数据包数据是否接收完成:当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
具体来说,本发明在每个数据包发送完成之后,再继续发送一定长度的空闲位,如发送4个字节长度的空闲位,即40个bit的高电平(与停止位的电平状态相同)。
串口数据接收单元在接收到完整的数据字节以后,会对接收到的空闲位进行计数,当空闲位的个数大于一预定的阈值(如32个bit)时,则认为前一个数据包已经发送完毕,这样串口数据接收单元才会向CPU发起中断申请。
考虑到发送和接收单元的最大波特率偏差为5%,以及接收单元需要具有一定的余量,数据发送单元发送的空闲位的个数,一般要大于接收方空闲位个数的阈值。即接收单元接收到的空闲位个数的阈值=int(发送方空闲位的个数*0.95)-安全余量(一般为1~8即可)。
在数据发送单元,为了在数据包发送完成以后能够继续发送一定长度的空闲位,对串口的发送数据FIFO进行了优化,FIFO当中每个“数据”需要增加一个额外的bit,用于表明该“数据”是真正需要发送的数据,或者是需要发送的空闲位的个数。当串口数据发送单元判断是正常的数据时,就会按照正常的方式发送该数据。否则就发送该长度的空闲位。在这些空闲位发送完成以前,串口发送单元不再响应任何的数据发送命令。
发送单元方的CPU把串口发送FIFO映射为两个地址,一个地址用于写入发送数据,另一个地址用于写入空闲位的个数。对于发送CPU而言,如果想要在某个数据发送完成之后再插入额外的空闲位,只需要把空闲位的个数写入到相应的地址即可。
本发明的另一方面还提供了一种串口数据传输设备,具体包括串口数据发送单元,用来发送数据包数据;在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;串口数据接收单元接收数据包数据;所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;判断单元,用于判断数据包数据是否接收完成;当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
综上所述,本发明提供了一种串口数据的传输方法和装置,通过数据包发送结束之后增加额外的空闲位,使得串口数据接收单元可以检测空闲位的个数来确定是否接收到了完整的数据包,如果是则串口数据接收单元才会向CPU发送中断申请。这样就减少了接收CPU对串口接收过程的干预,减少了CPU资源的占用,提高了接收单元的资源利用效率。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (10)
1.一种串口数据传输方法,其特征在于,包括如下步骤:
串口数据发送单元发送数据包数据;
在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;
串口数据接收单元接收数据包数据;
所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;
判断数据包数据是否接收完成:当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
2.根据权利要求1所述的串口数据传输方法,其特征在于,所述串口数据发送单元发送的空闲位的个数大于所述阈值。
3.根据权利要求2所述的串口数据传输方法,其特征在于,所述串口数据接收单元的所述阈值由如下公式确定:
阈值=串口发送单元发送空闲位的个数*0.95-安全余量个数;所述安全余量个数大于等于1。
4.根据权利要求1所述的串口数据传输方法,其特征在于,串口数据发送单元的发送数据FIFO所存储的内容包括:数据包数据和空闲位的个数;当串口数据发送单元判断发送的数据为数据包数据时,则按照正常的方式发送该数据包,否则发送该个数的空闲位;在空闲位发送完成之前,串口数据发送单元不再响应其他的数据发送命令。
5.根据权利要求4所述的串口数据传输方法,其特征在于,串口数据发送单元方的CPU将发送数据FIFO映射为两个地址:一个地址用于写入发送数据;另一个地址用于写入空闲位的个数。
6.一种串口数据传输装置,其特征在于,包括:
串口数据发送单元,用来发送数据包数据;在每个数据包发送完成之后,所述串口数据发送单元发送一定长度的空闲位;
串口数据接收单元接收数据包数据;所述串口数据接收单元接收数据包数据后的空闲位,并对接收到的空闲位进行计数;
判断单元,用于判断数据包数据是否接收完成;当空闲位的个数大于一预定的阈值时,则判断空闲位前发送的数据包数据已经发送完毕,该串口数据接收单元向串口数据接收单元方的CPU发起中断申请;否则继续接收数据包数据。
7.根据权利要求6所述的串口数据传输装置,其特征在于,所述串口数据发送单元发送的空闲位的个数大于所述阈值。
8.根据权利要求7所述的串口数据传输装置,其特征在于,所述串口数据接收单元的所述阈值由如下公式确定:
阈值=串口发送单元发送空闲位的个数*0.95-安全余量个数;所述安全余量个数大于等于1。
9.根据权利要求6所述的串口数据传输装置,其特征在于,串口数据发送单元的发送数据FIFO所存储的内容包括:数据包数据和空闲位的个数;当串口数据发送单元判断发送的数据为数据包数据时,则按照正常的方式发送该数据包,否则发送该个数的空闲位;在空闲位发送完成之前,串口数据发送单元不再响应其他的数据发送命令。
10.根据权利要求9所述的串口数据传输装置,其特征在于,串口数据发送单元方的CPU将发送数据FIFO映射为两个地址:一个地址用于写入发送数据;另一个地址用于写入空闲位的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810087885.1A CN110099028B (zh) | 2018-01-30 | 2018-01-30 | 一种串口数据传输的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810087885.1A CN110099028B (zh) | 2018-01-30 | 2018-01-30 | 一种串口数据传输的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110099028A true CN110099028A (zh) | 2019-08-06 |
CN110099028B CN110099028B (zh) | 2022-01-18 |
Family
ID=67441869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810087885.1A Active CN110099028B (zh) | 2018-01-30 | 2018-01-30 | 一种串口数据传输的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110099028B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111130969A (zh) * | 2019-12-30 | 2020-05-08 | 歌尔科技有限公司 | 串口数据接收方法和装置、耳机、充电设备及存储介质 |
CN111352888A (zh) * | 2020-02-28 | 2020-06-30 | 北京铁科英迈技术有限公司 | 异步收发器的中断信号产生方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010046671A (ko) * | 1999-11-15 | 2001-06-15 | 윤종용 | 복합단말기의 전력 제어 방법 |
CN101222430A (zh) * | 2008-01-24 | 2008-07-16 | 中兴通讯股份有限公司 | 一种高速多协议数据传输系统和方法 |
US20100122008A1 (en) * | 2007-12-13 | 2010-05-13 | Texas Instruments Incorporated | Interrupt morphing and configuration, circuits, systems, and processes |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
CN105955764A (zh) * | 2016-04-22 | 2016-09-21 | 佛山市南海区欧谱曼迪科技有限责任公司 | 一种stm32单片机iap串口程序烧录的改进方法 |
CN106874226A (zh) * | 2015-12-10 | 2017-06-20 | 重庆川仪自动化股份有限公司 | 基于stm32f4芯片的串口数据接收、发送、传输装置及方法 |
-
2018
- 2018-01-30 CN CN201810087885.1A patent/CN110099028B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010046671A (ko) * | 1999-11-15 | 2001-06-15 | 윤종용 | 복합단말기의 전력 제어 방법 |
US20100122008A1 (en) * | 2007-12-13 | 2010-05-13 | Texas Instruments Incorporated | Interrupt morphing and configuration, circuits, systems, and processes |
CN101222430A (zh) * | 2008-01-24 | 2008-07-16 | 中兴通讯股份有限公司 | 一种高速多协议数据传输系统和方法 |
CN104866452A (zh) * | 2015-05-19 | 2015-08-26 | 哈尔滨工业大学(鞍山)工业技术研究院 | 基于fpga和tl16c554a的多串口扩展方法 |
CN106874226A (zh) * | 2015-12-10 | 2017-06-20 | 重庆川仪自动化股份有限公司 | 基于stm32f4芯片的串口数据接收、发送、传输装置及方法 |
CN105955764A (zh) * | 2016-04-22 | 2016-09-21 | 佛山市南海区欧谱曼迪科技有限责任公司 | 一种stm32单片机iap串口程序烧录的改进方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111130969A (zh) * | 2019-12-30 | 2020-05-08 | 歌尔科技有限公司 | 串口数据接收方法和装置、耳机、充电设备及存储介质 |
CN111130969B (zh) * | 2019-12-30 | 2021-06-18 | 歌尔科技有限公司 | 串口数据接收方法和装置、耳机、充电设备及存储介质 |
CN111352888A (zh) * | 2020-02-28 | 2020-06-30 | 北京铁科英迈技术有限公司 | 异步收发器的中断信号产生方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110099028B (zh) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789198B2 (en) | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors | |
CN105975424B (zh) | 一种主从串行通讯协议 | |
CN103001827A (zh) | 基于万兆网卡的以太网包检验和fpga硬件校验方法 | |
CN101710857A (zh) | 串行通信波特率自适应方法及其装置 | |
CN101436978A (zh) | 使用udp协议进行可靠数据传输的方法 | |
CN101146102A (zh) | Rru网络中hdlc数据下行、上行的方法及通讯装置 | |
CN110099028A (zh) | 一种串口数据传输的方法及装置 | |
CN101146090B (zh) | 一种基于usart总线的发送接收数据的方法及其装置 | |
CN104156334A (zh) | 用于多机通讯的串口自适应数据透明传输协议 | |
CN106911388A (zh) | 自适应调整不同速率设备端口的方法和设备 | |
CN105764091A (zh) | 一种有效利用无线带宽的方法 | |
CN108259134A (zh) | 一种基于afp协议的数据传输方法 | |
CN101789105B (zh) | 一种在数据包的级别动态检测邮件附件病毒的方法 | |
CN109922537B (zh) | 无线模块及其实现方法 | |
US6496487B2 (en) | Efficient full duplex simultaneous message transfer | |
CN110838892B (zh) | 多路全双工串口的高可靠合并转发方法 | |
US8432934B2 (en) | Multi-rate multi-receiver multi-response aggregation | |
CN105515925A (zh) | 一种uart多主实时通信系统 | |
KR20080006150A (ko) | 직렬 통신 방식을 이용한 데이터 송수신 장치 및 방법 | |
CN110768775A (zh) | 一种低成本全双工的通讯方法、通讯系统及计算机可读存储介质 | |
CN113794538A (zh) | 一种高效率的双机通讯反馈方法 | |
CN101183948A (zh) | 一种以太网串口驱动单元及窄带拨号时数据流的传输方法 | |
WO2021189267A1 (zh) | 一种时钟展频协商方法、高速外围组件互联设备及系统 | |
CN204145528U (zh) | 一种uart多主实时通信系统 | |
CN101383819B (zh) | 异步串行数据线信息收发方法及异步串行收发器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |