CN115390917A - 一种mcu接收数据的处理方法和存储介质 - Google Patents

一种mcu接收数据的处理方法和存储介质 Download PDF

Info

Publication number
CN115390917A
CN115390917A CN202210775185.8A CN202210775185A CN115390917A CN 115390917 A CN115390917 A CN 115390917A CN 202210775185 A CN202210775185 A CN 202210775185A CN 115390917 A CN115390917 A CN 115390917A
Authority
CN
China
Prior art keywords
data stream
data
mcu
processing method
main process
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
CN202210775185.8A
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.)
Guangdong Jaten Robot and Automation Co Ltd
Original Assignee
Guangdong Jaten Robot and Automation 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 Guangdong Jaten Robot and Automation Co Ltd filed Critical Guangdong Jaten Robot and Automation Co Ltd
Priority to CN202210775185.8A priority Critical patent/CN115390917A/zh
Publication of CN115390917A publication Critical patent/CN115390917A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种MCU接收数据的处理方法和存储介质,方法包括如下步骤:MCU检测到数据,退出主进程,进入中断程序接收数据;对数据进行预处理,包括将数据存放于结构体中,至数据接收完毕;结束中断程序,返回主进程。与现有技术相比,本发明的方法将接收到的数据先存储于结构体中,等到主进程的其他任务执行完毕后,再进行处理,以此提升MCU处理数据的效率,防止MCU短时间内接收和处理大量数据,造成堵塞或数据丢失的情况发生。

Description

