APP下载

基于MAX10的多通道小型化记录仪设计

2021-02-22朱志斌马游春鲍爱达

计算机测量与控制 2021年1期
关键词:记录仪串口芯片

朱志斌,马游春,鲍爱达

(1.中北大学 电子测试技术国家重点实验室,太原 030051;2.中北大学 仪器科学与动态测试教育部重点实验室,太原 030051)

0 引言

随着科技的发展,生产生活中需要测量的参数越来越多[1],尤其在航天、军事以及精密设备等领域,数据采集测量的要求更加苛刻,对设备体积,功耗,采样通道数量等各项指标提出新要求[2],在一些航天军事应用方面,有时还要面临一些极端环境条件。这些需求使得人们不断探索改进采集存储设备。市面上多路采集存储的实现方案通常是单片机等控制器控制外部搭载的AD转换芯片以及众多模拟开关,存储部分常使用flash完成。然而这种通用方案在一些场合有很大局限性[3]。比如需要将记录仪内嵌在设备中,而且要求记录仪在外力作用下损毁后,依然能方便回收采集的数据,这样就对记录仪的体积与数据防护方面提出了更高的要求。

针对这些要求,设计一种基于MAX10的多通道记录仪。MAX10是一款Altera公司小外形封装的FPGA,集成数模转换模块,与单片机作为主控相比,FPGA具有工作延时少,编程方便灵活,计算速度更快等优点[4],同时,MAX10支持双配置功能,本设计将采集存储功能作为一个单独程序下载配置进MAX10中,将读取数据功能作为第二个功能程序也下载配置进MAX10中,上电启动采集存储程序,当工作完毕时候,改变控制引脚电平,让MAX10启动数据读取程序,读取SD卡中的数据传输到上位机中。这样可以很大程度利用FPGA逻辑资源。若记录仪损毁,则从记录仪残骸中取出SD卡,再进行数据回收。

1 系统结构及原理

本设计主要为多路信号采集存储模块,信号来源部分是由外部产生,不作为本设计研究部分。多路信号采集存储模块包括内嵌AD的MAX10主控模块、SD卡存储模块、电源与电压转换模块以及串口通信模块。总体系统框图如图1所示。

图1 总体系统框图

上电后,MAX10开始配置内部AD的相关参数,并设置中断。外部多路信号过来后,通过转换接到MAX10上,内部AD采集开始工作,然后MAX10将采集的多路数据提取出来,加上帧头帧尾,进行混合编帧,然后将帧数据写入缓存,当缓存达到512字节后,写入SD卡[5]。采集结束后,转换控制引脚电平状态,使MAX10启动第二套程序,从SD卡读取数据,然后将数据通过串口发送到上位机,进行观察验证采集的数据帧。根据每一帧的相应位来判断区分哪些采集的数据分别属于哪一路。

2 系统硬件电路设计

2.1 主控与AD模块

主控与AD采集模块均是MAX10,它只需要单电源供电,封装方式为EQFP144,在启动速度、功耗以及安全性方面有着很大的优势。成功在低成本、单芯片小外形封装的FPGA器件中完成了先进的数据处理功能,还包含了以前版本同系列器件的特点,在集成功能与集成密度方面有更大加强,其密度范围在2 k至50 KLE之间。在非易失集成器件领域,有着极大地进步[6]。

其集成功能包括模数转换器(ADC)和双配置闪存,支持在一个芯片上存储两个镜像,在镜像间动态切换。FPGA将AD采集功能作为IP核,具体为Altera Modular ADC Core,MAX10内部集成的ADC模块具有12bit精度,并且最多可以支持到17个ADC输入采样通道。其中,MAX10的ADC是1 MHz逐次逼近型寄存器(SAR)模数转换器。采集电路如图3所示。此外,MAX10还支持Nios II嵌入式操作系统,可以直接配置成一个基本的片上操作系统,简化繁琐的各种通信协议与存储模块的构建,适合一些对处理速度要求不高、功能简单的应用场合,能够大幅缩短开发周期[7]。MAX10同时还具备休眠模式,当系统一段时间不工作时候,设置MAX10进入休眠模式,可以极大降低功耗,延长电池的使用时长,这对嵌入式设备而言,是一个非常实用的功能。

2.2 存储模块

通用的存储数据方法有U盘、存储卡以及Flash等方式。然而,一般的Flash存储容量较小,大容量的Flash尺寸也会相应增加[8],与小型化设计目标有冲突,而且也不便回收。U盘体积更大,而且与其它部件连接处不够稳固。而SD卡存储容量大、体积小、价格低廉,通信连线数量少、读写速度快。使用与回收都非常方便。在本设计背景条件下,这些优点使得SD卡非常适合作为此次设计的存储方式。而且在一些试验环境危险的条件下,整个记录装置可能损毁,而此时,SD卡能轻易从损毁的装置里面取出,不易损失采集的数据,故本设计存储器选择SD卡。

