CN104660372B - 一种基于单片机异步串行端口多通道数据传输方法及系统 - Google Patents

一种基于单片机异步串行端口多通道数据传输方法及系统 Download PDF

Info

Publication number
CN104660372B
CN104660372B CN201510066566.9A CN201510066566A CN104660372B CN 104660372 B CN104660372 B CN 104660372B CN 201510066566 A CN201510066566 A CN 201510066566A CN 104660372 B CN104660372 B CN 104660372B
Authority
CN
China
Prior art keywords
data
channel
chip microcomputer
address number
equal
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.)
Expired - Fee Related
Application number
CN201510066566.9A
Other languages
English (en)
Other versions
CN104660372A (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.)
CHONGQING HUASHU ROBOTICS Co Ltd
Original Assignee
CHONGQING HUASHU ROBOTICS 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 CHONGQING HUASHU ROBOTICS Co Ltd filed Critical CHONGQING HUASHU ROBOTICS Co Ltd
Priority to CN201510066566.9A priority Critical patent/CN104660372B/zh
Publication of CN104660372A publication Critical patent/CN104660372A/zh
Application granted granted Critical
Publication of CN104660372B publication Critical patent/CN104660372B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种基于单片机异步串行端口多通道数据传输方法及系统,包括配置单片机异步串行端口;单片机接收第一数据;根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,否则进入下一第一数据的接收状态;根据所述第一数据的数据长度码确定相等数量的数据通道数,根据所述第一数据的数据地址号确定需要进行采集和传输的第二数据,将采集的第二数据赋值给数据通道内变量,形成通道数据;将所述通道数据生成一帧完整的报文,传输到主机。本发明实现了数据通道数始终和数据长度码保持一致,避免数据通道的浪费,减少数据的接收和处理时间,提高响应。

Description

