一种STM32单片机与Linux系统高速串口抗干扰通讯方法

文档序号:7779781阅读:437来源:国知局
一种STM32单片机与Linux系统高速串口抗干扰通讯方法
【专利摘要】本发明公开了一种STM32单片机与Linux系统高速串口抗干扰通讯方法,通过STM32单片机对现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,每隔1s就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令。本发明提高了双CPU的处理能力和数据处理速率;减低了串口通讯时丢失数据包的机率;所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收,提高了串口通讯过程中的抗干扰能力。
【专利说明】—种STM32单片机与Linux系统高速串口抗干扰通讯方法
【技术领域】
[0001]本发明涉及一种通讯方法,特别是涉及一种STM32单片机与Linux系统高速串口抗干扰通讯方法。
【背景技术】
[0002]随着计算机的发展,嵌入式设备中多核架构已广泛运用于各个领域,为了满足实时采集丰富的数据并实时处理进行数据处理,为了提高整个系统的实时数据处理能力,通过协处理器采集数据,主CPU进行复杂的数据处理已成为嵌入式系统的发展方向之一。
[0003]双CPU之间的通讯有I/O、串口、SP1、蓝牙和网络等方式。串口通信是指外设和计算机间,通过数据信号线、地址线、控制线等,按位进行传输数据的一种通讯方式,硬件实现简单,不需要操作系统的支持,可以直接由硬件电路实现,硬件成本低,容易实现,它使用数据线少,在远距离通信中可以节约通信成本,最简单的串口通信仅使用3跟线,地址线、接收和发送,可半双工和全双工工作,在嵌入式设备设计中,硬件电路简单,软件开发容易,因此在多CPU嵌入式系统中得到普遍使用。
[0004]中国专利申请号:200810070644.2公开了一种嵌入式系统的串口可靠通讯控制方法,其具体技术方案是:在嵌入式系统中内存连续地址开设一个接收缓冲区FIFO,采用串口中断工作模式,分为前台和后台两个层次,后台完成串口接收功能,前台在串口任务接收完成后对接收缓冲区的数据进行解析处理。当以字节物理地址对接收任务计时,计时器被赋予一非零值,一旦变为零,说明接收任务完成。上述发明较好地解决了串口通讯任务中潜在的非有限性、不连续性和间断性等问题,但是,其双CPU处理能力差异,串口通讯时易出现丢包问题,随着速率的提高,其稳定性,通信距离都会成反比的相应发生变化。

【发明内容】

[0005]本发明的目的在于克服现有技术的不足,提供一种STM32单片机与Linux系统高速串口抗干扰通讯方法,通过STM32单片机对现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,并每隔Is就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令,从而提高双CPU的处理能力和数据处理速率;每隔lsSTM32单片机就将存放在上发Linux系统任务队列中的数据上传至Linux系统,减低串口通讯时丢失数据包的机率;所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收,从而提高串口通讯过程中的抗干扰能力。
[0006]本发明的目的是通过以下技术方案来实现的:一种STM32单片机与Linux系统高速串口抗干扰通讯方法,它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤: 5101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据;
5102:STM32单片机读取各IO 口的状态数据和AD采样值;
5103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列;
5104:STM32单片机根据Linux系统下发的串口数据对获取到的IO 口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列;
5105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106 ;若无CAN数据,则直接执行步骤S106 ;
5106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列;
5107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔Is将数据包上传至Linux系统,并返回步骤SlOl。
[0007]所述的Linux系统数据读写步骤包括以下步骤:
5201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取;
5202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机;
5203:其它任务处理,返回步骤S201。
[0008]所述的步骤S102具体包括以下步骤:
51021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022 ;
51022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023 ;
51023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
[0009]所述的下发STM32单片机任务包括IXD显示任务,若Linux系统向STM32单片机下发IXD显示任务,则STM32单片机解析Linux系统下发的IXD显示数据,并将解析结果写入IXD模块,若Linux系统没有向STM32单片机下发IXD显示任务,则IXD显示内容由STM32单片机控制。
[0010]所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
[0011]所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。
[0012]与现有技术相比,本发明具有以下几个有益效果:
I)通过STM32单片机现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,并每隔Is就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令,从而提高了双CPU的处理能力和数据处理速率;
2)由于每隔lsSTM32单片机就将存放在上发Linux系统任务队列中的数据上传至Linux系统,减低了串口通讯时丢失数据包的机率;
3)所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断模式接收为中断接收,提高了串口通讯过程中的抗干扰能力。
【专利附图】

【附图说明】
[0013]图1为本发明的STM32单片机读写数据流程图;
图2为本发明的Linux系统读写数据流程图;
图3为本发明的步骤S102具体步骤流程图。
【具体实施方式】
[0014]下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
[0015]如图1和2所示,一种STM32单片机与Linux系统高速串口抗干扰通讯方法,它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤:
5101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据;
5102:STM32单片机读取各IO 口的状态数据和AD采样值;
5103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列;
5104:STM32单片机根据Linux系统下发的串口数据对获取到的IO 口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列;
5105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106 ;若无CAN数据,则直接执行步骤S106 ;
5106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列;
5107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔Is将数据包上传至Linux系统,并返回步骤SlOl。
[0016]所述的Linux系统数据读写步骤包括以下步骤:
5201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取;
5202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机;
5203:其它任务处理,返回步骤S201。
[0017]如图3所示,所述的步骤S102具体包括以下步骤:
51021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022 ;
51022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023 ; S1023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
[0018]所述的下发STM32单片机任务包括IXD显示任务,若Linux系统向STM32单片机下发IXD显示任务,则STM32单片机解析Linux系统下发的IXD显示数据,并将解析结果写入IXD模块,若Linux系统没有向STM32单片机下发IXD显示任务,则IXD显示内容由STM32单片机控制。
[0019]所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
[0020]所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。
[0021]通过上述方法有效地提高了双CPU之间的处理能力和数据处理速率,降低了串口通讯过程中数据丢失的机率,提高了串口通讯过程中的抗干扰能力。本发明采用STM32F103VC单片机作为辅助CPU,使得数据处理速率得到了提高,其对中断信号的响应速率快,从而提高了串口通信过程中的抗干扰能力,且功耗低,支持多中外设,能够同时采集多种信息。
[0022]以上所述仅是发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
【权利要求】
1.一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤: 5101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据; 5102:STM32单片机读取各IO 口的状态数据和AD采样值; 5103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列; 5104:STM32单片机根据Linux系统下发的串口数据对获取到的IO 口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列; 5105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106 ;若无CAN数据,则直接执行步骤S106 ; 5106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列; 5107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔Is将数据包上传至Linux系统,并返回步骤SlOl。
2.所述的Linux系统数据读写步骤包括以下步骤: 5201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取; 5202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机; 5203:其它任务处理,返回步骤S201。
3.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的步骤S102具体包括以下步骤: 51021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022 ; 51022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023 ; 51023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
4.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的下发STM32单片机任务包括IXD显示任务,若Linux系统向STM32单片机下发IXD显示任务,则STM32单片机解析Linux系统下发的IXD显示数据,并将解析结果写入IXD模块,若Linux系统没有向STM32单片机下发IXD显示任务,则IXD显示内容由STM32单片机控制。
5.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
6.根据权利要求1-4中任意一项所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。
【文档编号】H04L12/863GK103647728SQ201310668324
【公开日】2014年3月19日 申请日期:2013年12月7日 优先权日:2013年12月7日
【发明者】王春波, 罗康勇 申请人:成都亿盟恒信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1