引言
由于火控系统工作环境特殊,所需采集信号复杂多样,传统的以微控制器或PC为主的采集系统往往难以胜任。针对上述问题,提出了一种基于STM32+FPGA的数据采集系统的设计方案,该方案不仅能够完成对多路多样信号实时、精确地采集,而且具有高速信号处理和数据传输能力,具有集成化程度高、体积小、资源丰富、价格便宜等优点。
1、系统总体设计
在实际应用中,所采集的信号既有模拟信号,也有数字差分信号,并且有多通道、串并混合、数据量大等特点。为了满足需求,本文设计了图1所示的数据采集系统,它能根据需求进行6路±10V模拟信号,18路数字差分信号的采集、处理和实时传输。系统采用STM32+FPGA的组合方式,FPGA为ALTER公司的EP1K50TC144器件,由STM32417给FPGA发送控制命令,通过FPGA内部的地址译码、逻辑控制以及数据缓冲实现信号采集,并通知STM32417对数据进行读取,最后,由STM32417对得到的数据进行处理和传输。
图1 总体设计
其中,STM32F417是意法半导体公司生产的基于ARM-CoRTEX-M4架构的微控制器,内核架构先进,性能优越,主频可达168MHz,执行效率高,具有较高的运算能力及数据处理能力,拥有丰富的外设接口和扩展功能。在图1中,STM32F417与上位机之间的以太网通信,就是MII外接DP83848物理层芯片,通过相关配置后扩展实现的。
2、STM32与FPGA的接口设计
STM32F417与FPGA的接口方式有很多种,可以是串行的,也可以是并行的,考虑到FPGA在多路并行数据处理方面有明显优势[5,6],设计采用STM32F417的可变静态存储控制器(FLEXIBLESTATICMEMoRyCoNTRoLLER,FSMC)并行总线接口实现与FPGA的连接。
2.1、接口电路设计
FSMC是STM32系列采用的一种新型的存储器扩展技术,支持不同的外部存储器类型,其中就包括多种类型的静态存储器,因此,可将FPGA当成STM32F417的外部SRAM来配置,通过扩展出的数据/地址/控制三总线来实现操作,这样既能保证较快的操作速度,又具有很高的灵活性。接口电路硬件连接如图2所示。
图2 STM32F417与FPGA接口连接电路
将FPGA直接连接在STM32F417的FSMC总线上,FSMC提供了4个BANK用于连接外部不同的存储器,每个BANK有独立的片选信号,FSMC_NE3是BANK1第三区的片选信号,FSMC_NOE和FSMC_NEW分别是接口读写信号,根据应用需求,设计接口数据宽度为16位,地址线为10位,将数据线FSMC_D[15~0],地址线FSMC_A[9~0]连接到FPGA的I/O端口,寻址空间为1K字。除此之外,还有一些中断信号(INT),用于FPGA向STM32F417发送中断请求。这样FPGA就作为STM32F417的外设连接在了系统中,通过存储器读写指令就可以访问FPGA。
2.2、关于接口地址的STM32软件设计
在STM32F417内部,FSMC的一端通过内部高速总线AHB连接到内核CoRTEX-M4,另一端则是面向扩展存储器的外部总线,内部AHB总线的地址HADDR与FSMC总线地址存在一定的映射关系。FPGA连接在FSMC的BANK1第三区,HADDR总共有28根地址线(HADDR[27~0]),其中HADDR[26~27]用来对BANK1的4个区进行寻址。当PFGA使用第三区时,对应的HADDR[27∶26]等于10。当BANK1在外接16位宽度存储器时候,只有HADDR[25∶1]是有效的,对应关系变为:HADDR[25∶1](FSMC[24∶0],由此可知,接口地址FSMC_A[9~0]对应的HADDR的地址为0X68000000~0X680007FE,在进行地址读写操作时,HADDR[0]并没有用到,相当于地址右移了1位,使得每次读写操作时,函数中的地址增量都为2。
3、数据采集的FPGA实现
3.1、模拟信号采集
根据应用需求,模拟信号采集选用MAXIN公司的12位AD转换芯片MAX196。该芯片有6个单端模拟输入通道,并且其量程范围、通道选择、工作方式均编程可控,转换时间为6μS,采样速率为100KSPS,具有精度高、功耗低、开发方便等特点。
由于MAX196芯片是5V电压供电,为了解决逻辑电压匹配的问题,设计使用电压转换芯片SN74AHCT245PWLE来实现FPGA与AD的连接。由FP-GA控制AD进行信号采集,使用其内部逻辑,完成芯片的配置、中断的响应以及转换结果的缓存,FPGA内部逻辑电路如图3所示。此逻辑电路主要由AD控制模块、写缓存控制模块和双口RAM缓存3部分组成。
图3 AD采集内部逻辑电路
3.1.1、AD控制模块
AD控制模块用来完成MAX196的采集时序的控制,为了确保时序控制的准确性和连续性,设计一个状态机,如图4所示,从STATE0~STATE3依次变化,整个过程对应一次完整的采集周期,系统中所有的系统时序由外部40M有源晶振产生。
图4 AD采集控制状态机
状态机的初始状态为STATE3,控制端口默认置高,在FPGA在收到STM32F417发出的采集命令EN后,转入STATE0,输出脉冲(wR+CS)启动AD转换,并且向AD芯片写入8位控制字,完成初始化,然后,STATE1等待AD完成数据转换,转换结束时,AD产生中断信号INT,接着进入STATE2,进而输出脉冲信号(RD+CS),读取转换的结果。该过程使用VERILoGHDL语言来描述,时序仿真如图5所示。
图5 AD控制时序仿真
在实际应用中,AD的转换量程选择为±10V,双极性,使用内部转换模式,控制字后3位选择输入通道。由MAX196用户文档可知,通道0采集的控制字为0X58,假设得到的转换结果为0X3EF,为了下一步数据存储的需求,设计将数据缓存在寄存器DATA[11∶0]中,并产生一个oVER中断信号用于后期处理。
3.1.2数据缓存
缓存的设置主要是解决AD连续高速的数据采集与STM32F417数据处理周期不匹配的问题,当AD完成一个通道的数据采集时,需要对数据进行缓存,考虑到FSMC总线接口的特点,在设计中,使用FPGA内部的双口RAM完成数据缓存[10],由QUARTUSII自带的IP核生成,其中RAM的读取端连接FSMC接口,而写入端连接AD,写缓存的地址通过写缓存控制模块进行控制。
信号EN在启动AD控制模块的同时,将写缓存控制模块的地址清0,在oVER信号的触发下,地址加1,并且产生RAM写信号RAM_wE,寄存器DATA[11∶0]的数据写入RAM里,在连续6路的采集中,每一路的数据对应不同的地址,进而完成数据的缓存。时序仿真如图6所示。
图6 缓存读写时序
采集结束后,STM32F417通过读取存储地址分别得到6个通道的采集数据,进而完成下一步的数据处理和传输。
3.2、数字差分信号采集
数字差分信号的采集首先需要将差分电平转换成数字电平,选用MAXIN公司的MAX3362作为数字差分信号收发器。数字信号既有并行数据,也有串行数据,在同步触发脉冲的作用下,可通过FPGA内部逻辑电路对数据进行处理。对于15路并行数据,通过集成电路74373+74541的逻辑组合模块进行采集,在同步时钟SyNC1置高时将数据锁存至74373,而对于1路串行数据,则通过74164+74541的逻辑组合,在触发脉冲SyNC2的上升沿将数据由串行转为并行,STM32F417向对应的地址发出读指令,地址经译码后,选通缓冲器74541,从而得到相应数据。
4、系统总体流程和结果测试
系统上电后,STM32和FPGA首先进行硬件初始化,其中FPGA通过PS的方式完成配置。STM32启动定时器产生定时中断,在中断响应中,发送开始采集命令,进而启动FPGA内部逻辑电路进行信号采集控制和数据缓存,在采集结束后,STM32响应FPGA发出的结束中断请求、读取数据、处理数据并将处理后的结果打包发送至上位机,最后,上位机接收数据并显示结果。系统工作流程如下图7所示。
图7 数据采集系统流程
STM32F417通过网口将结果发送至上位机,其以太网通信是基于LwIP协议栈,利用改进后的UDP协议,实现数据实时可靠的传输。PC上位机则通过C++BULIDER平台上的TNMUDP控件完成数据的接收。采集系统在实际实验中,控制MAX196完成6个通道采集的时间为约40μS,加上读取、处理、传输和显示的时间,系统可在50μS内完成全部采集和处理,设置定时器TIM1,使其50μS中断一次,并在中断响应中再次发送采集命令,实现精确时间间隔的连续采集。
通过信号发生器,产生50Hz的正弦波,连续采集波形如图8所示。
图8 50Hz正弦信号采集
模拟通道和数字信号端口分别对给定值连续测试5000次,统计结果的误差和误码率见表1。
表1 测试误差统计
测试的结果表明,模拟通道测量误差在10MV之内,数字信号端误码率为0,系统采集精度满足设计要求。
5、结束语
本系统很好地结合了STM32微控制器和FPGA可编程器件两者的长处,利用STM32硬件中的FSMC、ETHERNETMAC、定时器等外设功能,以及FPGA灵活的逻辑可操控性,解决了系统接口设计、时序控制、组网传输等复杂问题,实现了火控系统信息多通道、多类型信号的实时采集,保证了精度高、传输快,实时处理的采集要求,为后续应用打下了良好的基础。同时,简化系统硬件设计,缩小了系统体积和开发周期,具有极高的性价比。本系统还保留了很大的灵活性,可轻松进行二次开发,组合架构可应用于不同的信号采集领域,有广阔的应用前景和参考价值。
上一篇:一种基于STM32的温室远程监测和控制系统的设计
下一篇:基于HAL库的STM32呼吸灯实验
推荐阅读最新更新时间:2024-11-09 18:07
设计资源 培训 开发板 精华推荐
- DC1532A-H,LTC2267-12 演示板,12 位,105 Msps,1.8V 双串行 ADC,5MHz
- LT3973IMSE-3.3 1.21V 降压转换器的典型应用
- AM20EW-4805SZ 单输出、20 瓦 DC-DC 转换器的典型应用
- Windows Hello
- 使用 Analog Devices 的 24LC025-I/ST 的参考设计
- LTC3411AEDD 演示板、1.25A、4MHz、同步降压型 DC/DC 转换器
- L7812C大电流稳压器的典型应用
- CN0183
- 适用于STM32F410RB MCU的STM32 Nucleo-64开发板,支持Arduino和ST morpho连接
- 【广西师大校赛】投递电动小车