一种基于单片机异步串行端口多通道数据传输方法及系统
技术领域
本发明涉及单片机数据传输领域,特别涉及一种基于单片机异步串行端口多通道数据传输方法及系统。
背景技术
近年来单片机技术迅猛发展,在工业控制领域广泛应用。例如:意法半导体为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,时钟频率最大可以达到72MHZ,从闪存执行代码,STM32的功耗36mA,是32位市场上功耗最低的产品。同时STM32最多可支持5路串口,有分数波特率发生器,支持同步单线通信和半双工单线通信。STM32的串口最高可以工作在全双工模式下的115200pbs,可以满足和工业PC及触摸屏的速度要求。
在数据的传输方面不仅要求高速型,而且在很多场合需要多种数据同一时刻同时传输,即多数据多通道同时传输。目前多采用根据需要的最大的数据通道数在软件中定义固定通道数的方式实现,但此方式当数据类型小于固定通道数时,不仅会造成通道的浪费,而且使数据的接收和处理时间延长。
发明内容
本发明所要解决的技术问题是提供一种基于单片机异步串行端口多通道数据传输方法及系统,其数据通道数始终和数据长度码保持一致。
本发明解决上述技术问题的技术方案如下:
一种基于单片机异步串行端口多通道数据传输方法,包括如下步骤:
步骤1,配置单片机异步串行端口;
步骤2,单片机接收第一数据;
步骤3,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,执行步骤4,否则进入下一第一数据的接收状态,返回步骤2;
步骤4,根据所述第一数据的数据长度码确定相等数量的数据通道数,根据所述第一数据的数据地址号确定需要进行采集和传输的第二数据,将采集的第二数据赋值给数据通道内变量,形成通道数据;
步骤5,将所述通道数据生成一帧完整的报文,传输到主机。
本发明的有益效果是:单片机接受的数据中包括数据长度码,单片机对数据进行解析中,根据数据长度码确定相等数量的数据通道数,使数据通道数始终和数据长度码保持一致,避免数据通道的浪费,减少数据的接收和处理时间,提高响应。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述第一数据还包括第一帧头、第一功能指令和第一数据校验码。
进一步,所述步骤3的具体实现为:单片机接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
当所述数据地址号的个数与所述数据长度码相等时,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
进一步,所述根据第一数据的数据地址号确定需要进行采集和传输的第二数据,将所述第二数据赋值给数据通道内变量,形成通道数据的具体实现为:将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据。
进一步,所述步骤5的具体实现为:对所述通道数据进行校验,形成第二数据校验码,将所述第二数据校验码加于所述通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文,传输至主机。
本发明的另一技术方案如下:
一种基于单片机异步串行端口多通道数据传输系统,包括端口配置模块,第一数据接收模块,第一数据解析模块和报文生成传输模块;
所述端口配置模块,其用于配置单片机异步串行端口;
所述第一数据接收模块,其用于单片机接收第一数据,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,否则进入下一第一数据的接收状态;
所述第一数据解析模块,其用于根据所述第一数据的数据长度码确定相等数量的数据通道数,根据所述第一数据的数据地址号确定需要进行采集和传输的第二数据,将采集的第二数据赋值给数据通道内变量,形成通道数据;
所述报文生成传输模块,其用于将所述通道数据生成一帧完整的报文,传输到主机。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述第一数据接收模块包括接收单元和处理单元;
所述接收单元,其用于接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
所述处理单元,其用于判断所述数据地址号的个数与所述数据长度码是否相等,如果相等,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
进一步,所述第一数据解析模块的具体功能包括将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据。
进一步,所述报文生成传输模块包括校验单元、组装单元和传输单元;
所述校验单元,其用于对所述通道数据进行校验,形成第二数据校验码;
所述组装单元,其用于将所述第二数据校验码加于通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文;
所述传输单元,其用于将完整的报文传输至主机。
附图说明
图1为本发明一种基于单片机异步串行端口多通道数据传输方法的方法流程图;
图2为本发明一种基于单片机异步串行端口多通道数据传输系统的原理框图;
图3为本发明一种基于单片机异步串行端口多通道数据传输系统中第一数据接收模块的原理框图;
图4为本发明一种基于单片机异步串行端口多通道数据传输系统中报文生成传输模块的原理框图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种基于单片机异步串行端口多通道数据传输方法,包括如下步骤:
步骤1,配置单片机异步串行端口:
此步骤在STM32上的具体实施是:将STM32异步串行端口配置成全双工收发模式:第一步打开异步串行端口时钟使能,GPIO时钟使能;第二步异步串行端口复位;第三步GPIO端口模式的改变,将异步串行端口接收引脚配置为浮空输入或者上拉输入,将异步串行端口发送引脚配置为推挽输出;第四步进行异步串行端口参数的初始化,设置波特率为19200,开启接收和发送的功能,数据格式为字长8位,一个停止位,无奇偶校验位,无硬件数据流控制位,为了节省中断资源,采用查询的方式判断是否有数据;第五步使能异步串行端口。
步骤2,单片机接收第一数据:
所述第一数据中包括数据长度码,数据地址号;
所述第一数据还包括第一帧头、第一功能指令和第一数据校验码。
STM32一帧数据主要由以下几个部分组成:
帧头:由两个字节定义为0x780x78;
功能指令:不同的指令有不同的功能,开启多通道数据传输的功能指令由一个字节定义为0x0a;
数据长度码:不同的数据类型对应不同的数据长度,定义为一个字节num;
数据地址号:数据地址号数目和数据长度码保持一致,数据地址号由一字节组成,最小的地址号是0x01,根据数据的多少依次递增,每次加1,最大可以表示255个地址号;
数据的CRC16校验码:校验是为了检测数据在传输的过程中是否发生差错,如果根据接收到的CRC值和计算出来的CRC值不一样则数据不可用,CRC16校验的范围不包含0x78组成的帧头,CRC16的值由两个字保存,低8位在前,高8位在后。
故,一帧数据可表示为如下的格式:
0x78 0x78 0x0a num 0x01 0x02 0x03 …… CRC16L CRC16H
步骤3,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,执行步骤4,否则进入下一第一数据的接收状态,返回步骤2:
步骤3的具体实现为:单片机接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
当所述数据地址号的个数与所述数据长度码相等时,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
此步骤在STM32上的具体实施是:STM32在接收到数据帧头0x78后开始对数据进行保存,并进行处理。初始状态异步串行端口为空闲态,通过查询非空标志位是否为1,置1则进行数据的接收,在接收到数据长度码num值后,开始接收并计数数据地址号的个数,当数据地址号的个数等于数据长度码num值,则接收完CRC16的低高位后,开始对数据进行解析,并停止接受数据,接收完成标志位置1,异步串行端口状态变为发送状态;当数据地址号的个数不等于数据类型长度num值,则接收完CRC16的低高位后,不对数据进行解析,进入下一数据的接收状态。
步骤4,根据所述第一数据的数据长度码确定相等数量的数据通道数,根据所述第一数据的数据地址号确定需要进行采集和传输的第二数据,将采集的第二数据赋值给数据通道内变量,形成通道数据:
所述根据第一数据的数据地址号确定需要进行采集和传输的第二数据,将所述第二数据赋值给数据通道内变量,形成通道数据的具体实现为:将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据。
此步骤在STM32上的具体实施是:数据的解析主要是根据数据长度码num值确定相等数量的数据通道数,根据数据地址号确定需要进行数据采集和传输的数据。解析的过程是将接收到的数据地址号通过switch语句进行匹配,当case语句入口不等于数据地址号,则进行下一次地址号的匹配;当case语句入口能等于数据地址号,则将对应变量的地址赋值给指针数组;采用for循环语句循环num次,实现所有的地址号都进行一次匹配。完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内的变量,形成通道数据。
步骤5,将通道数据生成一帧完整的报文,传输到主机:
所述步骤5的具体实现为:对所述通道数据进行校验,形成第二数据校验码,将所述第二数据校验码加于所述通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文,传输至主机。
此步骤在STM32上的具体实施是:在通道内的变量都进行赋值之后,对通道数据进行CRC16校验,将检验码分低8位和高8位加于通道数据尾部,并在通道数据之前加上两个帧头0x78和功能指令,组成一帧完整的报文。通过STM32异步串行端口发送语句,将报文发送到PC机。
当需要关闭数据通道时,只需要在请求报文数据帧中将功能指令修改为停止功能码,STM32在接收到请求报文后,在帧解析的过程中关闭数据通道。
如图2所示,一种基于单片机异步串行端口多通道数据传输系统,包括包括端口配置模块,第一数据接收模块,第一数据解析模块和报文生成传输模块;
所述端口配置模块,其用于配置单片机异步串行端口;
所述第一数据接收模块,其用于单片机接收第一数据,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,否则进入下一第一数据的接收状态;
所述第一数据解析模块,其用于根据所述第一数据的数据长度码确定相等数量的数据通道数,根据所述第一数据的数据地址号确定需要进行采集和传输的第二数据,将采集的第二数据赋值给数据通道内变量,形成通道数据;
所述报文生成传输模块,其用于将所述通道数据生成一帧完整的报文,传输到主机。
如图3所示,所述第一数据接收模块包括接收单元和处理单元;
所述接收单元,其用于接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
所述处理单元,其用于判断所述数据地址号的个数与所述数据长度码是否相等,如果相等,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
所述第一数据解析模块的具体功能包括将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据。
如图4所示,所述报文生成传输模块包括校验单元、组装单元和传输单元;
所述校验单元,其用于对所述通道数据进行校验,形成第二数据校验码;
所述组装单元,其用于将所述第二数据校验码加于通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文;
所述传输单元,其用于将完整的报文传输至主机。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于单片机异步串行端口多通道数据传输方法,其特征在于,包括如下步骤:
步骤1,配置单片机异步串行端口;
步骤2,单片机接收第一数据;
步骤3,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,执行步骤4,否则进入下一第一数据的接收状态,返回步骤2;
步骤4,根据第一数据的数据地址号确定需要进行采集和传输的第二数据,将所述第二数据赋值给数据通道内变量,形成通道数据的具体实现为:将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据;
步骤5,将所述通道数据生成一帧完整的报文,传输到主机。
2.根据权利要求1所述一种基于单片机异步串行端口多通道数据传输方法,其特征在于,所述第一数据还包括第一帧头、第一功能指令和第一数据校验码。
3.根据权利要求2所述一种基于单片机异步串行端口多通道数据传输方法,其特征在于,步骤3的具体实现为:单片机接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
当所述数据地址号的个数与所述数据长度码相等时,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
4.根据权利要求3所述一种基于单片机异步串行端口多通道数据传输方法,其特征在于,步骤5的具体实现为:对所述通道数据进行校验,形成第二数据校验码,将所述第二数据校验码加于所述通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文,传输至主机。
5.一种基于单片机异步串行端口多通道数据传输系统,其特征在于,包括端口配置模块,第一数据接收模块,第一数据解析模块和报文生成传输模块;
所述端口配置模块,其用于配置单片机异步串行端口;
所述第一数据接收模块,其用于单片机接收第一数据,根据所述第一数据的数据地址号的个数与数据长度码是否相等判断是否对第一数据进行解析,如果相等则解析所述第一数据,否则进入下一第一数据的接收状态;
所述第一数据解析模块,其用于将收到的数据地址号通过switch语句进行匹配;如果case语句入口不等于数据地址号,则进行下一数据地址号的匹配;否则将对应变量的地址赋值给指针数组;进行匹配的次数等于数据长度码,通过for语句实现,完成所述匹配后,根据变量的地址顺序对指针数组的各个元素进行取值,按照数据地址号的顺序赋值给数据通道内变量,形成通道数据所述报文生成传输模块,其用于将所述通道数据生成一帧完整的报文,传输到主机。
6.根据权利要求5所述一种基于单片机异步串行端口多通道数据传输系统,其特征在于,所述第一数据接收模块包括接收单元和处理单元;
所述接收单元,其用于接收所述第一数据,获取所述第一数据的数据长度码,开始计数所述数据地址号的个数;
所述处理单元,其用于判断所述数据地址号的个数与所述数据长度码是否相等,如果相等,则开始对所述第一数据进行解析;否则不对第一数据进行解析,进入下一第一数据的接收状态。
7.根据权利要求6所述一种基于单片机异步串行端口多通道数据传输系统,其特征在于,所述报文生成传输模块包括校验单元、组装单元和传输单元;
所述校验单元,其用于对所述通道数据进行校验,形成第二数据校验码;
所述组装单元,其用于将所述第二数据校验码加于通道数据尾部,在通道数据前加第二帧头和第二功能指令,形成完整的报文;
所述传输单元,其用于将完整的报文传输至主机。
CN201510066566.9A 2015-02-09 2015-02-09 一种基于单片机异步串行端口多通道数据传输方法及系统 Expired - Fee Related CN104660372B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510066566.9A CN104660372B (zh) 2015-02-09 2015-02-09 一种基于单片机异步串行端口多通道数据传输方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510066566.9A CN104660372B (zh) 2015-02-09 2015-02-09 一种基于单片机异步串行端口多通道数据传输方法及系统

