CN111679935A - 一种基于dma与中断融合的组态监控容错通信方法 - Google Patents
一种基于dma与中断融合的组态监控容错通信方法 Download PDFInfo
- Publication number
- CN111679935A CN111679935A CN202010345072.5A CN202010345072A CN111679935A CN 111679935 A CN111679935 A CN 111679935A CN 202010345072 A CN202010345072 A CN 202010345072A CN 111679935 A CN111679935 A CN 111679935A
- Authority
- CN
- China
- Prior art keywords
- data
- dma
- controller
- configuration monitoring
- interrupt
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种基于DMA与中断融合的组态监控容错通信方法,方法应用于组态监控系统,所述系统包括:组态监控界面、主控制器和底层控制器;底层控制器将状态参数通过CAN总线传输至所述主控制器;主控制器将状态参数再传输至组态监控界面;方法为:组态监控界面与主控制器进行数据通信握手;设计DMA控制器的连接结构,创建DMA控制器与串口数据交互桥接的通道;DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传。本发明提供的技术方案带来的有益效果是:采用DMA控制器发送中断和串口接收中断,用来执行数据变长的收发任务,实现舰船并网控制系统中监控模块庞杂数据的实时交互通信目标。
Description
技术领域
本发明涉及串口通信领域,尤其涉及一种基于DMA与中断融合的组态监控容错通信方法。
背景技术
舰船并网控制装置中的监控系统通常由舰船底层控制器、主控制器和组态模块等组成。由于舰船并网控制系统中监控模块需要对底层电气设备(如发电机、逆变器和斩波器等)等装置数量庞大的健康状态量进行监控,因此,主控制器需要处理如此庞杂的数据量并上传给组态模块,以及组态模块根据处理后的结果下达给主控制器。为适应这些情况,对舰船并网控制系统中监控模块的串口通信有了更高的技术要求。并且由于庞杂的交互数据实时变化,极易造成数据长度超过缓冲器阈值,致使控制器无法正常通信,进而产生数据丢失,势必会造成舰船并网控制系统中监控模块不能实时读取底层电气设备的健康状态、下达来自主控制器的控制指令和回传指令给主控制器。因此,实现数据的变长收发,对于舰船并网控制系统中监控模块的串口通信就显得尤为重要。
目前串口通信技术有许多种,如查询法、中断法和DMA控制器法等,如何解决大容量的变字节长度的数据通信仍然是串口通信技术领域中的一个难点问题。DMA(DirectMemory Access:直接存储器存取)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。之所以将它归属于外设,是因为它是在处理器的编程控制下来执行传输任务的。传统的串口通信方法对于查询法的串口通信而言,它是利用代码来识别相关寄存器标志位的状态,再依据寄存器标志位状态执行对应操作,该方法适用于循环数据收发,且查询法耗费大量CPU资源,因而极大地降低了CPU性能。基于中断法的串口通信,是外设发送数据后产生中断,通知CPU读取数据。对比研究中断法和查询法得知,中断法效率更高,不过中断法需要保存断点和恢复断点操作,且发送数据的时间间隔小于断点保存和恢复的时间,势必会造成数据丢失。因此,中断法适用于外设通信数据定长收发场合。
理论研究与运行实践表明,如果单独使用DMA控制器法,并不能解决数据实时变长收发的技术难题。
发明内容
有鉴于此,针对舰船并网控制系统中监控模块的大容量、变字节长度的数据实时通信技术难题,本发明提出了一种基于DMA控制器和中断融合使用的串口通信方法,采用DMA控制器发送中断和串口接收中断用来数据变长收发,实现舰船并网控制系统中监控模块的庞杂数据实时交互,完成交互数据在以STM32F417充当CPU的主控制器、以组态监控软件,实现底层控制器与上位机之间健康、可靠、实时串口通信。
本发明提供了一种基于DMA与中断融合的组态监控容错通信方法,应用于基于DMA与中断融合的组态监控系统,所述组态监控系统具体包括:
组态监控界面、主控制器和底层控制器;
所述组态监控界面,包括上位机接口,用于显示所述底层控制器的状态参数数据;所述主控制器,包括ARM芯片、串口RS485隔离模块、CAN隔离模块,用于处理来自所述底层控制器的状态参数数据,并将状态参数上传至所述组态监控界面;所述底层控制器,包括舰船电网电站控制器、斩波控制器和逆变控制器,用于舰船电网的电网控制;
所述组态监控界面与所述主控制器通过所述上位机接口电气连接;所述ARM芯片包括串口RS485收发器、CAN接口、DMA控制器和中断模块;所述串口RS485收发器与所述串口RS485隔离模块电气连接;所述串口RS485隔离模块与所述上位机接口电气连接;所述CAN接口与所述CAN隔离模块电气连接;所述CAN隔离模块与所述底层控制器电气连接;
所述一种基于DMA与中断融合的组态监控容错通信方法包括:
S101:所述组态监控界面通过所述上位机接口与所述主控制器采用ASCII型通信协议进行数据通信握手;
S102:通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道;
S103:基于建立好的所述DMA控制器与串口数据交互桥接的通道,所述ARM芯片复位,处于空闲状态,并等待DMA数据通信请求;
S104:所述DMA控制器检测数据通信总线是否处于空闲状态?若是,则所述DMA控制器向所述ARM芯片发送数据通信请求;否则,所述DMA控制器等待数据通信总线处于空闲状态时,再发送所述ARM芯片发送数据通信请求;
S105:所述ARM芯片读取所述DMA控制器的数据通信请求,并释放数据通信总线控制权;
S106:所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输。
进一步地,所述主控制器的数据通信总线包括APB总线和AHB总线,所述APB总线用于挂载高速设备,所述AHB总线用于挂载低速设备;所述ARM芯片为基于AHB总线协议架构的片上系统芯片,包括AHB-MASTER接口和AHB-SLAVE接口;所述DMA控制器也包括AHB-MASTER接口和AHB-SLAVE接口。
进一步地,所述ARM芯片还包括复位电路、晶振电路和存储电路;所述组态监控系统还包括电源,用于组态监控系统的供电。
进一步地,步骤S101中所述ASCII型通信协议,具体如下:
所述ASCII型通信协议,包括不同的读写命令格式,具体为:所述组态监控界面写命令格式、所述主控制器写命令正确格式、所述主控制器写命令错误格式、所述组态监控界面读命令格式、主控制器读命令正确格式和所述主控制器读命令错误格式;所述读写命令格式由字头、数据位和校验位组成,其中数据位为可变长度,最大写命令长度为kW个字节、最大读命令长度为kR个字节,kW、kR均为预设值。
进一步地,步骤S101中所述组态监控界面与所述主控制器通讯握手过程具体如下:
步骤S101中所述组态监控界面与所述主控制器通讯握手过程具体如下:
当所述组态监控界面发送写命令格式,即处于写命令工作模式下,当所述组态监控界面的写命令格式下的数据帧长度为n个字节时,所述主控制器的工作模式为应答写命令,n为预设值;同时校验所述组态监控界面发送的写命令格式一帧数据中的字头和校验位,若校验成功,则所述主控制器响应输出写命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出写命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
当所述组态监控界面发送读命令格式,即处于读命令工作模式下,当所述组态监控界面的读命令格式下的数据帧长度为p个字节时,所述主控制器的工作模式为应答读命令,p为预设值;同时校验所述组态监控界面发送的读命令格式一帧数据中的字头和CR位,若校验成功,则所述主控制器响应输出读命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出读命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
在所述组态监控界面与所述主控制器通信握手失败时,所述组态监控界面重复发送写命令格式或者读命令格式的一帧数据,所述主控制器校验数据,直至所述组态监控界面与所述主控制器通信握手成功。
进一步地,步骤S102中通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道,具体为:
S201:所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,初始化所述DMA控制器内部寄存器;
S202:所述ARM芯片释放AHB总线控制权;所述DMA控制器得到AHB总线空闲信号并开启DMA控制器发送中断请求;
S203:所述DMA控制器还通过AHB-MASTER接口基于AHB总线信道链接到AHB/APB1桥接转换器;
S204:所述AHB/APB1桥接转换器通过APB总线信道链接到串口USART上,从而创建DMA控制器与串口数据交互的桥接的通道。
进一步地,步骤S201中,所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,并初始化所述DMA控制器内部寄存器,所述DMA控制器内部寄存器包括:DMA_NDTR寄存器、USART_IDLE寄存器、USART_DR寄存器和USART_SR寄存器;
所述DMA_NDTR寄存器在每发送一帧数据时被重新刷新发送数据的长度,从而实时刷新发送数据帧的长度,实现数据帧的变长发送;
所述USART_DR寄存器用于实现变字节长度数据的发送与接收;当向所述USART_DR寄存器写数据时,串口USART自动发送数据;当串口USART接收数据时,将数据存储于所述USART_DR寄存器内;
所述USART_SR寄存器用于判断串口数据收发状态;所述ARM芯片对USART_SR寄存器[31:0]中的bit5和bit6置位来判断数据是被接收还是数据发送完成;其中USART_SR的bit5为RXEN,bit6为TC;当bit5置1表示串口状态为数据接收,bit6置1表示串口数据已发送完成;
所述USART_IDLE寄存器为串口空闲状态寄存器,步骤S104中所述DMA控制器通过检查USART_IDLE寄存器中的标志位来检测总线空闲状态。
进一步地,步骤S106中,所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输,具体为:
所述变字节长度数据传输包括所述DMA控制器从所述底层控制器读取数据和向所述组态监控界面写入数据;
当所述DMA控制器处于读取数据阶段时,每次读取的数据大小在步骤S201中的数据传输预处理阶段由所述ARM芯片配置和总线宽度决定;当总线宽度为m个字节时,读取的数据大小为一个字节或者一个字中的任意一种,m为预设值;
所述DMA控制器在同一时刻只能进行读数据或者写数据当中的一种操作;
所述DMA控制器内部还包括计数器,计数器的计数结果满足逻辑判断;当计数器的计数结果达到N1时,表示变字节长度数据传送过程结束,所述计数器产生中断信号;所述中断信号包括串口接收中断和串口发送中断;N1为预设值;
所述DMA控制器根据所述中断信号释放总线的控制权,便于所述ARM芯片进行下一次DMA数据传送的预处理。
步骤S105中所述主控制器进行通道选取,具体为:
所述DMA控制器包括8个数据流,每个数据流包括8个通道,每个通道配置有1个选择器,总共64个选择器;所述ARM芯片根据所述选择器处理DMA控制器请求数据流通道间的优先级关系。
本发明提供的技术方案带来的有益效果是:采用DMA控制器发送中断和串口接收中断,用来执行数据变长的收发任务,实现舰船并网控制系统中监控模块庞杂数据的实时交互通信目标。
附图说明
图1是本发中基于DMA与中断融合的组态监控系统的架构图;
图2是本发明一种基于DMA与中断融合的组态监控容错通信方法流程图;
图3是本发明组态监控界面与主控制器握手通信示意图;
图4是本发明DMA控制器在主控制器中连接示意图;
图5是本发明中基于中断的DMA工作流程图;
图6是本发明中基于中断的DMA控制器的通信时序图;
图7是本发明实施例中的程序主循环流程图;
图8是本发明实施例中的串口应答流程图;
图9是本发明实施例中的中断流程图;
图10是本发明实施例中所设计的串口通信接口的硬件拓扑图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
请参考图1,本发明的实施例提供了一种基于DMA与中断融合的组态监控系统的架构图,具体包括:
组态监控界面、主控制器和底层控制器;
所述组态监控界面,包括上位机接口,用于显示所述底层控制器的状态参数数据;所述主控制器,包括ARM芯片、串口RS485隔离模块、CAN隔离模块,用于处理来自所述底层控制器的状态参数数据,并将状态参数上传至所述组态监控界面;所述底层控制器,包括舰船电网电站控制器、斩波控制器和逆变控制器,用于舰船电网的电网控制;
本申请以电站控制器为例,组态监控界面显示变量主要为发电机电压、频率、功率和逆变器电压、频率、功率以及该系统电压风险指标、频率风险指标、功率风险指标。为适应舰船组态监控系统的底层控制器存在种类多、数量多、通信模式复杂的特点,舰船并网控制装置中的监控系统通过CAN总线将底层控制器数据量转换为信息流传送给主控制器。
所述组态监控界面与所述主控制器通过所述上位机接口电气连接;所述ARM芯片包括串口RS485收发器、CAN接口、DMA控制器和中断模块;所述串口RS485收发器与所述串口RS485隔离模块电气连接;所述串口RS485隔离模块与所述上位机接口电气连接;所述CAN接口与所述CAN隔离模块电气连接;所述CAN隔离模块与所述底层控制器电气连接;所述DMA控制器和所述中断模块用于实现一种基于DMA与中断融合的组态监控系统的容错通信方法。
所述ARM芯片还包括复位电路、晶振电路和存储电路;所述组态监控系统还包括电源,用于组态监控系统的供电。
在舰船并网控制装置中的监控系统中,主控制器不仅要处理来自底层控制器的数据,还要将处理后的数据上传给上位机。为确保数据采集的实时性以及数据传输的可靠性,采用DMA控制器协调CPU工作,减少了CPU工作量,使得交互数据的速度和精度得到提高。
请参考图2,图2是本发明中一种基于DMA与中断融合的组态监控系统的容错通信方法的流程图。本方法应用于一种基于DMA与中断融合的组态监控系统,具体包括:
S101:所述组态监控界面通过所述上位机接口与所述主控制器采用ASCII型通信协议进行数据通信握手;
S102:通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道;
S103:基于建立好的所述DMA控制器与串口数据交互桥接的通道,所述ARM芯片复位,处于空闲状态,并等待DMA数据通信请求;
S104:所述DMA控制器检测数据通信总线是否处于空闲状态?若是,则所述DMA控制器向所述ARM芯片发送数据通信请求;否则,所述DMA控制器等待数据通信总线处于空闲状态时,再发送所述ARM芯片发送数据通信请求;
S105:所述ARM芯片读取所述DMA控制器的数据通信请求,并释放数据通信总线控制权;
S106:所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输。
组态监控界面提供HEX型和ASCII型两种单片机通用通信协议,开发人员可以通过串口直接和单片机进行通信。常用的通信方式有RS232、RS422和串口RS485三种。ASCII型通信协议具有设计简单、程序易读易写等优点,所以本舰船并网控制装置中的监控系统采用ASCII型通信协议进行数据交互。由于串口RS485总线具有网络连接方便、传输距离远、抗干扰性能强等优点,因此使用串口RS485总线作为本系统的通信线。
主控制器与组态监控界面的通信握手本质上是双方按照约定的通信协议进行通信。约定的通信协议即本发明的数据帧协议,并且数据帧中的特定位置的数据具有特定的意义。本发明中传输数据最小单元为一帧数据,每帧数据长度实时变化。
所述ASCII型通信协议,包括不同的读写命令格式,具体为:所述组态监控界面写命令格式、所述主控制器写命令正确格式、所述主控制器写命令错误格式、所述组态监控界面读命令格式、主控制器读命令正确格式和所述主控制器读命令错误格式。
请参考图3,图3是本发明中组态监控界面与主控制器通信握手示意图;图中3数据帧中的STX(Star of text)表示数据文本起始,DLE(Disseminated Link Entity)表示数据链路实体。
当所述组态监控界面发送写命令格式,即处于写命令工作模式下,所述主控制器根据所述组态监控界面的写命令格式下的数据帧长度确定自身应处的工作模式为应答写命令,本发明实施例中写命令格式下的数据帧长度为8个字节;同时校验所述组态监控界面发送的写命令格式一帧数据中的字头和CR位,若校验成功,则所述主控制器响应输出写命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出写命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
当所述组态监控界面发送读命令格式,即处于读命令工作模式下,所述主控制器根据所述组态监控界面的读命令格式下的数据帧长度确定自身应处的工作模式为应答读命令,本发明实施例中读命令格式下的数据帧长度为10个字节;同时校验所述组态监控界面发送的读命令格式一帧数据中的字头和CR位,若校验成功,则所述主控制器响应输出读命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出读命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
在所述组态监控界面与所述主控制器通信握手失败时,所述组态监控界面重复发送写命令格式或者读命令格式的一帧数据,所述主控制器校验数据,直至所述组态监控界面与所述主控制器通信握手成功。
请参考图4,图4为DMA控制器在主控制器中连接示意图;
本发明设计的主控制器是以STM32F417芯片为CPU且外围扩展串口接口电路的板卡。鉴于STM32F417芯片是一个典型的基于AHB(Advanced High Performance Bus)总线协议架构的片上系统芯片。由于DMA控制器属于高速设备,DMA控制器通过AHB-MASTER接口挂在AHB总线上。APB(Advanced Peripheral Bus)总线通常挂载低速设备,如串口USART、CAN、普通GPIO等。DMA与串口USART间的桥接物理通道是基于AHB总线和APB总线协议进行联接。
步骤S102中通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道,具体为:
S201:所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,初始化所述DMA控制器内部寄存器;
S202:所述ARM芯片释放AHB总线控制权;所述DMA控制器得到AHB总线空闲信号并开启DMA控制器发送中断请求;
S203:所述DMA控制器还通过AHB-MASTER接口基于AHB总线信道链接到AHB/APB1桥接转换器;
S204:所述AHB/APB1桥接转换器通过APB总线信道链接到串口USART上,从而创建DMA控制器与串口数据交互的桥接的通道。
步骤S201中,所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,并初始化所述DMA控制器内部寄存器,所述DMA控制器内部寄存器包括:DMA_NDTR寄存器、USART_IDLE寄存器、USART_DR寄存器和USART_SR寄存器;
所述DMA_NDTR寄存器在每发送一帧数据时被重新刷新发送数据的长度,从而实时刷新发送数据帧的长度,实现数据帧的变长发送:
所述USART_DR寄存器用于实现变字节长度数据的发送与接收;当向所述USART_DR寄存器写数据时,串口USART自动发送数据;当串口USART接收数据时,将数据存储于所述USART_DR寄存器内;
所述USART_SR寄存器用于判断串口数据收发状态;所述ARM芯片对USART_SR寄存器[31:0]中的bit5和bit6置位来判断数据是被接收还是数据发送完成;其中USART_SR的bit5为RXEN,bit6为TC;当bit5置1表示串口状态为数据接收,bit6置1表示串口数据已发送完成;
所述USART_IDLE寄存器为串口空闲状态寄存器,步骤S104中所述DMA控制器通过检查USART_IDLE寄存器中的标志位来检测总线空闲状态。
请参考图5,图5为本发明中基于中断的DMA控制器工作流程图;图6中DMAC(DMAControl)即为DMA控制器;首先,源端存储设备(即本申请中的底层控制器)向DMA控制器(DMA Controller:DMAC)发出任务请求,由于主控制器从底层控制器采集的数据直接通过数据缓冲器存储于主控制器内部集成的存储器中,不需要通过硬件握手模块。预处理阶段时CPU(即本申请中ARM芯片,STM32F417)配置DMA控制器的信息将会由其内部逻辑进行解读。其次,DMA控制器会在收到请求后会向CPU发出控制总线权限的请求。CPU会根据当前任务的执行情况等一系列判断,将总线的控制权释放给DMA控制器,DMA控制器进入相对独立的数据传送周期。第三,数据传送过程可以分成从源端设备中读取数据和向目的设备写入数据两个阶段。读操作阶段时必须先保证源端设备已经准备好数据,每次读取的数据大小则会由CPU配置和总线宽度等因素决定,可为一个字节或者一个字的大小,均会在预处理阶段时由CPU配置至对应寄存器。DMA控制器在同一时刻只能对总线进行读或写一种操作,在DMA方式下的数据地址具有连续性时,且采用突发传输形式更能够减少命令执行的次数,从而提高数据传送的效率。第四,DMA控制器内部计数器计数结果满足逻辑判断,DMA数据传送过程结束时,产生完成中断信号,从而释放总线的控制权,以便CPU进行下一次DMA数据传送的预处理。
进而,步骤S106中,所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输,具体为:
所述变字节长度数据传输包括所述DMA控制器从所述底层控制器读取数据和向所述组态监控界面写入数据;
当所述DMA控制器处于读取数据阶段时,每次读取的数据大小在步骤S201中的数据传输预处理阶段由所述ARM芯片配置和总线宽度决定,为一个字节或者一个字的大小;本发明实施例中,总线宽度为10个字节;
所述DMA控制器在同一时刻只能进行读数据或者写数据当中的一种操作;
所述DMA控制器内部还包括计数器,计数器的计数结果满足逻辑判断;当变字节长度数据传送过程结束时,产生完成中断信号,包括串口接收中断和串口发送中断;所述DMA控制器根据所述中断信号释放总线的控制权,便于所述ARM芯片进行下一次DMA数据传送的预处理。
请参考图6,图6是本发明中基于中断的DMA控制器的通信时序图;主控制器复位后,它进入空闲状态,等待DMA请求;一旦DMA请求到达,主控制器即读取有关该请求的初始化信息,并进行通道仲裁,以及申请总线控制权。获取总线控制权后即开始数据传输,直到完成变字节长度数据传输。其次,主控制器采用的STM32F417片上系统有两个DMA控制器,每个DMA控制器8个数据流,总共有16个数据流。每一个DMA控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达8个通道。每个通道都有一个选择器,用于处理DMA请求间的优先级。第三,DMA在初始化配置过程中,也就是对相关重要的寄存器进行配置。比如DMA_NDTR,USART_IDLE,USART_DR,USART_SR寄存器。DMA_NDTR寄存器在每发送一帧数据时就会被重新刷新发送数据的长度,从而实时刷新发送数据帧的长度,在功能上实现了数据帧的变长发送。变字节长度数据的发送与接收是通过数据寄存器USART_DR来实现的,当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也是存在该寄存器内。USART_SR寄存器为串口状态寄存器,通过对USART_SR寄存器([31:0])中的bit5和bit6置位来判断数据是被接收还是数据已发送完成。其中USART_SR bit5为RXEN,bit6为TC。bit5置1表示串口状态为接收,bit6置1表示串口数据已发送完成。USART_IDLE寄存器为串口空闲状态寄存器,通过操作USART_IDLE寄存器来用作检测总线空闲状态。第四,针对本发明主控制器主要执行串口接收中断和串口发送DMA中断两种中断程序模块。且主控制器指定中断优先级的寄存器有4位,即高两位用于抢占优先级,低两位用于响应优先级。
现将DMA控制器时序的中断优先级小结于表1中。
表1 DMA控制器时序的中断优先级
本发明采用STM32F417的TIM4定时器作为主控制器的主循环时钟周期,时钟周期设置为5ms。采用两个串口,串口1用作组态写命令给主控制器,串口2用作组态读命令给主控制器。程序设计内容包括:主循环流程、串口应答流程(包括串口1和串口2)、中断流程(包括DMA发送中断流程和串口接收中断响应流程),请参考图7~图9。
如图7所示,主循环流程内容为初始化相关标志位、数据区以及串口1、串口2接收数据并按照既定算法处理数据。分析主循环流程图7可知,为了避免串口1和串口2间响应冲突和应答冲突,本发明设定串口1的中断优先级高于串口2的中断优先级。串口1的抢占优先级和响应优先级均设置为1,串口2的抢占优先级和响应优先级均设置为2。
图8表示串口应答流程,它包括串口1应答流程(如图8左所示)和串口2应答流程(如图8右所示)。
如图8左所示,程序开始后进行串口1接受数据,然后进入步骤一。
步骤一:判断数据校验是否通过,如果是,则进入步骤二;如果否,则串口1发送校验错误数据帧,然后返回。
步骤二:判断数据校验是否通过,如果是,则依次进行模拟量赋值,计算风险指标,然后返回;如果否,则串口1发送恢复通讯数据帧,然后返回。
如图8右所示,程序开始进行串口2接受数据,然后进入步骤一。
步骤一:判断数据校验是否通过,如果是,则进入步骤二;如果否,则串口2发送校验错误数据帧,然后返回。
步骤二:判断数据校验是否通过,如果是,则上传风险指标,然后返回;如果否,则串口2发送恢复通讯数据帧,然后返回。
图9表示中断流程图,它包括DMA发送中断流程(如图9左所示)和串口接收中断响应流程(如图9右所示)。
如图9左所示,程序开始后进行DMA控制器参数配置及中断优先级配置,然后进入步骤一。
步骤一:判断是否存在DMA发送中断请求,如果是,则依次进行DMA发送中断响应程序,DMA发送数据,进入步骤二;如果否,则返回。
步骤二:判断数据是否传输完成,如果是,则清除DMA发送中断,然后返回;如果否,则返回到DMA发送数据。
如图9右所示,程序开始后进行串口初始化及串口中断配置,然后加入步骤一。
步骤一:判断是否存在串口空闲中断,如果是,则依次进行串口接收中断响应程序,串口接收数据,然后进入步骤二;如果否,则返回。
步骤二:判断数据是否传输完成,如果是,则清除串口接收中断,然后返回;如果否,则返回到串口接收数据。
请参考图10,图10是本发明实施例中所设计的串口通信接口的硬件拓扑图,它主要由主控制器、收发器ADM2587、组态接口组成。图10中所示的ADM2587采用ADI公司的iCouple技术,集成了三态差分线路驱动器、差分输入接收器和DC/DC转换器,实现了完全集成的信号与电源隔离串口RS485解决方案。同时减少外部共模信号对数据传输的干扰。该串口电路为软件程序编程及数据的传输提供硬件支持。
以舰船并网控制装置中的监控系统供电部分的可视化通信设计为例,验证基于DMA与中断融合技术在串口数据变长收发方面的有效性。现场联调测试装置包括主控制器、舰船并网控制装置中的监控系统的前电站显控模块和后电站显控模块等组成。其中,组态界面由1#机组参数栏(又称主窗口)、2#机组参数栏、3#机组参数栏、4#机组参数栏、1#柴发参数栏、2#柴发参数栏以及报警记录栏7个窗口组成。
在初始化串口时,合理配置的波特率对舰船监控系统中的主控制器和组态通信十分重要。为能实现主控制器和组态通信握手,双方设置波特率必须是一致的。在本实施例中,将主控制器串口和组态虚拟串口波特率均设置为9600bps。经工程验证,实现了基用于舰船监控系统中DMA和中断融合技术的串行通信,解决了在通信过程中由于数据长度实时变化导致通信异常和数据堵塞等问题。
本发明在针对传统通信方法不能解决数据变长收发难点基础上,提出DMA与中断融合通信技术。构建由组态与以STM32F417为CPU的主控制器串行通信系统,通过通信协议来设计通信握手和通过DMA控制器来设计数据变字节长度传输。实现了舰船监控系统的数据交互功能并且提高了串行通信数据传输容量和数据的容错度。但是存在组态与以STM32F417为CPU的主控制器间数据长度阈值有限的不足,因此具有一定的实践指导意义与应用推广价值。
本发明提供的技术方案带来的有益效果是:采用DMA控制器发送中断和串口接收中断,用来执行数据变长的收发任务,实现舰船并网控制系统中监控模块庞杂数据的实时交互通信目标。
在不冲突的情况下,本发明中上述实施例及实施例中的特征可以相互结合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于DMA与中断融合的组态监控容错通信方法,应用于基于DMA与中断融合的组态监控系统,其特征在于:所述组态监控系统包括:
组态监控界面、主控制器和底层控制器;
所述组态监控界面,包括上位机接口,用于显示所述底层控制器的状态参数数据;所述主控制器,包括ARM芯片、串口RS485隔离模块、CAN隔离模块,用于处理来自所述底层控制器的状态参数数据,并将状态参数上传至所述组态监控界面;所述底层控制器,包括舰船电网电站控制器、斩波控制器和逆变控制器,用于舰船电网的电网控制;
所述组态监控界面与所述主控制器通过所述上位机接口电气连接;所述ARM芯片包括串口RS485收发器、CAN接口、DMA控制器和中断模块;所述串口RS485收发器与所述串口RS485隔离模块电气连接;所述串口RS485隔离模块与所述上位机接口电气连接;所述CAN接口与所述CAN隔离模块电气连接;所述CAN隔离模块与所述底层控制器电气连接;
所述一种基于DMA与中断融合的组态监控容错通信方法包括以下步骤:
S101:所述组态监控界面通过所述上位机接口与所述主控制器采用ASCII型通信协议进行数据通信握手;
S102:通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道;
S103:基于建立好的所述DMA控制器与串口数据交互桥接的通道,所述ARM芯片复位,处于空闲状态,并等待DMA数据通信请求;
S104:所述DMA控制器检测数据通信总线是否处于空闲状态?若是,则所述DMA控制器向所述ARM芯片发送数据通信请求;否则,所述DMA控制器等待数据通信总线处于空闲状态时,再发送所述ARM芯片发送数据通信请求;
S105:所述ARM芯片读取所述DMA控制器的数据通信请求,并释放数据通信总线控制权;
S106:所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输。
2.如权利要求1所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:所述主控制器的数据通信总线包括APB总线和AHB总线,所述APB总线用于挂载高速设备,所述AHB总线用于挂载低速设备;所述ARM芯片为基于AHB总线协议架构的片上系统芯片,包括AHB-MASTER接口和AHB-SLAVE接口;所述DMA控制器也包括AHB-MASTER接口和AHB-SLAVE接口。
3.如权利要求1所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:所述ARM芯片还包括复位电路、晶振电路和存储电路;所述组态监控系统还包括电源,用于组态监控系统的供电。
4.如权利要求1所述的一种基于DMA与中断融合的组态监控系统的容错通信方法,其特征在于:步骤S101中所述ASCII型通信协议,具体如下:
所述ASCII型通信协议,包括不同的读写命令格式,具体为:所述组态监控界面写命令格式、所述主控制器写命令正确格式、所述主控制器写命令错误格式、所述组态监控界面读命令格式、主控制器读命令正确格式和所述主控制器读命令错误格式;所述读写命令格式由字头、数据位和校验位组成,其中数据位为可变长度,最大写命令长度为kW个字节、最大读命令长度为kR个字节,此处kW、kR均为预设值。
5.如权利要求4所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:
步骤S101中所述组态监控界面与所述主控制器通讯握手过程具体如下:
当所述组态监控界面发送写命令格式,即处于写命令工作模式下,当所述组态监控界面的写命令格式下的数据帧长度为n个字节时,所述主控制器的工作模式为应答写命令,n为预设值;同时校验所述组态监控界面发送的写命令格式一帧数据中的字头和校验位,若校验成功,则所述主控制器响应输出写命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出写命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
当所述组态监控界面发送读命令格式,即处于读命令工作模式下,当所述组态监控界面的读命令格式下的数据帧长度为p个字节时,所述主控制器的工作模式为应答读命令,p为预设值;同时校验所述组态监控界面发送的读命令格式一帧数据中的字头和CR位,若校验成功,则所述主控制器响应输出读命令正确格式的一帧数据,同时,所述组态监控界面与所述主控制器通信握手成功;若校验失败,则所述主控制器响应输出读命令错误格式的一帧数据,同时所述组态监控界面与所述主控制器通信握手失败;
在所述组态监控界面与所述主控制器通信握手失败时,所述组态监控界面重复发送写命令格式或者读命令格式的一帧数据,所述主控制器校验数据,直至所述组态监控界面与所述主控制器通信握手成功。
6.如权利要求5所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:
步骤S102中通过设计所述DMA控制器的连接结构,创建所述DMA控制器与串口数据交互桥接的通道,具体为:
S201:所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,初始化所述DMA控制器内部寄存器;
S202:所述ARM芯片释放AHB总线控制权;所述DMA控制器得到AHB总线空闲信号并开启DMA控制器发送中断请求;
S203:所述DMA控制器还通过AHB-MASTER接口基于AHB总线信道链接到AHB/APB1桥接转换器;
S204:所述AHB/APB1桥接转换器通过APB总线信道链接到串口USART上,从而创建DMA控制器与串口数据交互的桥接的通道。
7.如权利要求6所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:步骤S201中,所述ARM芯片通过所述DMA控制器的AHB-SLAVE接口进行数据传输预处理,并初始化所述DMA控制器内部寄存器,所述DMA控制器内部寄存器包括:DMA_NDTR寄存器、USART_IDLE寄存器、USART_DR寄存器和USART_SR寄存器;
所述DMA_NDTR寄存器在每发送一帧数据时被重新刷新发送数据的长度,从而实时刷新发送数据帧的长度,实现数据帧的变长发送:
所述USART_DR寄存器用于实现变字节长度数据的发送与接收;当向所述USART_DR寄存器写数据时,串口USART自动发送数据;当串口USART接收数据时,将数据存储于所述USART_DR寄存器内;
所述USART_SR寄存器用于判断串口数据收发状态;所述ARM芯片对USART_SR寄存器[31:0]中的bit5和bit6置位来判断数据是被接收完成还是数据发送完成;其中USART_SR的bit5为RXEN,bit6为TC;当bit5置1表示串口状态为数据接收完成,bit6置1表示串口数据已发送完成;
所述USART_IDLE寄存器为串口空闲状态寄存器,步骤S104中所述DMA控制器通过检查USART_IDLE寄存器中的标志位来检测总线空闲状态。
8.如权利要求1所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:步骤S106中,所述DMA控制器获得数据通信总线控制权,并采用基于中断的DMA通信方法,完成变字节长度数据传输,具体为:
所述变字节长度数据传输包括所述DMA控制器从所述底层控制器读取数据和向所述组态监控界面写入数据;
当所述DMA控制器处于读取数据阶段时,每次读取的数据大小在步骤S201中的数据传输预处理阶段由所述ARM芯片配置和总线宽度决定;当总线宽度为m个字节时,读取的数据大小为一个字节或者一个字中的任意一种;m为预设值;
所述DMA控制器在同一时刻只能进行读数据或者写数据当中的一种操作;
所述DMA控制器内部还包括计数器,计数器的计数结果满足逻辑判断;当计数器的计数结果达到N1时,表示变字节长度数据传送过程结束,所述计数器产生中断信号;所述中断信号包括串口接收中断和串口发送中断;N1为预设值;
所述DMA控制器根据所述中断信号释放总线的控制权,便于所述ARM芯片进行下一次DMA数据传送的预处理。
9.如权利要求1所述的一种基于DMA与中断融合的组态监控容错通信方法,其特征在于:步骤S105中所述主控制器进行通道选取,具体为;
所述DMA控制器包括8个数据流,每个数据流包括8个通道,每个通道配置有1个选择器,总共64个选择器;所述ARM芯片根据所述选择器处理DMA控制器请求数据流通道间的优先级关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010345072.5A CN111679935A (zh) | 2020-04-27 | 2020-04-27 | 一种基于dma与中断融合的组态监控容错通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010345072.5A CN111679935A (zh) | 2020-04-27 | 2020-04-27 | 一种基于dma与中断融合的组态监控容错通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111679935A true CN111679935A (zh) | 2020-09-18 |
Family
ID=72452176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010345072.5A Withdrawn CN111679935A (zh) | 2020-04-27 | 2020-04-27 | 一种基于dma与中断融合的组态监控容错通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679935A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342720A (zh) * | 2021-05-12 | 2021-09-03 | 辅易航智能科技(苏州)有限公司 | 一种高速串口通信方法 |
CN113986600A (zh) * | 2021-11-04 | 2022-01-28 | 北京智芯微电子科技有限公司 | 一种用于芯片串行接口的测试方法、装置和芯片 |
CN116932333A (zh) * | 2023-09-14 | 2023-10-24 | 武汉凌久微电子有限公司 | 一种硅后验证的axi总线实时性能监控方法 |
-
2020
- 2020-04-27 CN CN202010345072.5A patent/CN111679935A/zh not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342720A (zh) * | 2021-05-12 | 2021-09-03 | 辅易航智能科技(苏州)有限公司 | 一种高速串口通信方法 |
CN113986600A (zh) * | 2021-11-04 | 2022-01-28 | 北京智芯微电子科技有限公司 | 一种用于芯片串行接口的测试方法、装置和芯片 |
CN113986600B (zh) * | 2021-11-04 | 2023-02-03 | 北京智芯微电子科技有限公司 | 一种用于芯片串行接口的测试方法、装置和芯片 |
CN116932333A (zh) * | 2023-09-14 | 2023-10-24 | 武汉凌久微电子有限公司 | 一种硅后验证的axi总线实时性能监控方法 |
CN116932333B (zh) * | 2023-09-14 | 2023-12-26 | 武汉凌久微电子有限公司 | 一种硅后验证的axi总线实时性能监控方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679935A (zh) | 一种基于dma与中断融合的组态监控容错通信方法 | |
CN105573951B (zh) | 一种针对数据流传输的ahb总线接口系统 | |
CN102023954B (zh) | 具有多路i2c总线的装置、处理器、系统主板及工控计算机 | |
CN102360329B (zh) | 总线监控与调试控制装置及进行总线监控与总线调试的方法 | |
JP2510810B2 (ja) | マルチプロセッサシステムおよびその情報通信方法 | |
CN108228513B (zh) | 一种基于fpga架构的智能串口通讯装置 | |
CN104484301B (zh) | 一种基于fpga具有自识别功能的io总线装置 | |
CN106951379A (zh) | 一种基于axi协议的高性能ddr控制器及数据传输方法 | |
CN108132897A (zh) | 一种基于zynq平台软核的srio控制器 | |
CN109165178B (zh) | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 | |
CN105302612A (zh) | 快速升级电子系统机箱内单片机软件程序的方法 | |
JPS58501923A (ja) | サブシステムコントロ−ラのためのインタ−フェイス回路 | |
CN106469127B (zh) | 一种数据访问装置及方法 | |
CN106933760A (zh) | 一种基于axi协议的dma控制器及数据上传方法 | |
CN114297124A (zh) | 一种基于fpga的srio高速总线的通讯系统 | |
CN110188059A (zh) | 数据有效位统一配置的流控式fifo缓存结构及方法 | |
CN115033444A (zh) | 基于8051core在线调试电路控制装置及控制方法 | |
CN105718396B (zh) | 一种大数据主设备传输的i2c总线装置及其通讯方法 | |
CN102708079B (zh) | 应用于微控制器的控制数据传输的方法及系统 | |
CN219574799U (zh) | 一种基于amba总线的多总线桥接器及其片上系统 | |
JPH09507938A (ja) | 処理装置からクロックへのインターフェース | |
CN105930222B (zh) | 错误响应电路、半导体集成电路以及数据传输控制方法 | |
CN111324559A (zh) | 一种自主请求的串口分流装置 | |
CN201804329U (zh) | 一种基于arm微处理器的usb接口硬件装置 | |
CN110543163A (zh) | 一种飞机航电系统vme总线机载模块测试系统 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200918 |