本设计选用的SD卡类型为SDHC,它采用SD2.0协议规范,存储容量为32 GB,可以配置选择工作在SDIO模式或者SPI模式,此次设计选择SPI模式,所以共用到CS、CLK、MISO、MOSI四根信号线,在SPI模式下采用1位数据位宽,单纯衡量SD卡数据传输速度,理论上能够达到50 Mbps的读写速率,远大于本设计的采集所需。

2.3 电压转换模块

本设计使用的MAX10芯片是单电源型号。所以我们使用的电源芯片是ALTERA公司的Enpirion电源转换芯片EP53A8HQA,原理连接图如图2所示。它属于DCDC,16引脚封装,其输出最大电流1A。其尺寸为:长3.0 mm、宽3.0 mm、高1.1 mm。工作温度范围在-40~105℃之间,从芯片尺寸以及各种参数性能上考虑,EP53A8HQA非常适合作为本设计的电压转换芯片。

图2 电源转换芯片原理图

2.4 串口通信模块

图3 八路采集连接图

模块选用Silicon Labs CP2102GM的USB-UART芯片,能实现USB转UART串口功能[9],芯片内部集成了1024字节EEPROM,可以用来存储各类信息。支持波特率区间为在300 bps至1 Mbps,工作温度范围为-40至+85度,支持对外供电:5 V或3.3 V。在USB部分,符合USB2.0规范。可以用一根USB线将它连接到上PC的USB口进行串口数据通信。也可作为供电接口,使用十分简易方便。

3 系统软件设计

为了有效利用FPGA内部资源,同时借助于MAX10独有的双启动配置功能,本设计将整个软件系统划分为采集存储部分与读取发送部分,系统运行哪一套程序取决于BOOT_SEL引脚的高低电平。当数据采集结束,已经将数据写入SD卡,再改变BOOT_SEL引脚的电平,使MAX10运行读数与发送程序。FPGA根据内部时序逻辑,向外围电路发送各种控制命令[10]。外部的八路信号进来后,启动MAX10内部的AD采集功能,然后将八路数据提取出来,加上帧头帧尾,再将帧数据写入缓存中,当达到了SD卡写的最小单元512个字节时,将FIFO中的数据提取出来,按时序写入SD卡中。采集结束后,改变BOOT_SEL引脚电平,让MAX10运行SD卡读程序,读取SD卡数据,然后通过串口发送到上位机。

3.1 采集存储软件设计

如图4所示,上电初始化SD卡,使得SD卡工作在SPI工作模式下,校准AD,配置中断使能寄存器,开启采集中断功能,然后启动AD采集,开始等待数据采集完成时产生的中断,当检测到中断发生,读取AD各路采集槽数据,然后在数据两端加上帧头0xFFFFFF01帧尾0xFFFFFFFF,进行混合编帧,再将这一帧数据写入FIFO中,当FIFO半满时候,将FIFO中数据读取出来,然后写入SD卡中,完成数据的采集存储功能。如果FIFO没有达到半满就继续等待AD采集过来的数据[11]。

图4 采集存储图

3.2 读取与发送软件设计

如图5所示,当FPGA上BOOT_SEL引脚电平发生了转换,FPGA会启动下载配置的第二程序,运行SD卡数据读取与发送程序,MAX10配置SD卡到预定工作模式后,开始进入读数阶段,先将地址写入写入单个命令块CMD17,然后按位发送读命令,将SD卡单个扇区数据读取出来,之后,将数据写入缓存,当缓存达到半满,取出缓存的数据,然后串口发送出来,到上位机上显示。当缓存中的数据发送完成后,改变SD卡读数地址,再次启动SD卡读数流程,将下一个扇区地址内的数据读取出来,依次循环往复,直到采集的数据都被读出,最终在串口助手上显示出采集的帧数据。通过这种方式,可以很方便地分析一帧中各位的数据,然后对比每一路作为测试的电压值,相互对比验证。

图5 读数发送图

4 系统测试与实验结果

4.1 SignalTap在线逻辑分析仪

Signal Tap是第二代系统级在线调试工具,它可以选择多个需要观察的目标信号以及选择目标信号的捕获方式[12],而传统的外部逻辑分析仪测试时候需要外部连线,当要测试信号多达数十个时候,传统外部逻辑分析仪就有很大的局限性,所以,相比较而言,Signal Tap不需要物理接线,更容易测试更多数量的信号,极大地方便了开发调试过程。

