CN116257206A - 基于嵌入式串口模块的数据收发方法及装置 - Google Patents

基于嵌入式串口模块的数据收发方法及装置 Download PDF

Info

Publication number
CN116257206A
CN116257206A CN202310260862.7A CN202310260862A CN116257206A CN 116257206 A CN116257206 A CN 116257206A CN 202310260862 A CN202310260862 A CN 202310260862A CN 116257206 A CN116257206 A CN 116257206A
Authority
CN
China
Prior art keywords
data
frame
queue
ack
full
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.)
Pending
Application number
CN202310260862.7A
Other languages
English (en)
Inventor
任文龙
陈路
敬维
由易松
刘轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Jiuzhou Electric Group Co Ltd
Original Assignee
Sichuan Jiuzhou Electric Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Jiuzhou Electric Group Co Ltd filed Critical Sichuan Jiuzhou Electric Group Co Ltd
Priority to CN202310260862.7A priority Critical patent/CN116257206A/zh
Publication of CN116257206A publication Critical patent/CN116257206A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及一种基于嵌入式串口模块的数据收发方法及装置,属于串口数据收发技术领域,解决了现有技术中串口模块软硬件耦合性强以及难以监控数据收发过程的问题。数据收发方法包括:当外部数据存入至硬件FIFO缓冲区时,触发串口ISR;在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析,将得到的接收的数据帧存储至接收队列供用户端使用,同时将得到的ACK信息存入至ACK帧队列用于判断数据是否发送成功;当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。实现了软硬件的解耦以及对数据收发过程的监控。

Description

