基于ARM的导引头软件设计研究
2019-09-10郭家欢
郭家欢
摘 要:针对导引头低成本、小型化的要求,本文设计了基于ARM单片机的导引头软件设计方案,详细介绍了软件各功能模块划分、软件架构、软件执行方案以及软件的可靠性设计。结果表明,该软件各功能模块运行正常,实现了复杂导引头时序控制以及信息处理算法,满足导引头的各功能和性能要求。
关键词:ARM;导引头;软件架构
中图分类号:TJ765.331文献标识码:A文章编号:1003-5168(2019)11-0034-03
Abstract: To satisfy the seeker needs of low-cost and small-volume, this paper introduced one designing scheme of software based on ARM, introduced the fuction module constitute、the software architecture、the implementation scheme of software and the reliability design of software. The result of verification shows that the operation of this software is normal, it realizes the complicated arithmetic of seeker sequence and information processing, and satisfy the needs of seeker function and performance.
Keywords: ARM; seeker ; software architecture
导引头通常采用单DSP、多DSP或DSP+FPGA的信息处理平台,系统结构复杂、体积大、成本高,无法满足某些领域低成本、小型化的特殊需求。针对低成本、小型化需求,导引头设计了低成本的信息处理平台,本文针对该信息处理平台设计了一套导引头软件设计方案。
1 系统总体设计
导引头采用的ARM单片机为意法半导体公司(ST)生产的基于ARM Cortex-M3系列的STM32F103ZET6,工作主频为72MHz,内置512KB FLASH和64KB RAM,包含3个ADC、2个DAC、12通道DMA控制器、112个快速I/O端口、11个定时器和13个通信接口。导引头信息处理平台接口如图1所示。导引头软件运行在ARM单片机上,与导引头其他部分配合实现对目标探测、识别、目标方位计算、门限电压控制以及与外部设备通信等功能。
2 软件架构设计
一方面,导引头软件接收飞控发送的控制指令,控制导引头工作时序;另一方面,导引头根据接收到的探测信号进行目标识别,采集目标信号,计算目标方位信息,并控制门限电压。根据导引头软件完成主要功能,将导引头软件划分为系统初始化、数据通信、信号采集校正、目标识别、目标方位计算以及门限控制6个功能模块,具体功能模块划分如图2所示[1]。
2.1 系统初始化模块设计
系统初始化模块包括单片机外设初始化和系统状态及变量初始化两个子模块。其中,单片机外设初始化子模块主要完成单片机外设的初始化配置,包括定时器、D/A、USART、DMA以及相关GPIO管脚。
①定时器初始化配置。该配置完成定时器时钟频率设置、定时器计数模式设置、定时器输出通道设置以及定时器中断使能设置。②D/A初始化配置。该配置完成D/A触发模式设置、D/A输出缓存使能以及D/A转换使能设置。③USART初始化配置。该配置主要完成串口工作模式、串口波特率、串口数据位总数、数据校验位、终止位以及串口中断使能设置[2]。④DMA初始化配置。该配置主要包括外设寄存器地址、数据存储器地址、传输的数据量、数据传输方向、外设和存储器的增量模式、外设和存储器的数据宽度和是否产生中断以及DMA通道使能。⑤GPIO管脚配置。该配置主要包括GPIO管脚值、GPIO管脚最大输出速率以及GPIO管脚工作状态设置。
系统状态及变量初始化完成系统时钟配置、中断向量优先级设置、全局变量初始化。系统时钟配置包括完成系统嘀嗒时钟配置以及单片机外设的时钟使能设置。STM32F103ZET6芯片每个中断向量优先级设置分为占先优先级和从优先级。高占先优先级的中断可打断当前主程序和低占先优先级中断,即实现抢占;占先优先级相同时,不同从优先级中断同时到来时,高从优先级中断先被响应,若存在低从优先级中断正在执行,则高从优先级中断需等待执行结束之后才被响应,即非抢占。导引头软件初始化时根据实际需要完成每一个中断的占先优先级和从优先级配置[3]。
2.2 数据通信模块设计
数据通信模块主要通过控制USART端口完成导引头与外部设备通信。导引头接收数据采用DMA方式进行连续通信,当DMA控制器中指定的传输数据量完成接收工作时,触发DMA中断。在中断过程中,判断接收数据是否满足要求,若满足要求则进行相应处理,否则舍弃该帧数据。发送数据采用定时发送方式,通过设置定时器的定时周期,在定时器中断中判断相应串口发送数据寄存器空标志位。如果发送数据寄存器为空,则将待发送的数据写入发送数据寄存器;若发送数据寄存器非空,则判断软件是否处理超时,若处理超时,则退出处理。
2.3 目标识别模块设计
目标识别模块将探测到的信号进行存储、更新,与典型目标特征进行匹配,满足匹配要求则捕获目标,否则未捕获目标,继续等待后续信号到来。目标识别时需要使用定时时间长、定时精度高的高性能定时器,由于STM32F103ZET6最高时鐘频率为72MHz,且定时器均为16位定时器,为了实现长时间、高精度的定时需求,目标识别模块采用了使用定时器1和定时器2串联计,使用两个16位定时器实现32位定时器的功能。
2.4 信号采集校正模块设计
信号采集校正模块包括A/D时序控制及信号采集和信号滤波校正两个子模块。由于单片机片上ADC为12位,无法满足系统目标信号采集精度要求,因此,设计该系统时采用了ADC转换芯片。该芯片选用TI公司的ADS8364,引脚可以直接和ARM芯片的I/O相连接。A/D时序控制及信号采集子模块通过控制ADS8364转换时序,采集A/D转换结果。ADS8364的工作时序由导引头软件控制ARM单片机相关GPIO管脚输出相应高低电平实现[4]。ADS8364的工作时序如图3所示。信号滤波校正子模块首先将采集到的目标信号进行滤波处理,滤除采集过程中因干扰带来的信号突变,然后按照信号校正算法对输入信号进行校正处理。
2.5 目标方位计算模块设计
捕获目标后,基于ARM的导引头软件根据当前周期的目标信号,计算目标视线角度,并对计算目标视线角度进行输出校正和归一化处理。若未捕获目标或捕获目标后又丢失目标,则输出预设的目标视线角度。
2.6 门限控制模块设计
捕获目标后,基于ARM的导引头软件根据当前周期计算的目标信号能量,预测下周期目标信号能量,控制片上DAC输出门限电压,若未捕获目标或捕获目标后又丢失目标,则控制输出预设的门限电压。
3 软件执行方案
导引头软件包含定时器1和定时器2中断,接收数据DMA中断以及外部中断等多个中断源。考虑软件多中断源的特点,软件采用主调度/中断处理形式,以主调度处理为核心,在主调度中优先级较低,没有严格执行期限处理,当中断到来时,进入相应中断服务程序,完成中断处理后返回主调度继续执行,处理流程如图4所示[5]。
导引头软件首先进行系统初始化,而后进入软件主循环,在主循环内判断是否捕获目标。若未捕获目标,则重新判断;若捕获目标,则采集目标信号,对目标信号进行处理,计算目标方位信号,计算门限信号,控制输出门限电压。目标识别功能在中断处理服务程序中完成,当软件接收到外部信号中断时,判断接收到的信号与目标特征是否匹配,若匹配成功则表明捕获目标,匹配失败则等待后续信号到来。数据通信功能在中断处理服务程序中完成,当软件接收到的数据个数满足设定要求时则触发DMA中断,并通过定时中断的形式向飞控返回导引头当前状态。
4 软件可靠性设计
导引头软件是导引头的核心组成部分,能否稳定可靠地正常工作直接关系系统任务能否圆满完成。因此,设计人员在设计导引头软件时不仅要实现软件功能和性能,还应关心软件的可靠性和安全性,对系统可能出现的异常情况采取措施,保护可能影响系统安全的关键模块。
为了提高导引头软件的可靠性和安全性,设计时采取了如下措施:①采用结构化和模块化方法进行设计;②降低各单元模块的复杂性,保证各个模块最大内聚和最小耦合;③软件内部接口设计时应尽量避免使用全局变量,软件单元模块之间的数据通信尽可能使用参数传递方式;④对软件中的关键变量进行有效性保护,对关键数组存储或读取时进行保护,防止数组越界;⑤对可能存在的溢出情况设置防溢出保护;⑥对接收到的串口数据进行正确性判断,防止响应异常的控制指令;⑦对输入数据进行正确性检查,对超出输入边界的数据进行滤除或限幅等处理。
5 结语
本文基于单一ARM单片机的硬件结构完成了导引头软件的设计开发,通过合理设计,充分利用ARM丰富的硬件资源以及高性能的信息处理能力,实现复杂的导引头时序控制以及目标识别算法等功能。设计难点在于多中断源优先级的合理设计及各中断的合理响应。通过软件仿真、软件测试以及半实物仿真等手段验证软件的功能和性能满足预期要求,该方案无需协处理器能够完成复杂逻辑以及高实时性的导引头软件设计,对后续低成本小型化导引头软件设计具有重要的借鉴意义。
参考文献:
[1]廖洪波,朱文亮,王永宏,等.光电伺服控制软件调试工具顶层框架设计与应用[J].航空兵器,2014(1):57-60.
[2]陈艳华.基于ARM的嵌入式系统开发与实例[M].北京:人民邮电出版社,2008.
[3]宋岩.ARM Cortex-M3权威指南[M].北京:北京航空航天大学出版社,2009.
[4]王霞,李淑民,裴培,等.基于ADS8364的数据采集系统设计[J].电子技术应用,2009(7):95-97.
[5]王明惠,朱光宇,汪慧敏,等.基于PowerPC的飛控软件设计实现及验证[J].航空兵器,2013(4):54-57.