CN103647728A - 一种STM32单片机与Linux系统高速串口抗干扰通讯方法 - Google Patents
一种STM32单片机与Linux系统高速串口抗干扰通讯方法 Download PDFInfo
- 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
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系统高速串口抗干扰通讯方法。
背景技术
随着计算机的发展,嵌入式设备中多核架构已广泛运用于各个领域,为了满足实时采集丰富的数据并实时处理进行数据处理,为了提高整个系统的实时数据处理能力,通过协处理器采集数据,主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数据接收均为中断接收。
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)
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)
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的实时工业以太网硬件系统 |
-
2013
- 2013-12-07 CN CN201310668324.8A patent/CN103647728B/zh active Active
Patent Citations (7)
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)
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 |