Publications (2)

Publication Number Publication Date
CN104660372A CN104660372A (zh) 2015-05-27
CN104660372B true CN104660372B (zh) 2018-03-20

Family

ID=53251115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510066566.9A Expired - Fee Related CN104660372B (zh) 2015-02-09 2015-02-09 一种基于单片机异步串行端口多通道数据传输方法及系统

Country Status (1)

Country Link
CN (1) CN104660372B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108008981B (zh) * 2016-10-27 2020-12-08 海信视像科技股份有限公司 一种片上系统SoC中进行程序初始化的方法和装置
CN108924955B (zh) * 2018-07-30 2021-12-14 山东大骋医疗科技有限公司 一种基于双链无线通信的ct数据传输与控制方法及装置
CN111123140A (zh) * 2018-11-01 2020-05-08 台达电子企业管理(上海)有限公司 分时录波方法
CN114168517B (zh) * 2020-09-11 2024-01-16 北京机械设备研究所 一种通用异步串行数据解析方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008000561A1 (de) * 2008-03-07 2009-09-10 Robert Bosch Gmbh Kommunikationssystem mit einem CAN-Bus und Verfahren zum Betreiben eines solchen Kommunikationssystems
CN101944136A (zh) * 2010-09-03 2011-01-12 上海大学 一种记录多路异步串行通讯信息装置和方法
US9880956B2 (en) * 2011-04-06 2018-01-30 Robert Bosch Gmbh Method and apparatus for adapting the data transmission security in a serial bus system
CN103048984B (zh) * 2013-01-17 2013-12-18 中国民航大学 多通道arinc700总线监控装置及实现方法
CN203149558U (zh) * 2013-02-06 2013-08-21 周清云 多串口数据采集卡
CN103616813A (zh) * 2013-12-08 2014-03-05 桂林理工大学 实时多通道并行通用计时测量系统

