一种基于ARM的不定字节串口可靠接收方法技术

技术编号:35470261 阅读:16 留言:0更新日期:2022-11-05 16:15
一种基于ARM的不定字节串口可靠接收方法,尤其涉及一种基于ARM的不定字节串口接收可靠性方法,主要用于嵌入式ARM串口通信领域。本发明专利技术包括:(1)配置ARM的串口接收方式为基于DMA外设的接收模式;(2)定时查询DMA数据传输量,将接收的数据存储于数据池中;(3)定时对数据池中的数据进行解析,采用“帧头+数据区+校验位+传输字节数+帧尾”的传输形式,以帧尾作为唯一识别标识,查询正确的帧尾,根据传输字节数截取一帧数据,对该帧数据进行帧头和校验位查验,若均通过校验,则作为正确接收数据,否则记录当前查询位置,作为下次查询的起始指针,通过这种方式实现不定字节串口的可靠性接收。收。收。

【技术实现步骤摘要】
一种基于ARM的不定字节串口可靠接收方法


[0001]本专利技术涉及一种基于ARM的不定字节串口可靠接收方法,尤其涉及一种基于ARM的不定字节串口接收可靠性方法,主要用于嵌入式ARM串口通信领域。

技术介绍

[0002]基于ARM的串口在硬件上没有FIFO缓冲,对于不定字节的口通信,传统的方法是采用中断或查询方式进行单字节传输。中断方式为一个字节传输完成后产生一次中断,如果传输速率较高、传输字节数较多,传输过程会产生多次中断,连续多次中断的出现会扰乱其他正常操作流程。查询方式为不断查询传输完成标志位,获取传输状态,这种方式占用CPU时间过长,程序运行效率较差。基于单字节进行数据通讯的方法,无法满足高可靠高实时的系统需求。
[0003]对于不定字节数据接收,一般采用的方法是定时查询接收到的数据,若未出现正确帧则将整帧数据丢弃,对于出现错帧、漏帧、多字节、少字节的情形,这种方法会造成丢失正确帧、甚至永远搜索不到正确帧的风险。

技术实现思路