基于嵌入式串口模块的数据收发方法及装置
技术领域
本发明涉及串口数据收发技术领域,尤其涉及一种基于嵌入式串口模块的数据收发方法及装置。
背景技术
串口,即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)是一种通用串行数据总线,是嵌入式设备对外交互中一种最常见的数据传输方式。串口通过一对信号线连接两个设备,两个设备采用约定的波特率进行通信,实现数据的全双工发送和接收通信,串口通信的内容通常是以一个二进制帧为单位。
随着物联网的深入发展和嵌入式多核技术的广泛应用,嵌入式设备与外界进行数据交互的频率和数据量在不断提高,串口收发数据的处理方法直接关系到设备通信性能的优劣,是嵌入式设备数据处理中极为重要的一个环节。
但是,现有技术中的串口模块的收发数据处理流程不清晰,软硬件耦合性强,移植性和可扩展性差,难以支持多核并发处理,并且不能支持模块的自测试设计,难以监控数据收发过程中出现的异常。
因此,亟需一种串口模块在收发数据处理过程中的技术方案。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种基于嵌入式串口模块的数据收发方法及装置,用以解决现有技术中串口模块软硬件耦合性强以及难以监控数据收发过程的问题。
一方面,本发明实施例提供了一种基于嵌入式串口模块的数据收发方法,所述数据收发方法包括:
当外部数据存入至硬件FIFO缓冲区时,触发串口中断服务程序ISR;在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
根据接收的数据帧判断是否需要进行ACK回传,当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
基于上述方法的进一步改进,所述读取全部外部数据并存入环形缓冲区,包括:
利用单字节读取接口回调循环读取全部外部数据中的每一个字节,并存入环形缓冲区。
基于上述方法的进一步改进,所述对环形缓冲区中存入的外部数据进行解析,包括:
利用嵌入式操作系统EOS支持的任务或软中断机制,连续读取和解析环形缓冲区中的字节数据,识别出帧头、帧长和帧尾,直至解析出一个完整帧。
基于上述方法的进一步改进,当根据接收的数据帧判断需要进行回传时,封装一个ACK帧,直接高优先级插入至发送队列。
基于上述方法的进一步改进,所述数据收发方法还包括:
在预设验证时间的范围内,对ACK帧队列中的ACK信息进行查询,以判断用户端需要发送的数据帧是否发送成功;
当发送失败时,启动预设次数的重发机制或者重新发送直至验证到用户端需要发送的数据帧发送成功。
基于上述方法的进一步改进,所述数据收发方法还包括:
在串口ISR中,统计每次中断读取字节的个数和环形缓冲区满的情况;
根据读取字节的个数判断硬件FIFO缓冲区是否发生故障,根据环形缓冲区满的情况判断环形缓冲区是否发生故障。
基于上述方法的进一步改进,所述读取帧数据并写入到硬件FIFO缓冲区进行发送,包括:
利用单字节写入接口回调循环读取帧数据的字节数据并写入硬件FIFO缓冲区,同时启动发送过程。
基于上述方法的进一步改进,所述数据收发方法还包括:
在数据收发过程中,统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况;
根据接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况,对接收队列、ACK帧队列、发送队列以及环形缓冲区的参数进行调整。
另一方面,本发明实施例提供了一种基于嵌入式串口模块的数据收发装置,所述数据收发装置包括位于传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,以及位于硬件层的硬件FIFO缓冲区;
数据读取单元,用于在串口ISR中,读取硬件FIFO缓冲区的全部外部数据并存入环形缓冲区;
数据解析单元,用于对环形缓冲区中存入的外部数据进行解析,得到接收的数据帧和ACK信息,并将接收的数据帧存储至接收队列供应用层的用户端使用,将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
发送队列,用于存储ACK帧和应用层的用户端需要发送的数据帧;
数据发送单元,用于当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
基于上述装置的进一步改进,所述数据收发装置还包括信息统计单元;
信息统计单元,用于统计每次中断读取字节的个数和环形缓冲区满的情况,以及用于统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、本发明通过传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,并且数据发送和接收时采用接口回调和队列技术解耦了硬件层和应用层,提高了串口模块的移植性和可扩展性。
2、本发明通过在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送,实现了串口模块的数据收发。
3、本发明通过统计在数据收发过程中接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况对相关的队列的参数进行调整,实现了数据收发过程的监控,降低了串口模块的异常处理成本。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例提供的基于嵌入式串口模块的数据收发方法的流程示意图;
图2为本发明实施例提供的基于嵌入式串口模块的数据收发装置的结构示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
本发明的一个具体实施例,公开了一种基于嵌入式串口模块的数据收发方法,如图1所示,所述数据收发方法包括:
步骤S1:当外部数据存入至硬件FIFO缓冲区时,触发串口中断服务程序ISR;在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
步骤S2:根据接收的数据帧判断是否需要进行ACK回传,当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
具体的,串口模块通过一对信号线连接两个嵌入式设备,两个嵌入式设备采用约定的波特率进行通信,实现数据的全双工通信。
具体的,在步骤S1中,本发明实施例提供了一种串口模块接收数据的流程。如图2所示,当外部数据到达硬件层的硬件FIFO(First Input First Output,先进先出)缓冲区210时,触发串口ISR(Interrupt Service Routines,中断服务程序)。
在传输层,数据读取单元201在收到串口ISR发送的信号量后,对硬件FIFO缓冲区210中的存入的外部数据进行读取。
优选地,所述读取全部外部数据并存入环形缓冲区,包括:
利用单字节读取接口回调循环读取全部外部数据中的每一个字节,并存入环形缓冲区。
具体的,数据读取单元201通过利用单字节读取接口回调函数,逐个循环读取外部数据中的每一个字节,直至将硬件FIFO缓冲区210中存入的外部数据全部读取完成,在读取的过程中,每读取一个单字节,均存入至环形缓冲区202。
所述单字节读取接口回调是指读取单字节数据并判断是否成功。可以理解的,本发明采用单字节读取接口回调的形式进行串口硬件缓冲区数据的读取,一次只读一个字节,当无字节可读时返回失败,当有字节可读时返回成功。
环形缓冲区202是由固定大小的字节数组、写索引、读索引、写循环次数及读循环次数构成。
优选地,所述数据收发方法还包括:
在串口ISR中,统计每次中断读取字节的个数和环形缓冲区满的情况;
根据读取字节的个数判断硬件FIFO缓冲区是否发生故障,根据环形缓冲区满的情况判断环形缓冲区是否发生故障。
具体的,在串口ISR中,通过统计每次中断读取字节的个数和环形缓冲区202满的情况,进一步判断硬件FIFO缓冲区202是否发生故障,以及判断环形缓冲区202是否发生故障。
值得说明的是,硬件FIFO缓冲区202的存储空间大小是固定的,在每次串口ISR中,如果读取字节的个数超过硬件FIFO缓冲区202的存储空间大小,则表示硬件FIFO缓冲区202出现故障。
值得说明的是,环形缓冲区202有开始和结束的位置,当两者的索引相等时,说明环形缓冲区202满的情况出现。可以理解的是,正常情况下,由于环形缓冲区202的存储空间大小大于硬件FIFO缓冲区202的存储空间大小,环形缓冲区202不会出现满的情况。因此,当环形缓冲区202满时,说明环形缓冲区202出现故障。
此外,值得说明的是,为了统计每次串口ISR中,数据读取单元201读取全部的外部数据所消耗的时间Trecv,可以记录每次串口ISR进入中断的时间点T1和串口ISR执行完毕的时间点T2,计算得出本次读取全部外部数据所消耗的时间Trecv。
具体的,在步骤S1中,串口ISR执行完毕之后,说明此时数据读取单元201已经将硬件FIFO缓冲区210中存入的外部数据全部读取并存入至环形缓冲区202中,此时,向数据解析单元203发送信号量,数据解析单元203开始工作。
数据解析单元203开始从环形缓冲区202读取字节数据并对字节数据进行分析,将解析得到的数据帧存储至接收队列204供应用层的用户端使用,用户端可以对该数据帧进行接收、处理和进一步加工;同时,将解析得到的确认字符ACK信息存入至ACK帧队列205中,用于判断数据是否发送成功。
优选地,所述对环形缓冲区中存入的外部数据进行解析,包括:
利用嵌入式操作系统EOS支持的任务或软中断机制,连续读取和解析环形缓冲区中的字节数据,识别出帧头、帧长和帧尾,直至解析出一个完整帧。
值得说明的是,利用EOS(Embedded Operating System,嵌入式操作系统)支持的任务或软中断机制,数据解析单元203按照预设的帧格式对读取的环形缓冲区202的每一个字节数据进行解析,分别解析出帧头、帧长和帧尾,当解析出一个完整的帧时,分别存入至接收队列204和ACK帧队列205中。
具体的,在数据解析单元203对环形缓冲区202中存入的字节数据进行解析时,可能发生解析错误,记录数据解析单元203在解析过程中解析帧错误个数,用于判断异常。
具体的,在将解析出的每一个完整帧存入至接收队列204和ACK帧队列205中,可能出现接收队列204满的情况或者ACK帧队列205满的情况,统计在解析过程中出现的接收队列204满的情况和ACK帧队列205满的情况。
值得说明的是,当出现接收队列204满的情况或者ACK帧队列205满的情况时,说明接收队列204的存储空间大小或者ACK帧队列205的存储空间大小比较小,可以通过调整对应的参数使接收队列204或者ACK帧队列205满足存储的需要。
此外,可以统计解析单元203对环形缓冲区202中全部的外部数据解析所消耗的时间Tparse。
具体的,在步骤S2中,本发明实施例提供了一种串口模块发送数据的流程,如图2所示。
值得说明的是,串口模块可以发送的数据,一方面包括应用层的用户端需要发送的数据帧,另一方面包括需要进行ACK回传的ACK帧。
具体地,接收的数据帧存入至接收队列后,根据接收的数据帧判断是否需要进行ACK回传。
优选地,当根据接收的数据帧判断需要进行回传时,封装一个ACK帧,直接高优先级插入至发送队列。
具体的,当用户端需要发送数据帧时,将数据帧存入至发送队列206。同时,当有需要进行ACK回传时,创建ACK帧时,将该ACK帧直接高优先级插入至发送队列206。
值得说明的是,在用户端需要发送的数据帧或者需要进行回传的ACK帧存入至发送队列206的过程中,统计发送队列206满的情况以便于对发送队列206进行参数的适应性调整。
具体的,在步骤S2中,当发送队列206中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
优选地,所述读取帧数据并写入到硬件FIFO缓冲区进行发送,包括:
利用单字节写入接口回调循环读取帧数据的字节数据并写入硬件FIFO缓冲区,同时启动发送过程。
具体的,所述单字节写入接口回调是指一次写入一个字节数据并判断是否可写,当存在剩余的空间可写入时返回成功,当没有剩余空间写入时返回失败。
优选地,所述数据收发方法还包括:
在预设验证时间的范围内,对ACK帧队列中的ACK信息进行查询,以判断用户端需要发送的数据帧是否发送成功;
当发送失败时,启动预设次数的重发机制或者重新发送直至验证到用户端需要发送的数据帧发送成功。
具体的,当发送的数据帧需要ACK回传时,则在数据帧发送完成后的预设验证时间的范围内,对ACK帧对列中的ACK信息进行查询,如果不一致则发送失败,如果一致则发送成功。优选地,预设验证时间的范围可以设置为100ms。
具体的,当发送失败时,可以启动预设次数的重发机制,也可通过重新发送数据帧直至验证到发送的数据帧发送成功。优选地,预设次数为5次。
值得说明的是,通过步骤S1中的过程,可以统计出本发明实施例提供的串口模块接收数据流程中,接收一帧数据的总时间;同时,通过步骤S2的过程,可以统计出发送一帧数据所占用的CPU时间Tcpu。可以理解的是,不同的帧具有不同的长度,可能有从及字节到上千字节,差异较大。
于是为了比较不同串口模块收发数据方法的性能,可以设计一组长度不同的帧进行连续接收和发送处理,即发送和接收字节数是相同的(假设为N),进而计算出总接收时间Trecv(total)、总解析时间Tparse(total)、总发送CPU时间=Tcpu(total)。正常情况下,由于串口通信的速率是固定不变的,那么N个字节的总接收时间Trecv(total)和总的串口发送时间是相同的,不同方法的效率主要体现在总解析时间Tparse(total)和总发送CPU时间,于是可以基于本发明提出的平均字节接收时间=N/Tparse(total),平均字节CPU时间=N/Tcpu(total)在不同串口数据收发方法之间实现定量比较。
优选地,ACK帧队列可以为队列、邮箱或者哈希表机制。ACK信息包括帧消息ID和ACK/否认字符NAK。
本发明的另一个具体实施例,公开了一种基于嵌入式串口模块的数据收发装置,如图2所示,所述数据收发装置包括位于传输层的数据读取单元201、环形缓冲区202、数据解析单元203、接收队列204、ACK帧队列205、发送队列206和数据发送单元207,以及位于硬件层的硬件FIFO缓冲区210;
数据读取单元201,用于在串口ISR中,读取硬件FIFO缓冲区210的全部外部数据并存入环形缓冲区202;
数据解析单元203,用于对环形缓冲区202中存入的外部数据进行解析,得到接收的数据帧和ACK信息,并将接收的数据帧存储至接收队列204供应用层的用户端209使用,将ACK信息存入至ACK帧队列205用于判断数据是否发送成功;
发送队列206,用于存储ACK帧和应用层的用户端需要发送的数据帧;
数据发送单元207,用于当发送队列206中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区210进行发送。
优选地,所述数据收发装置还包括信息统计单元208;
信息统计单元208,用于统计每次中断读取字节的个数和环形缓冲区满的情况,以及用于统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况。
与现有技术相比,本实施例提供的基于嵌入式串口模块的数据收发方法及装置通过传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,以及位于硬件层的硬件FIFO缓冲区,解耦了硬件层和应用层,提高了串口模块的移植性和可扩展性;同时,通过在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送,实现了串口模块的数据收发;并且,通过统计在数据收发过程中接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况对相关的队列的参数进行调整,实现了数据收发过程的监控,降低了串口模块的异常处理成本。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1.一种基于嵌入式串口模块的数据收发方法,其特征在于,所述数据收发方法包括:
当外部数据存入至硬件FIFO缓冲区时,触发串口中断服务程序ISR;在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
根据接收的数据帧判断是否需要进行ACK回传,当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
2.根据权利要求1所述的数据收发方法,其特征在于,所述读取全部外部数据并存入环形缓冲区,包括:
利用单字节读取接口回调循环读取全部外部数据中的每一个字节,并存入环形缓冲区。
3.根据权利要求2所述的数据收发方法,其特征在于,所述对环形缓冲区中存入的外部数据进行解析,包括:
利用嵌入式操作系统EOS支持的任务或软中断机制,连续读取和解析环形缓冲区中的字节数据,识别出帧头、帧长和帧尾,直至解析出一个完整帧。
4.根据权利要求1所述的数据收发方法,其特征在于,当根据接收的数据帧判断需要进行回传时,封装一个ACK帧,直接高优先级插入至发送队列。
5.根据权利要求1所述的数据收发方法,其特征在于,所述数据收发方法还包括:
在预设验证时间的范围内,对ACK帧队列中的ACK信息进行查询,以判断用户端需要发送的数据帧是否发送成功;
当发送失败时,启动预设次数的重发机制或者重新发送直至验证到用户端需要发送的数据帧发送成功。
6.根据权利要求2所述的数据收发方法,其特征在于,所述数据收发方法还包括:
在串口ISR中,统计每次中断读取字节的个数和环形缓冲区满的情况;
根据读取字节的个数判断硬件FIFO缓冲区是否发生故障,根据环形缓冲区满的情况判断环形缓冲区是否发生故障。
7.根据权利要求1所述的数据收发方法,其特征在于,所述读取帧数据并写入到硬件FIFO缓冲区进行发送,包括:
利用单字节写入接口回调循环读取帧数据的字节数据并写入硬件FIFO缓冲区,同时启动发送过程。
8.根据权利要求1-7任一项所述的数据收发方法,其特征在于,所述数据收发方法还包括:
在数据收发过程中,统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况;
根据接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况,对接收队列、ACK帧队列、发送队列以及环形缓冲区的参数进行调整。
9.一种基于嵌入式串口模块的数据收发装置,其特征在于,所述数据收发装置包括位于传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,以及位于硬件层的硬件FIFO缓冲区;
数据读取单元,用于在串口ISR中,读取硬件FIFO缓冲区的全部外部数据并存入环形缓冲区;
数据解析单元,用于对环形缓冲区中存入的外部数据进行解析,得到接收的数据帧和ACK信息,并将接收的数据帧存储至接收队列供应用层的用户端使用,将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
发送队列,用于存储ACK帧和应用层的用户端需要发送的数据帧;
数据发送单元,用于当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
10.根据权利要求9所述的数据收发装置,其特征在于,所述数据收发装置还包括信息统计单元;
信息统计单元,用于统计每次中断读取字节的个数和环形缓冲区满的情况,以及用于统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况。
CN202310260862.7A 2023-03-17 2023-03-17 基于嵌入式串口模块的数据收发方法及装置 Pending CN116257206A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310260862.7A CN116257206A (zh) 2023-03-17 2023-03-17 基于嵌入式串口模块的数据收发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310260862.7A CN116257206A (zh) 2023-03-17 2023-03-17 基于嵌入式串口模块的数据收发方法及装置