SD卡的读写操作都是基于命令的,通过向SD卡发送相应的命令,获得相应的基本底层驱动接口程序。如图6所示,用在线逻辑分析仪捕获信号变化,可以看出在SD卡空闲状态标志拉低后,SD卡片选信号cs拉低,开始初始化配置过程,系统依序进入st_cmd0、st_wait_cmd0、st_cmd8 st_cmd55、sta-acmd41等状态,在这些状态下,mosi分别发送了cmd0、cmd8、cmd55、acmd41等一系列初始化命令,SD卡的miso引脚在一些命令状态过程中做出了一系列响应,最后sd_init_done信号被拉高,证明SD卡已经初始化成功。

如图7所示,从在线逻辑分析仪中可以看出当rd_start_en脉冲来临后,rd_busy信号被拉高,标志系统进入了SD卡读取数据状态,与此同时,片选信号拉低,使得SD卡能够有效通信。还可以看到,rx_flag信号拉高期间miso数据线上电平不断在跳转,mosi则维持在高电平,说明miso处在传输过程中,MAX10正在读取SD卡存储的数据。读数结束后,rx_finish_en产生一个高脉冲,表示一个单元的数据读取完毕。

图7 SD读数图

4.2 读取的数据

本设计将每一路采集数据都用16位数据格式表示,其中低12位存储采集的数据,高4位用0填充。将SD卡存储的数据读出后,用串口形式发送出来,在串口助手上观察八路采集的结果。从图8可以看到,串口助手接收到的数据帧头为0xFFFFFF01,帧尾为0xFFFFFFFF。每组数据前的0是程序中额外添加的,用来分割每组数据。去掉用0填充的高四位之后,八组采集的十六进制数据分别为0x000、0x0A4、0x337、0x5C0、0x855、0xAE2、0xD75、0xFFF。

图8 接收数据图

ADC测量范围在0 V到2.5 V之间,模拟输入量程从000h到FFF之间,它的分辨率为212=4 096,1 LSB=2.5 V/4 096=610.35 μV。其中,实验测试中作为输入的八路数据采集口电压分别为0 V、0.1 V、0.5 V、0.9 V、1.3 V、1.7 V、2.1 V、2.5 V,从理论上分析,八路分别对应的采集的原始值分别为0x000、0x0A4、0x333、0x5C2、0x851、0xAE1、0xD70、0xFFF。但是由于作为实验输入的数字电源的电压有一定误差干扰,输出的电压值与实验的理论值有所偏差,使得MAX10采集得到的帧数据与理论电压值不完全相同,有一定的偏差。但是从数据结果来看,与预期值非常接近,属于可以接受的实验误差范围。所以此次实验结果符合预期。

为了更加明显直观地观察比较采集的结果是否正确,从众多采集点中选取中间30组采集的十六进制原始数据,再经过转换变成对应电压值,然后绘制成折线图,图中有八条不同线型的线,它们分别代表着8个通道采集的数据转化后的电压值。如图9所示,可以很清楚看到八路数据采集分别在0 V、0.1 V、0.5 V、0.9 V、1.3 V、1.7 V、2.1 V、2.5 V附近以一个非常微小的幅度上下震荡,这些数据结果与实验的八路输入电压非常接近,证明此记录仪八路采集均能够正常工作。

图9 采集结果图

5 结束语

为了解决记录仪小型化问题,本文设计了一种基于MAX10的多通道小型化记录仪,能同时采集八路信号,由于采用了具备AD采集功能的MAX10作为在主控芯片,和外加AD方案的记录仪相比,缩小了近四分之一的体积。并且实现了八路采集,采样频率为1 MHz,分辨率为4 096。同时,为了应用在一些恶劣环境下,例如在炮弹参数测试实验中,当炮弹落地,发生强烈撞击后,要求保存飞行过程中采集的参数。所以本设计发生选择用SD卡作为存储设备,其存储容量为32 GB,易于回收数据。而且系统易于升级改进,由于MAX10的采集通道多达17个,可以根据各使用场合选用合适的采集通道数量。存储部分也可以更换更大容量的SD卡以便记录更多数据,经过实测,在设备工作期间,摔击记录仪设备能准确有效得采集0 V至2.5 V之间的信号。能够满足设计要求。在需要将记录仪嵌入进设备的应用场合,应用前景十分广阔。

本设计由于时间原因,也存在着一些不足之处,例如在将SD卡内部数据读取出来发送到上位机的过程中,选用的是简单的串口传输,这种方式传数比较慢,今后可以做一下改进,换成USB直接传出到上位机中,而不是使用UART转USB方式。

猜你喜欢

记录仪串口芯片
浅谈AB PLC串口跟RFID传感器的通讯应用
做梦记录仪
基于GPS的便携式汽车行驶记录仪的研制
汽车记录仪保险丝搭接转换装置及其模具设计
芯片测试
USB接口的多串口数据并行接收方法探索
多通道采样芯片ADS8556在光伏并网中的应用
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
大容量Flash在井下记录仪中的应用
基于并行控制的FPGA多串口拓展实现