一种MCU接收数据的处理方法和存储介质
技术领域
本发明涉及MCU数据流处理技术领域,尤其是一种MCU接收数据的处理方法和存储介质。
背景技术
现有的MCU接收数据的处理方法包括3个基本流程:检测、接收和处理,现有的程序将3个流程同步处理,如果传输的数据流并非复杂数据流,MCU时钟频率较快,程序并无过多的其他任务等待处理,MCU都能轻松按以上3个流程完成数据流处理工作。但是在实际应用中,MCU都会伴随着其他任务一起执行,而且在许多公司中自由协议的使用特别频繁,尤其使用上了加密解密协议后更甚,这样,增加了MCU的负担。所以当将上诉流程同步执行时,容易出现数据丢失或者阻塞程序执行的情况,导致BUG的出现。而随着单片机的广泛使用,在某些项目上使用的到串口数量会增加,再加上自由协议的使用,会使得单片机在通信的时候负担增加,尤其针对性能不够强的单片机或串口一次性发送大量数据的时候,若处理不及时或妥当的处理会使得数据丢失。
发明内容
本发明第一个发明的目的在于克服现有的MCU接收数据的处理方法在一次性接收大量数据时,数据容易丢失的问题,提供一种通过增加结构体变量来存储数据的MCU接收数据的处理方法。
为了达到上述目的,本发明的采用以下技术方案:
MCU接收数据的处理方法,包括如下步骤:监听数据流,当监听有数据流进入,退出主进程进入中断程序;接收数据流,对数据流进行预处理并选择性的将数据流存放于结构体中;结束中断程序,返回主进程。
与现有技术相比,本发明的方法将接收到的数据流先存储于结构体中,等到主进程的其他任务执行完毕后,再进行处理,以此提升MCU处理数据流的效率,防止MCU短时间内接收和处理大量数据流,造成堵塞或数据流丢失的情况发生。
优选的,对数据流预处理包括校验数据流,将符合要求的数据流存储于结构体中。在本方案中,数据流预处理包括校验数据流和存储数据流,只存储符合要求的数据流,可避免数据流量大,堵塞程序。
优选的,所述校验数据流包括识别数据流的协议类型,若为自由协议,即将数据流存储于结构体中,若为非自由协议,即将数据流忽略。本方案中,带自由协议的数据流为有效数据,可存储于结构体中,放在主进程中处理,无自由协议的数据流为无效数据,可以直接忽略,不需要存储于结构体中。
优选的,对有结束码的数据流,根据有无结束码判定同组数据流是否接收完毕,对无结束码的数据流,根据间隔两个字节的传输时间内无新数据输入,判断同组数据流是否接收完毕。
为通过结构体储存数据流,MCU建立一个结构体变量,并根据接收数据流的总字节量n 将结构体变量拓展为N个结构体,公式为N=T/(n*ti),T为MCU处理其他任务的时间,ti为字节传输速率。本方案中,每个结构体可存储等量的数据流,可避免新数据流将已存储于结构体中的数据流覆盖,造成数据流丢失。
本发明的另一个发明目的在于提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现第一发明目的所述的MCU接收数据的处理方法。与现有技术相比,本方案的存储介质可用于执行上述的方法,因此,具有上述方法的所有优点。
附图说明
图1为本发明的流程框图。
具体实施方式
参见图1所示,本发明公开了一种AGV单机交管方法,包括如下步骤:
本发明公开了一种MCU接收数据的处理方法,包括如下步骤:
监听数据流,当监听有数据流进入,退出主进程进入中断程序;
即MCU检测到数据流后,暂停主函数大循环,进入中断函数中。
接收数据流,对数据流进行预处理并选择性的将数据流存放于结构体中,
对数据流进行预处理,将数据流存放于结构体中,至数据流接收完毕;
结束中断程序,返回主进程。
在一实施例中,MCU通过寄存器获取数据流,MCU在中断函数中处理数据流,包括预处理和将数据流存储于结构体中。
在一实施例中,对数据流预处理包括校验数据流,将符合要求的数据流存储于结构体中,不符合要求的数据流忽略。在本方案中,数据流预处理包括校验数据流和存储数据流,只存储符合要求的数据流,可避免大量无效数据流影响MCU的正常工作、堵塞程序。
在一实施例中,校验数据流包括校验数据流是否符合自由协议,不符合自由协议的数据流忽略,符合自由协议的数据流存储于结构体中。本方案中,带自由协议的数据流为有效数据流,可存储于结构体中,放在主进程中处理,无自由协议的数据流为无效数据流,可以直接忽略,不需要存储于结构体中。
在一实施例中,对有结束码的数据流,根据有无结束码判定同组数据流是否接收完毕,对无结束码的数据流,根据间隔两个字节的传输时间内无新数据输入,判断同组数据流是否接收完毕。本实施例中,由于不是所有数据流都带有结束吗,因此,对于有结束码的数据流,通过有无结束码即可判断是否属同组数据流,对于无结束码的数据流,可根据是否间隔达到2个字节的时间判断是否属于同组数据流,当无结束码且两个字节之间的间隔少于两个字节的传输时间,则判断为同组数据流,当无结束码且两个字节之间的间隔达到两个字节的传输时间,则判断为两组数据流,这样可有效提升处理效率,缩短中断程序占用的时间。
在一实施例中,对于带自由协议的数据,还可根据数据是否带有头码判断该数据是否属于新的数据流。由于带自由协议的数据流以头码作为开头,因此,可根据是否具有头码判断是否属于新的数据流。
在一实施例中,在主进程中处理结构体内存储的数据流,即数据流处理放在主进程中进行,可有效避免中断程序占用时间过长,造成程序堵塞。
在一实施例中,上述数据流处理是指将接收的数据流写入SD卡。
为通过结构体储存数据流,MCU建立一个结构体变量,并根据接收数据流的总字节量n 将结构体变量拓展为N个结构体,公式为N=T/(n*ti),T为MCU处理其他任务的时间,ti为字节传输速率。本方案可避免新数据流将已存储于结构体中的数据流覆盖,造成数据流丢失。
在一实施例中,所述MCU采用串行传输的方式接收数据。
与现有技术相比,本发明的方法将接收到的数据流先存储于结构体中,等到主进程的其他任务执行完毕后,再进行处理,以此提升MCU处理数据流的效率,防止MCU短时间内接收和处理大量数据流,造成堵塞或数据流丢失的情况发生。
本发明还公开了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时上述实施例的MCU接收数据的处理方法。
以下举例说明本方案:
以STM32F103RCT6单片机为MCU,接收数据流并储存到SD卡,每个数据流流为10个字节为例。经过测试发现,采用现有方案时,包括检测到数据流、接收数据流和处理数据流这三大步骤,其中接收数据流和处理数据流均需在中断程序进行,处理数据流所花费的时间为13毫秒,程序会在接收数据流后阻塞13毫秒,并且数据流流之间的间隔至少间隔13 毫秒才能保证MCU不出现异常情况。而本发明的方法是包括检测数据流、接收数据流、数据流预处理三个步骤,其中接收数据流和数据流预处理在中断程序进行。以9600波特率为例子,一个字节所有时间为104.1667微秒,10个字节为10.41667微秒,而数据流预处理所占的时间只有几微秒,因此,中断程序的时间总时间不会超过1毫秒。如接收数据流后又有新的数据流流,两个数据流流之间的间隔只需要两个字节的时间,即不超过1毫秒。因此,当使用本发明的方法后,程序不会发生阻塞,且数据流流之间的间隔只需要间隔在1ms 左右,大大提高了MCU处理接收数据流的能力。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对本发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何限制。

