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

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

Info

Publication number
CN103647728A
CN103647728A CN201310668324.8A CN201310668324A CN103647728A CN 103647728 A CN103647728 A CN 103647728A CN 201310668324 A CN201310668324 A CN 201310668324A CN 103647728 A CN103647728 A CN 103647728A
Authority
CN
China
Prior art keywords
data
linux system
chip microcomputer
stm32 single
task
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.)
Granted
Application number
CN201310668324.8A
Other languages
English (en)
Other versions
CN103647728B (zh
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.)
CHENGDU YIMENG HENGXIN TECHNOLOGY Co Ltd
Original Assignee
CHENGDU YIMENG HENGXIN TECHNOLOGY 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 CHENGDU YIMENG HENGXIN TECHNOLOGY Co Ltd filed Critical CHENGDU YIMENG HENGXIN TECHNOLOGY Co Ltd
Priority to CN201310668324.8A priority Critical patent/CN103647728B/zh
Publication of CN103647728A publication Critical patent/CN103647728A/zh
Application granted granted Critical
Publication of CN103647728B publication Critical patent/CN103647728B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Microcomputers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种STM32单片机与Linux系统高速串口抗干扰通讯方法,通过STM32单片机对现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,每隔1s就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令。本发明提高了双CPU的处理能力和数据处理速率;减低了串口通讯时丢失数据包的机率;所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收,提高了串口通讯过程中的抗干扰能力。

Description

一种STM32单片机与Linux系统高速串口抗干扰通讯方法
技术领域
本发明涉及一种通讯方法,特别是涉及一种STM32单片机与Linux系统高速串口抗干扰通讯方法。
背景技术
随着计算机的发展,嵌入式设备中多核架构已广泛运用于各个领域,为了满足实时采集丰富的数据并实时处理进行数据处理,为了提高整个系统的实时数据处理能力,通过协处理器采集数据,主CPU进行复杂的数据处理已成为嵌入式系统的发展方向之一。
双CPU之间的通讯有I/O、串口、SPI、蓝牙和网络等方式。串口通信是指外设和计算机间,通过数据信号线 、地址线、控制线等,按位进行传输数据的一种通讯方式,硬件实现简单,不需要操作系统的支持,可以直接由硬件电路实现,硬件成本低,容易实现,它使用数据线少,在远距离通信中可以节约通信成本,最简单的串口通信仅使用3跟线,地址线、接收和发送,可半双工和全双工工作,在嵌入式设备设计中,硬件电路简单,软件开发容易,因此在多CPU嵌入式系统中得到普遍使用。
中国专利申请号:200810070644.2公开了一种嵌入式系统的串口可靠通讯控制方法,其具体技术方案是:在嵌入式系统中内存连续地址开设一个接收缓冲区FIFO,采用串口中断工作模式,分为前台和后台两个层次,后台完成串口接收功能,前台在串口任务接收完成后对接收缓冲区的数据进行解析处理。当以字节物理地址对接收任务计时,计时器被赋予一非零值,一旦变为零,说明接收任务完成。上述发明较好地解决了串口通讯任务中潜在的非有限性、不连续性和间断性等问题,但是,其双CPU处理能力差异,串口通讯时易出现丢包问题,随着速率的提高,其稳定性,通信距离都会成反比的相应发生变化。
发明内容
本发明的目的在于克服现有技术的不足,提供一种STM32单片机与Linux系统高速串口抗干扰通讯方法,通过STM32单片机对现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,并每隔1s就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令,从而提高双CPU的处理能力和数据处理速率;每隔1sSTM32单片机就将存放在上发Linux系统任务队列中的数据上传至Linux系统,减低串口通讯时丢失数据包的机率;所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收,从而提高串口通讯过程中的抗干扰能力。
    本发明的目的是通过以下技术方案来实现的:一种STM32单片机与Linux系统高速串口抗干扰通讯方法,它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤:
