[发明专利]一种用于串口在FIFO中查找最新有效数据包的方法有效
申请号: | 201910811151.8 | 申请日: | 2019-08-30 |
公开(公告)号: | CN110597482B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 王钦;张波;杨坤;王喆;陈齐文;王祎博 | 申请(专利权)人: | 四川腾盾科技有限公司 |
主分类号: | G06F5/10 | 分类号: | G06F5/10 |
代理公司: | 成都九鼎天元知识产权代理有限公司 51214 | 代理人: | 李想 |
地址: | 610000 四川省成都市金牛高*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 串口 fifo 查找 最新 有效 数据包 方法 | ||
1.一种用于串口在FIFO中查找最新有效数据包的方法,其特征在于,该方法包括如下步骤:
(1)接收串口数据,以获取有效数据长度;
(2)查找有效数据包
1)当有效数据长度小于该串口中定义的数据包长度,退出并返回;否则执行步骤2);
2)将包头位置置为缓存数组中尾指针往后一个数据包长度的位置,检测包头位置初始是否为包头,若为包头且校验正确,则认为找到有效数据包,置有效数据长度为0,并返回包头位置;否则,执行步骤3);
3)将包头位置回溯一个字节查找,检测到包头且该位置往前一个数据包长度位置也为包头且校验正确,认为找到有效数据包,置有效数据长度为回溯次数,并返回包头位置;否则,重复执行并将回溯次数累加,直到查找完有效数据且均未找到有效数据包,置有效数据长度为数据包长度减1,退出并返回包头位置;
(3)取出有效数据包
将缓存数组从包头位置开始,拷贝出一个数据包长度的数据,并将缓存数组中对应位置的数据清0。
2.根据权利要求1所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述步骤(1)中,接收串口数据的步骤如下:
a)读取该串口的FIFO状态寄存器,并将计算器置0;
b)读取该串口的FIFO地址数据到缓存数组,计算器加1;
c)查看FIFO地址数据中的状态位,若为“0”,则FIFO为非空,再次执行步骤b);若为“1”,则FIFO为空,执行步骤d);
d)记录缓存数组中尾指针位置,并返回该计算器本次所读取的字节数,以获取有效数据长度。
3.根据权利要求2所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述步骤a)中,若FIFO状态寄存器中FIFO空标志为空,则返回0并退出;若FIFO状态寄存器中FIFO空标志为非空,则执行步骤b)。
4.根据权利要求2所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述步骤b)中,当缓存数组中尾指针到达缓存数组的末尾时,若还要继续增加则跳到该缓存数组的起始位置。
5.根据权利要求2所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述步骤b)中,所述缓存数组的长度设置为大于两倍该串口中定义的数据包长度,以实现该缓存数组中能够存入至少一个有效数据包。
6.根据权利要求2所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述计算器用于记录从FIFO中读取的数据字节数。
7.根据权利要求1所述的用于串口在FIFO中查找最新有效数据包的方法,其特征在于,所述步骤3)中,回溯次数的初始值为0。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川腾盾科技有限公司,未经四川腾盾科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910811151.8/1.html,转载请声明来源钻瓜专利网。