[0004]本专利技术解决的技术问题是:克服现有技术的不足,提供了一种基于ARM的不定字节串口可靠接收方法,解决ARM串口未设置硬件FIFO缓冲、接收不定字节数据可靠性差的问题。
[0005]本专利技术的技术解决方案是:一种基于ARM的不定字节串口可靠接收方法,包括:
[0006]配置ARM的串口接收方式为基于DMA外设的接收模式;
[0007]定时查询DMA数据传输量,将接收的数据存储于数据池中;
[0008]定时对数据池中的数据进行解析,采用预设通信格式的传输形式,以帧尾作为唯一识别标识,查询正确的帧尾;若未查询到,则更新查询指针为当前查询最终地址;若查询到,则根据传输字节数截取一帧数据,对该帧数据进行帧头和校验位查验,若均通过校验,则作为正确接收数据,否则记录当前查询位置,作为下次查询的起始指针,实现不定字节串口的接收。
[0009]进一步地,所述DMA外设的配置模式为:
[0010]选择串口相应的DMA通道;
[0011]配置DMA外设地址为串口的数据寄存器地址;
[0012]配置DMA存储器地址为缓冲变量存储区首地址,缓冲变量大小根据串口波特率和定时查询时间确定,设置为查询时间间隔内接收到最大字节数的3倍;
[0013]配置DMA传输方向为外设到存储器;
[0014]配置DMA传输数量为中缓冲变量大小;
[0015]禁止DMA外设地址自动递增;
[0016]使能DMA存储器地址自动递增;
[0017]配置DMA外设数据宽度为8位;
[0018]配置DMA存储器数据宽度为8位;
[0019]配置DMA传输模式为循环传输;
[0020]使能DMA功能。
[0021]进一步地,所述DMA数据传输量通过DMA传输数量寄存器获取,DMA传输数量寄存器指示剩余的待传输字节数目,定时查询DMA传输数量寄存器,用寄存器数据变化量表示DMA数据传输量。
[0022]进一步地,定义结构体变量用于描述所述数据池,所述结构体变量包含接收数据存储区、解析数据存储区、数据存储区当前指针、查询指针、接收数据存储区总长度、帧头长度、帧尾长度、解析数据帧长度、本次接收数量、帧头校验钩子函数、校验位校验钩子函数、帧尾校验钩子函数,其中:
[0023]数据存储区存储接收的数据;
[0024]解析数据存储区存储校验正确的数据;
[0025]数据存储区当前指针表示以此指针作为起始指针进行存储;
[0026]查询指针表示以此指针作为起始指针进行帧尾查验;
[0027]接收数据存储区总长度表示数据存储区总大小,用于进行越界判断;
[0028]帧头长度、帧尾长度分别存储规定的帧头和帧尾长度,用于进行帧头和帧尾查验;
[0029]解析数据帧长度用于存储正确解析的数据帧长度;
[0030]本次接收数量用于存储查询时间间隔内,接收的串口数据长度;
[0031]帧头校验钩子函数、校验位校验钩子函数、帧尾校验钩子函数分别用于挂接各类校验函数。
[0032]进一步地,定时将接收的数据存储于数据池中,具体过程为:DMA配置为循环工作模式,DMA一直处于接收串口数据的状态,将DMA存储器接收的数据,存储于所述的数据池结构体变量接收数据存储区,确定接收的数据长度,并根据接收数据存储区总长度和当前接收数据,更新数据存储区当前指针,避免存储区越界。
[0033]进一步地,定时对数据池中的数据进行解析,根据定时间隔内接收的数据量,判断是否进行解析,若定时间隔内接收数据量为0,则直接跳出解析过程。
[0034]进一步地,所述预设通信格式为帧头、数据区、校验位、传输字节数以及帧尾组合。
[0035]进一步地,对数据池中的数据进行解析,通信双方采用预设通信格式的传输形式,具体过程为:
[0036](1)以查询指针为起始指针,在接收数据存储区中查询通信双方确定的帧尾字符;
[0037](2)查询到正确帧尾时,获取传输字节数,根据传输字节数递推获得帧头指针,以帧头指针为起始指针,对数据进行帧头、校验位查验,同时更新查询指针为当前帧尾指针;
[0038](3)若步骤(2)所述帧头、校验位均查验通过,则查询到正确一帧数据,将该帧数据存储于解析数据存储区;否则抛弃该帧数据。
[0039]进一步地,所述预设通信格式中,帧尾为数据帧的唯一标识符,如果数据区出现规定的帧尾标识符,则在数据区帧尾前添加转义字符0。
[0040]进一步地,所述校验位查验的方法为和校验、CRC校验或固定校验中的任意一种。
[0041]本专利技术与现有技术相比的优点在于:
[0042](1)现有技术多采用单字节串口中断或查询接收方式,中断方式为一个字节传输完成后产生一次中断,如果传输速率较高、传输字节数较多,传输过程会产生多次中断,连续多次中断的出现会扰乱其他正常操作流程。查询方式为不断查询传输完成标志位,获取传输状态,这种方式占用CPU时间过长,程序运行效率较差。本专利技术利用DMA多字节快速移动的特性,可解决多字节数据接收问题。
[0043](2)现有技术定时查询接收到的数据,若未出现正确帧则将数据全部丢弃,对于出现错帧、漏帧、多字节、少字节的情形可能造成丢失正确帧。本专利技术将接收的数据均存入数据池,循环查询所有接收数据,确保接收数据的可靠性。
[0044](3)本专利技术设计方法通用可靠,有助于基于ARM的串口接收设计项目直接移植使用,减少后续维护工作。
附图说明
[0045]图1为本专利技术中配置串口DMA的流程图;
[0046]图2为本专利技术中基于DMA接收串口数据流程图;
[0047]图3为本专利技术中基于数据池对串口数据进行解析流程图。
具体实施方式
[0048]为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ARM的不定字节串口可靠接收方法,其特征在于,包括:配置ARM的串口接收方式为基于DMA外设的接收模式;定时查询DMA数据传输量,将接收的数据存储于数据池中;定时对数据池中的数据进行解析,采用预设通信格式的传输形式,以帧尾作为唯一识别标识,查询正确的帧尾;若未查询到,则更新查询指针为当前查询最终地址;若查询到,则根据传输字节数截取一帧数据,对该帧数据进行帧头和校验位查验,若均通过校验,则作为正确接收数据,否则记录当前查询位置,作为下次查询的起始指针,实现不定字节串口的接收。2.根据权利要求1所述的一种基于ARM的不定字节串口可靠接收方法,其特征在于,所述DMA外设的配置模式为:选择串口相应的DMA通道;配置DMA外设地址为串口的数据寄存器地址;配置DMA存储器地址为缓冲变量存储区首地址,缓冲变量大小根据串口波特率和定时查询时间确定,设置为查询时间间隔内接收到最大字节数的3倍;配置DMA传输方向为外设到存储器;配置DMA传输数量为中缓冲变量大小;禁止DMA外设地址自动递增;使能DMA存储器地址自动递增;配置DMA外设数据宽度为8位;配置DMA存储器数据宽度为8位;配置DMA传输模式为循环传输;使能DMA功能。3.根据权利要求1所述的一种基于ARM的不定字节串口可靠接收方法,其特征在于:所述DMA数据传输量通过DMA传输数量寄存器获取,DMA传输数量寄存器指示剩余的待传输字节数目,定时查询DMA传输数量寄存器,用寄存器数据变化量表示DMA数据传输量。4.根据权利要求1所述的一种基于ARM的不定字节串口可靠接收方法,其特征在于,定义结构体变量用于描述所述数据池,所述结构体变量包含接收数据存储区、解析数据存储区、数据存储区当前指针、查询指针、接收数据存储区总长度、帧头长度、帧尾长度、解析数据帧长度、本次接收数量、帧头校验钩子函数、校验位校验钩子函数、帧尾校验钩子函数,其中:数据存储区存储接收的数据;解析数据存储区存储校验正确的数据;数据存储区当前指针表示以此指针作为起始指针进行存储;查询指针表示以此指针作为起始指针进行帧尾查验;接收数据存储区总长度表示数据存储区总大小,用于进行越...

【专利技术属性】
技术研发人员:陈俐均姜海峰黄超
申请(专利权)人:北京航天控制仪器研究所
类型:发明
国别省市:

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

1