Claims (7)

1.一种MCU接收数据的处理方法,其特征在于,包括如下步骤:
监听数据流,当监听有数据流进入,退出主进程进入中断程序;
接收数据流,对数据流进行预处理并选择性的将数据流存放于结构体中;
结束中断程序,返回主进程。
2.根据权利要求1所述的MCU接收数据的处理方法,其特征在于:对数据流预处理包括校验数据流,将符合要求的数据流存储于结构体中。
3.根据权利要求2所述的MCU接收数据的处理方法,其特征在于:所述校验数据流包括识别数据流的协议类型,若为自由协议,即将数据流存储于结构体中,若为非自由协议,即将数据流忽略。
4.根据权利要求1所述的MCU接收数据的处理方法,其特征在于:对有结束码的数据流,根据有无结束码判定同组数据流是否接收完毕,对无结束码的数据流,根据间隔两个字节的传输时间内无新数据输入,判断同组数据流是否接收完毕。
5.根据权利要求1所述的MCU接收数据的处理方法,其特征在于:在主进程中处理结构体的数据流。
6.根据权利要求3所述的MCU接收数据的处理方法,其特征在于:MCU建立一个结构体变量,并根据接收数据流的总字节数将结构体变量拓展为N个结构体,使结构体的个数N由公式N=T/(n*t1)。
7.一种存储介质,所述存储介质上存储有计算机程序,其特征在于:所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1-6任一项所述的MCU接收数据的处理方法。
CN202210775185.8A 2022-07-01 2022-07-01 一种mcu接收数据的处理方法和存储介质 Pending CN115390917A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210775185.8A CN115390917A (zh) 2022-07-01 2022-07-01 一种mcu接收数据的处理方法和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210775185.8A CN115390917A (zh) 2022-07-01 2022-07-01 一种mcu接收数据的处理方法和存储介质

Publications (1)

Publication Number Publication Date
CN115390917A true CN115390917A (zh) 2022-11-25

Family

ID=84116029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210775185.8A Pending CN115390917A (zh) 2022-07-01 2022-07-01 一种mcu接收数据的处理方法和存储介质

Country Status (1)

Country Link
CN (1) CN115390917A (zh)

Similar Documents

Publication Publication Date Title
EP0852357B1 (en) Method for handling interrupts in a high speed I/O controller
US20080049617A1 (en) System for fine grained flow-control concurrency to prevent excessive packet loss
US7978705B2 (en) Self-healing link sequence counts within a circular buffer
CN103577294B (zh) 用于互连跟踪的方法和装置
CN112565036B (zh) 数据传输方法、装置、存储介质及通信系统
US6201817B1 (en) Memory based buffering for a UART or a parallel UART like interface
JP3552258B2 (ja) 分散計算機システム及びその情報管理方法
CN107122282A (zh) 一种基于spi总线的功能安全通信方法
CN115390917A (zh) 一种mcu接收数据的处理方法和存储介质
US20020004868A1 (en) Parallel processing system in which use efficiency of CPU is improved and parallel processing method for the same
KR20170117326A (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
US6647100B1 (en) Universal Serial Bus datapump command interpreter
CN101383819B (zh) 异步串行数据线信息收发方法及异步串行收发器
US6629164B1 (en) Character counter and match registers in a serial interface
CN110505607B (zh) 基于蓝牙安全设备的通信方法、蓝牙芯片及蓝牙安全设备
US5793803A (en) Underrecovery system and method for block processing modems
CN110687854A (zh) 一种pa总线控制器以及一种pa总线控制系统
JPH0458646A (ja) バッファ管理方式
KR100469430B1 (ko) 화상통신용 단말기의 영상/음성 데이터 처리 회로
CN116185936B (zh) 一种spi通信数据收发异常检测控制系统及检测方法
CN114356600A (zh) 多路复用通信方法、装置、第一芯片和第二芯片
CN109257251B (zh) 多板卡多模块心跳检测方法、装置、系统及计算机存储介质
CN117692273A (zh) Can帧的发送方法、装置及系统
CN118295954A (zh) 基于PCIe协议的处理卡的数据传输方法和通信系统
CN117319183A (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