Also Published As

Publication number Publication date
CN104660372A (zh) 2015-05-27

Similar Documents

Publication Publication Date Title
CN104660372B (zh) 一种基于单片机异步串行端口多通道数据传输方法及系统
CN100521637C (zh) 基于光纤的高速串行工业实时通信总线系统及其控制方法
EP2285029A1 (en) Data transmission method, transmission system and data transmitter
CN106713357A (zh) 一种通用的网络协议解析方法
CN103106166B (zh) 一种协议无关、可支持目标读写操作的pcie ip核用户逻辑接口扩展方法
CN102609222A (zh) 基于命令描述符的闪存控制方法
CN108768981A (zh) 一种实现Powerlink工业实时以太网通讯的IP核
CN110224789A (zh) 一种基于fpga的多模式hdlc控制器
CN109639737A (zh) 协议发生装置、数据采集终端的协议转换方法和配置方法
CN104102160B (zh) 一种can总线信号收发解析工具
CN109842428A (zh) 一种WiFi芯片及自适应方法
CN106941501A (zh) 一种数据通信方法及装置
CN106302071A (zh) 一种适配器、网络设备以及端口配置的方法
CN100543680C (zh) 一种对电能表芯片程序进行下载更新的方法
CN114546394B (zh) 统一的物联网外设接入与控制方法
CN109861998A (zh) 一种基于北斗短报文协议的插件式动态解析系统及方法
CN106598885B (zh) 一种可配置的多端口通用数据桥接系统的工作方法
CN104836639B (zh) 一种可传输多种算法参数的数据传输方法
CN106294225A (zh) 一种数据读取方法、对端设备及控制器
CN106649184A (zh) 适用于星载电子设备的异步通信串口指令快速应答方法
CN103036566B (zh) 一种模拟前端芯片的在线调节控制器
CN104734900A (zh) 一种通信协议测试的发送控制方法
Szecówka et al. USB receiver/transmitter for FPGA implementation
CN104346131B (zh) 一种支持批量读写从机寄存器的主机控制方法
CN201054609Y (zh) 基于光纤的高速串行工业实时通信总线系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180320

CF01 Termination of patent right due to non-payment of annual fee