S101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据;
S102:STM32单片机读取各IO口的状态数据和AD采样值;
S103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列;
S104:STM32单片机根据Linux系统下发的串口数据对获取到的IO口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列;
S105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106;若无CAN数据,则直接执行步骤S106;
S106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列;
S107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔1s将数据包上传至Linux系统,并返回步骤S101。
所述的Linux系统数据读写步骤包括以下步骤:
S201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取;
S202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机;
S203:其它任务处理,返回步骤S201。
    所述的步骤S102具体包括以下步骤:
S1021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022;
S1022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023;
S1023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
    所述的下发STM32单片机任务包括LCD显示任务,若Linux系统向STM32单片机下发LCD显示任务,则STM32单片机解析Linux系统下发的LCD显示数据,并将解析结果写入LCD模块,若Linux系统没有向STM32单片机下发LCD显示任务,则LCD显示内容由STM32单片机控制。
所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。 
与现有技术相比,本发明具有以下几个有益效果:
1)通过STM32单片机现场数据进行采集,并根据Linux系统下发指令对采集到的数据进行读写操作,并将写好的数据放入上发Linux系统任务队列,并每隔1s就将存放在上发Linux系统任务队列中的数据上传至Linux系统;Linux系统根据实时需求向STM32单片机下发任务,STM32单片机解析Linux系统下发的任务指令,并将解析的任务指令放入上发Linux系统任务队列,便于STM32单片机执行相应的任务指令,从而提高了双CPU的处理能力和数据处理速率;
2)由于每隔1sSTM32单片机就将存放在上发Linux系统任务队列中的数据上传至Linux系统,减低了串口通讯时丢失数据包的机率;
3)所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断模式接收为中断接收,提高了串口通讯过程中的抗干扰能力。 
附图说明
图1为本发明的STM32单片机读写数据流程图;
图2为本发明的Linux系统读写数据流程图;
图3为本发明的步骤S102具体步骤流程图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
    如图1和2所示,一种STM32单片机与Linux系统高速串口抗干扰通讯方法,它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤:
S101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据;
S102:STM32单片机读取各IO口的状态数据和AD采样值;
S103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列;
S104:STM32单片机根据Linux系统下发的串口数据对获取到的IO口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列;
S105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106;若无CAN数据,则直接执行步骤S106;
S106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列;
S107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔1s将数据包上传至Linux系统,并返回步骤S101。
所述的Linux系统数据读写步骤包括以下步骤:
S201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取;
S202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机;
S203:其它任务处理,返回步骤S201。
    如图3所示,所述的步骤S102具体包括以下步骤:
S1021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022;
S1022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023;
S1023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
    所述的下发STM32单片机任务包括LCD显示任务,若Linux系统向STM32单片机下发LCD显示任务,则STM32单片机解析Linux系统下发的LCD显示数据,并将解析结果写入LCD模块,若Linux系统没有向STM32单片机下发LCD显示任务,则LCD显示内容由STM32单片机控制。
所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。
通过上述方法有效地提高了双CPU之间的处理能力和数据处理速率,降低了串口通讯过程中数据丢失的机率,提高了串口通讯过程中的抗干扰能力。本发明采用STM32F103VC单片机作为辅助CPU,使得数据处理速率得到了提高,其对中断信号的响应速率快,从而提高了串口通信过程中的抗干扰能力,且功耗低,支持多中外设,能够同时采集多种信息。
以上所述仅是发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。 

Claims (6)

