在瞬态运动参数测试中,对存储测试系统的实时性和功耗提出了更高的要求。提出了一种基于STM32的嵌入式存储测试系统的设计方案,介绍了该系统关键部分的软硬件设计,主要包括模拟信号调理、数据采集存储和USB数据回读。该系统具有实时性好、体积小、功耗低的特点,适合于恶劣环境下加速度信号的采集存储。试验结果表明,该系统工作稳定,实现了设计目标。
存储测试技术是在特殊环境下记录运动物体参数行之有效的方法,先将测试数据存入存储器,待装置回收后通过特定接口与上位机进行通信,还原数据信息。在诸多领域的测试中,对数据采集存储系统的实时性和功耗提出了更高的要求,随着半导体技术的发展,各种技术的进步使得高速度、低功耗的存储测试系统能够实现。
本系统选择ST公司超低功耗的基于ARM Cortex—M3四核的处理器STM32F103C8T6作为核心控制元件,采取内部A/D转换器与铁电存储器结合的方法,实现压阻式加速度传感器测试数据的采集、存储,并利用LabView开发平台设计上位机应用软件实现测试数据的USB回读及处理。
1 系统原理
存储测试系统由电源管理模块、调理模块、外部晶振、微控制器、存储模块、上位机模块以及接口电路组成,如图1所示。
系统采用单电池电源供电,电路内部经过多路电源管理单元的稳压处理后为系统各个模块供电,实现多分支电源网络管理,以保证系统良好的抗干扰性能。系统的控制核心为STM32F103C8T6,传感器信号经调理模块进入微控制器的12位μs级的A/D转换器后,经过处理和格式转换后循环记录在铁电存储器 FM25V10内,一旦传感器感受的加速度值达到设定阈值,则系统将被触发,并会自动持续记录一段时间,装置回收后则利用LabVieW上位机应用软件实现测试数据的USB回读及处理。
2 系统主要部分的硬件设计
2.1 信号调理
由于传感器测量的信号十分微弱,需要经过适当的放大、滤波等修正后才能够进行一系列处理。信号调理电路是存储测试系统中非常关键的一个部分,它在数据采集存储之前对传感器输出信号进行调理,其性能的优劣直接决定了系统的性能与可靠性。信号调理电路主要由4部分串联组成:隔离放大、交流耦合、电压跟随、低通滤波。
2.1.1 隔离放大
在存储测试系统中,不合适的接地是造成测量问题的普遍原因,必须对信号进行电气隔离以防止这些问题的发生。隔离电路能够打破接地环路,避免产生高幅值共模电压。
本设计选用通用的、双端口的变压器耦合隔离放大器AD202作为主放大器件。作为一种符合工业标准的隔离放大器,AD202能够提供一整套隔离功能,包括信号隔离和电源隔离,且封装紧凑,有利于实现产品的小型化。
图2为隔离放大电路原理图,R1和R2的配比可实现衰减功能,R6可实现比例的精确调节,R3、R4和R5实现了调零功能。
2.1.2 交流耦合
为了消除加速度信号中直流分量的影响,实现交流耦合,利用电容的“隔直通交”的特性去除信号里的直流分量,而对纯交流信号没有影响。因此,本设计在隔离放大电路之后,加入了一级交流耦合。
2.1.3 电压跟随
传感器信号在交流耦合之后,串联一级电压跟随,可以起到缓冲、隔离的作用。电压跟随电路具有高输入阻抗、低输出阻抗的特点,可以使后级放大电路工作更稳定,如图3所示。
2.1.4 低通滤波
由于测试环境中不可避免地存在着各种干扰和噪声,如果传感器信号线引入外界干扰,将造成进入测试系统的信号掺杂有一定的噪声,严重的甚至会影响测试的真实性。因此,需要使用滤波器对信号进行抗混叠滤波,以保证信号的正确性、提高系统信噪比。
系统使用的二阶压控电压源低通滤波电路因性能稳定、增益易调节,已广泛应用于测试系统中,此系统也采用此型滤波电路。电路设计如图4所示。
2.2 微控制器接口
STM32F103处理器采用ST公司独有的两大节能技术(130 nm专用低泄漏电流制造工艺和优化的节能架构),使其成为要求高性能、低成本、低功耗的嵌入式系统的良好选择。该设计利用其自带的12位μs级的A/D转换器、SPI通信接口和USB2.0全速接口,实现传感器信号的采集、存储和回读分析。
3 系统关键部分的软件设计
3.1 负延时数据存储
本系统选用1 Mb铁电存储器FM25V10(128K×8位),每个加速度数据占用2个字节,可供存储65536个数据。系统触发前,存储器保持循环记录,存储的内容不断被擦除改写。当记录数据达到触发阈值时,测试系统触发,延时计数器开始计数,数据继续记录至延时计数器到时。触发点前后的数据长度可根据设计要求确定,计数结束后地址发生器停止工作,加速度信号得以存储。记录完毕后进入休眠状态,等待读数和擦除。负延时功能可以将触发前的一段信息有效保存,从而得到完整的加速度曲线,以保证数据的完整性。
3.2 与上位机LabVieW的USB通信
系统利用STM32F103自带的USB2.0全速接口及其固件驱动程序,实现从存储器向PC传送数据和设置存储参数的功能。STM32F10xxxUSB固件驱动程序库是ST公司专为STM32F 10xxx系列ARM微控制器提供的固件驱动程序库,其主要用途是利用STM32F10xxx系列微控制器中的USB宏单元来简化应用开发。
该部分软件设计包括3个部分:固件驱动程序、USB设备驱动程序和主机应用程序。
3.2.1 固件驱动程序设计
固件驱动程序(又称单片机程序)是指固化到MCU模块内的软件。固件程序采用模块化设计,主要模块包括:数据采集存储模块和数据通信模块两大部分。模块化设计的优点是可靠性高、可读性好、软件改动简单。
USB设备在上电之后需要首先完成系统时钟配置及片内外设的初始化操作。设备初始化完毕后,数据回读命令的接收、解析及数据传输的所有操作均在中断服务程序中完成。定时器3为节拍发生器,其中断用于定时触发A/D转换器采样与转换。DMA通道1产生中断表明,可以将存储器中的数据打包并通过USB发送。
USB中断较为复杂,是固件驱动程序设计的核心部分,包括枚举的整个过程,以及除枚举以外所有与主机的命令、数据交互过程。控制命令主要包括采样频率的设定、负延时时间的设定、启动数据回读等。USB设备总计使用了3个端点,分别为端点0、端点1和端点3。端点0为USB默认的控制传输端点,供设备枚举初始化时使用;端点1和端点3均为批量传输端点,端点1方向为输入,用来接收PC的控制指令;端点3的方向为输出,用来向PC机发送数据包。
系统固件程序流程如图5所示。
3.2.2 USB设备驱动程序设计
USB设备驱动程序介于USB硬件与数据采集系统应用程序之间,为它们之间的通信提供桥梁。USB驱动程序使用DriverStudio 中的Driver-works2.7编写。Drivei—Works提供了3个函数类即KUs-bLowerDevice、KUs—bInterface 和KUsbPipe类,用于实现USB设备操作。KUsbLowerDevice类用于逻辑设备的编程,KUsbInterface类用于接口的编程,KUsbP ipe类用于管道的编程。
本设计使用Driverworks自带的DriverWizard生成驱动程序框架和Read、write函数,在DeviceControl函数中添加用户定义的设备控制程序,完成用户自定义的功能。驱动程序编写完毕后,会编译生成后缀为“.inf”和“.sys'’两个文件。.inf文件是系统用来查找适合硬件的驱动程序的向导文件,当Windows发现新的设备时(比如系统启动时、在安装热插拔设备时或者从控制面板安装新设备时),就调用 Windows的“添加新设备向导”执行。这个向导扫描所有可用的.inf文件,找到合适的驱动程序。
3.2.3 主机应用程序设计
应用服务程序直接面向用户,是控制数据存储软件的最上层,不仅提供与用户交互的界面,而且能通过发送各种控制命令来控制存储模块的工作。在Windows 中,LabView实现与WDM的通信过程是:先用CreateFile函数打开设备,然后用Devi—ceIOControl与WDM进行通信,包括从 WDM中读数据和写数据给WDM,也可以用ReadFile从WDM中读数据或用WriteFile写数据给WDM。当应用程序退出时,用 CloseHartdle关闭设备。其软件设计流程如图6所示。
4 试验数据与验证
图7是本测试系统所测得的试验数据波形图,该曲线所测的是某弹丸在火炮膛内的加速度曲线。经过数据分析,膛内运行时间、膛内运行距离、膛内以及炮口扰动过载均与实际相符。
经过试验论证,本测试系统在误差允许的范围内可以达到测量精度要求,从而验证了本测试系统具有较强的应用性。
结语
存储测试系统是软硬件紧密结合的设备,为了提高实时性并降低功耗,需要设计者尽量精简系统内核,只保留和系统功能紧密相关的软硬件,利用最低的资源实现最适当的功能。本文设计的存储测试系统,使STM32处理器的优点得到了有效的发挥。对于本测试系统,可用环氧树脂灌封材料将电路灌封在侵彻类引信内,从而获取引信的侵彻全程加速度数据,对侵彻类引信的研制具有重要意义。