基于嵌入式串口模块的数据收发方法及装置制造方法及图纸

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

【技术实现步骤摘要】
基于嵌入式串口模块的数据收发方法及装置


[0001]本专利技术涉及串口数据收发
,尤其涉及一种基于嵌入式串口模块的数据收发方法及装置。

技术介绍

[0002]串口,即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)是一种通用串行数据总线,是嵌入式设备对外交互中一种最常见的数据传输方式。串口通过一对信号线连接两个设备,两个设备采用约定的波特率进行通信,实现数据的全双工发送和接收通信,串口通信的内容通常是以一个二进制帧为单位。
[0003]随着物联网的深入发展和嵌入式多核技术的广泛应用,嵌入式设备与外界进行数据交互的频率和数据量在不断提高,串口收发数据的处理方法直接关系到设备通信性能的优劣,是嵌入式设备数据处理中极为重要的一个环节。
[0004]但是,现有技术中的串口模块的收发数据处理流程不清晰,软硬件耦合性强,移植性和可扩展性差,难以支持多核并发处理,并且不能支持模块的自测试设计,难以监控数据收发过程中出现的异常。
[0005]因此,亟需一种串口模块在收发数据处理过程中的技术方案。

技术实现思路

[0006]鉴于上述的分析,本专利技术实施例旨在提供一种基于嵌入式串口模块的数据收发方法及装置,用以解决现有技术中串口模块软硬件耦合性强以及难以监控数据收发过程的问题。
[0007]一方面,本专利技术实施例提供了一种基于嵌入式串口模块的数据收发方法,所述数据收发方法包括:
[0008]当外部数据存入至硬件FIFO缓冲区时,触发串口中断服务程序ISR;在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
[0009]根据接收的数据帧判断是否需要进行ACK回传,当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
[0010]基于上述方法的进一步改进,所述读取全部外部数据并存入环形缓冲区,包括:
[0011]利用单字节读取接口回调循环读取全部外部数据中的每一个字节,并存入环形缓冲区。
[0012]基于上述方法的进一步改进,所述对环形缓冲区中存入的外部数据进行解析,包括:
[0013]利用嵌入式操作系统EOS支持的任务或软中断机制,连续读取和解析环形缓冲区
中的字节数据,识别出帧头、帧长和帧尾,直至解析出一个完整帧。
[0014]基于上述方法的进一步改进,当根据接收的数据帧判断需要进行回传时,封装一个ACK帧,直接高优先级插入至发送队列。
[0015]基于上述方法的进一步改进,所述数据收发方法还包括:
[0016]在预设验证时间的范围内,对ACK帧队列中的ACK信息进行查询,以判断用户端需要发送的数据帧是否发送成功;
[0017]当发送失败时,启动预设次数的重发机制或者重新发送直至验证到用户端需要发送的数据帧发送成功。
[0018]基于上述方法的进一步改进,所述数据收发方法还包括:
[0019]在串口ISR中,统计每次中断读取字节的个数和环形缓冲区满的情况;
[0020]根据读取字节的个数判断硬件FIFO缓冲区是否发生故障,根据环形缓冲区满的情况判断环形缓冲区是否发生故障。
[0021]基于上述方法的进一步改进,所述读取帧数据并写入到硬件FIFO缓冲区进行发送,包括:
[0022]利用单字节写入接口回调循环读取帧数据的字节数据并写入硬件FIFO缓冲区,同时启动发送过程。
[0023]基于上述方法的进一步改进,所述数据收发方法还包括:
[0024]在数据收发过程中,统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况;
[0025]根据接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况,对接收队列、ACK帧队列、发送队列以及环形缓冲区的参数进行调整。
[0026]另一方面,本专利技术实施例提供了一种基于嵌入式串口模块的数据收发装置,所述数据收发装置包括位于传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,以及位于硬件层的硬件FIFO缓冲区;
[0027]数据读取单元,用于在串口ISR中,读取硬件FIFO缓冲区的全部外部数据并存入环形缓冲区;
[0028]数据解析单元,用于对环形缓冲区中存入的外部数据进行解析,得到接收的数据帧和ACK信息,并将接收的数据帧存储至接收队列供应用层的用户端使用,将ACK信息存入至ACK帧队列用于判断数据是否发送成功;
[0029]发送队列,用于存储ACK帧和应用层的用户端需要发送的数据帧;
[0030]数据发送单元,用于当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送。
[0031]基于上述装置的进一步改进,所述数据收发装置还包括信息统计单元;
[0032]信息统计单元,用于统计每次中断读取字节的个数和环形缓冲区满的情况,以及用于统计接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况。
[0033]与现有技术相比,本专利技术至少可实现如下有益效果之一:
[0034]1、本专利技术通过传输层的数据读取单元、环形缓冲区、数据解析单元、接收队列、ACK帧队列、发送队列和数据发送单元,并且数据发送和接收时采用接口回调和队列技术解耦
了硬件层和应用层,提高了串口模块的移植性和可扩展性。
[0035]2、本专利技术通过在串口ISR中,读取全部外部数据并存入环形缓冲区;对环形缓冲区中存入的外部数据进行解析得到接收的数据帧和ACK信息;将接收的数据帧存储至接收队列供用户端使用,同时将ACK信息存入至ACK帧队列用于判断数据是否发送成功;当需要进行ACK回传时,将ACK帧和用户端需要发送的数据帧存入发送队列;当发送队列中存储有帧数据时,按照帧的先后顺序读取帧数据并写入到硬件FIFO缓冲区进行发送,实现了串口模块的数据收发。
[0036]3、本专利技术通过统计在数据收发过程中接收队列满的情况、ACK帧队列满的情况、发送队列满的情况以及环形缓冲区满的情况对相关的队列的参数进行调整,实现了数据收发过程的监控,降低了串口模块的异常处理成本。
[0037]本专利技术中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本专利技术的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
[0038]附图仅用于示出具体实施例的目的,而并不本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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缓冲区是否...

【专利技术属性】
技术研发人员:任文龙陈路敬维由易松刘轩
申请(专利权)人:四川九洲电器集团有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1