1.一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:它包括一个STM32单片机数据读写步骤和一个Linux系统数据读写步骤,所述的STM32单片机数据读写步骤包括以下步骤:
S101:STM32单片机进入工作状态,Linux系统向STM32单片机下发串口数据;
S102:STM32单片机读取各IO口的状态数据和AD采样值;
S103:STM32单片机解析Linux系统下发的串口数据,并将解析后的数据放入上发Linux系统任务队列;
S104:STM32单片机根据Linux系统下发的串口数据对获取到的IO口数据和AD采样值进行读写操作,并将写好的数据放入上发Linux系统任务队列;
S105:STM32单片机的CAN端口读取CAN数据,若有CAN数据,则对读取到的CAN数据放入上发Linux系统任务队列,执行步骤S106;若无CAN数据,则直接执行步骤S106;
S106:STM32单片机的GPS端口读取GPS数据,并将读取到的GPS数据进行解析,解析结果放入上发Linux系统任务队列;
S107:STM32单片机将上发Linux系统任务队列中的数据进行打包,每隔1s将数据包上传至Linux系统,并返回步骤S101。
2.所述的Linux系统数据读写步骤包括以下步骤:
S201:读取STM32单片机串口数据,并对STM32单片机上传的数据包进行解析,解析结果放入读取队列,便于其它功能模块读取;
S202:读下发STM32单片机任务队列,并根据任务指令写下发数据到STM32单片机;
S203:其它任务处理,返回步骤S201。
3.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的步骤S102具体包括以下步骤:
S1021:判断是否有IC卡插入,若有IC卡插入,则读IC卡信息,并将读取到的IC卡信息写入上发Linux系统任务队列,执行步骤S1022,若无IC卡插入,则直接执行步骤S1022;
S1022:判断是否存在TTS数据,若存在TTS数据,则写语音数据到TTS模块,执行步骤S1023,若没有TTS数据,则直接执行步骤S1023;
S1023:判断是否进行拍照,若正在进行拍照,则将拍照结果放入上发Linux系统任务队列,执行步骤S103,若没有进行拍照,则直接执行步骤S103。
4.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的下发STM32单片机任务包括LCD显示任务,若Linux系统向STM32单片机下发LCD显示任务,则STM32单片机解析Linux系统下发的LCD显示数据,并将解析结果写入LCD模块,若Linux系统没有向STM32单片机下发LCD显示任务,则LCD显示内容由STM32单片机控制。
5.根据权利要求1所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的下发STM32单片机任务包括打印任务,若Linux系统向STM32单片机下发打印任务,则STM32单片机解析Linux系统下发的打印数据,并将解析结果写入上发Linux系统任务队列,若Linux系统没有向STM32单片机下发打印任务,则不进行该步骤。
6.根据权利要求1~4中任意一项所述的一种STM32单片机与Linux系统高速串口抗干扰通讯方法,其特征在于:所述的Linux系统下发STM32单片机串口数据、CAN数据接收和GPS数据接收均为中断接收。
CN201310668324.8A 2013-12-07 2013-12-07 一种STM32单片机与Linux系统高速串口抗干扰通讯方法 Active CN103647728B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310668324.8A CN103647728B (zh) 2013-12-07 2013-12-07 一种STM32单片机与Linux系统高速串口抗干扰通讯方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310668324.8A CN103647728B (zh) 2013-12-07 2013-12-07 一种STM32单片机与Linux系统高速串口抗干扰通讯方法

Publications (2)

Publication Number Publication Date
CN103647728A true CN103647728A (zh) 2014-03-19
CN103647728B CN103647728B (zh) 2016-06-08

Family

ID=50252886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310668324.8A Active CN103647728B (zh) 2013-12-07 2013-12-07 一种STM32单片机与Linux系统高速串口抗干扰通讯方法

Country Status (1)