Publications (1)

Publication Number Publication Date
CN116257206A true CN116257206A (zh) 2023-06-13

Family

ID=86679281

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310260862.7A Pending CN116257206A (zh) 2023-03-17 2023-03-17 基于嵌入式串口模块的数据收发方法及装置

Country Status (1)

Country Link
CN (1) CN116257206A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116795756A (zh) * 2023-08-28 2023-09-22 成都量芯集成科技有限公司 一种基于串口通讯的帧数据流软件接收方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116795756A (zh) * 2023-08-28 2023-09-22 成都量芯集成科技有限公司 一种基于串口通讯的帧数据流软件接收方法
CN116795756B (zh) * 2023-08-28 2023-10-27 成都量芯集成科技有限公司 一种基于串口通讯的帧数据流软件接收方法

Similar Documents

Publication Publication Date Title
US8082373B2 (en) Specialized universal serial bus controller
KR100779753B1 (ko) 무선 통신 시스템에서 송신 상태를 폴링하는 방법 및 장치
US7746786B2 (en) Retransmission control method and device
US7986628B2 (en) Communication apparatus and program therefor, and data frame transmission control method
US8867344B2 (en) Methods for bus data transmission and systems utilizing the same
WO2009021417A1 (fr) Procédé, système et dispositif de transmission et de réception de données de réseau
RU2009138237A (ru) Способ и устройство для упорядоченного опроса в системе беспроводной связи
CN116257206A (zh) 基于嵌入式串口模块的数据收发方法及装置
US8553721B2 (en) Channel bonding and packet fragment retransmission method and apparatus
WO2015169057A1 (zh) 报文传输方法、装置及互联接口
KR20040037209A (ko) 손실된 패킷들을 검출하는 방법
US20040078694A1 (en) Event detection and message transmission apparatus, systems, and methods
EP1211856B1 (en) Data transmitter, data receiver, and data transmitting/receiving method
US20240322945A1 (en) Data packet processing method, communication apparatus, and communication system
CN111752579A (zh) 蓝牙终端升级方法、装置、存储介质与电子设备
CN107483287B (zh) 一种自动监测网口数据包收发故障系统及方法
US20220217721A1 (en) Wireless communication device and method
CN117278486A (zh) 一种可靠udp组播的fpga硬件加速系统及方法
CN115378556A (zh) 基于超时的数据重传方法及设备
JPH0955718A (ja) データ通信装置
CN115766519A (zh) 便携通信设备的数据传输方法及系统
US20230199306A1 (en) Communication device and communication system
CN114337942A (zh) 一种报文重传方法、装置及电子设备
CN111865396B (zh) 卫星载荷数据接收监测和自主复位装置及方法
CN113572569B (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