Country Link
CN (1) CN103647728B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109754802A (zh) * 2019-01-22 2019-05-14 南京晓庄学院 语音控制方法及装置
CN113064733A (zh) * 2020-07-23 2021-07-02 浙江华云信息科技有限公司 基于linux消息队列多应用共享串口的通信方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994027223A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Identification and self-configuration of serially-connected communications devices
CN101241451A (zh) * 2008-02-20 2008-08-13 福建师范大学 一种嵌入式系统的串口可靠通讯控制方法
CN201584057U (zh) * 2009-04-21 2010-09-15 广东农工商职业技术学院 一种车辆检测器
CN202092668U (zh) * 2011-05-05 2011-12-28 武汉长江仪器自动化研究所 可自由组网的无线灌浆数据监测系统
CN102331485A (zh) * 2011-07-12 2012-01-25 华东理工大学 一种便携式水质监测仪
CN102496199A (zh) * 2011-12-12 2012-06-13 山东大学 具有无线自组网功能的智能门禁控制系统及方法
CN102780596A (zh) * 2012-07-12 2012-11-14 浙江工业大学 基于epon的实时工业以太网硬件系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994027223A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Identification and self-configuration of serially-connected communications devices
CN101241451A (zh) * 2008-02-20 2008-08-13 福建师范大学 一种嵌入式系统的串口可靠通讯控制方法
CN201584057U (zh) * 2009-04-21 2010-09-15 广东农工商职业技术学院 一种车辆检测器
CN202092668U (zh) * 2011-05-05 2011-12-28 武汉长江仪器自动化研究所 可自由组网的无线灌浆数据监测系统
CN102331485A (zh) * 2011-07-12 2012-01-25 华东理工大学 一种便携式水质监测仪
CN102496199A (zh) * 2011-12-12 2012-06-13 山东大学 具有无线自组网功能的智能门禁控制系统及方法
CN102780596A (zh) * 2012-07-12 2012-11-14 浙江工业大学 基于epon的实时工业以太网硬件系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109754802A (zh) * 2019-01-22 2019-05-14 南京晓庄学院 语音控制方法及装置
CN113064733A (zh) * 2020-07-23 2021-07-02 浙江华云信息科技有限公司 基于linux消息队列多应用共享串口的通信方法

Also Published As

Publication number Publication date
CN103647728B (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
CN104385787B (zh) 一种激光打标机的控制方法及激光打标机
CN106155960B (zh) 基于gpio握手和edma的uart串口通信方法
CN103914424B (zh) 基于gpio接口的lpc外设扩展方法及装置
CN102298508B (zh) 基于流的固态硬盘预读取的方法及装置
CN202443357U (zh) 一种具有对等通信功能的多pcie信号接口主板
CN101866328A (zh) 一种自动访问的串行总线读写控制方法
CN110941582B (zh) 一种bmc芯片的usb总线结构及其通信方法
CN102073611B (zh) 一种i2c总线控制系统及方法
WO2022213865A1 (zh) 计算机设备、虚拟化加速设备、数据传输方法及存储介质
WO2022032990A1 (zh) 一种命令信息传输方法、系统、装置及可读存储介质
CN101393542B (zh) 通过gpio端口支持usb接口的嵌入式设备及方法
CN102546033A (zh) 采用脉冲调制结合串口方式实现的多机通信装置
CN103488600A (zh) 通用从机同步串行接口电路
CN102750245B (zh) 报文接收方法、报文接收模块、装置及系统
CN107168710B (zh) 一种基于阻塞接收机制的嵌入式Linux串口驱动开发方法
CN101763324B (zh) 设备模拟的实现方法和装置
CN111124985A (zh) 一种移动终端只读控制方法及装置
CN103077142A (zh) 一种简易的总线传输协议的通信方法
CN103647728A (zh) 一种STM32单片机与Linux系统高速串口抗干扰通讯方法
CN101604304B (zh) 一种多cpu间通信的方法和继电保护装置
CN103838694B (zh) 一种fpga高速读取usb接口数据的方法
CN103593316B (zh) 一种减少mcu中断占用i2c总线时间的方法
CN102890661A (zh) 一种主从机通讯协议
CN103678056A (zh) 一种pcie总线设备控制功能的测试方法
CN106294235A (zh) 一种基于轮询/中断的实时虚拟无线电数据的同步方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant