引言
在我国由于电子技术水平相对落后,许多高精度、高性能的电子仪器都要进口,价格昂贵,难以被广泛使用,因而研制成本低、高性能的虚拟仪器,是很有必要的。针对此项需求,文中提出一种新USB2 .0接口多功能数据采集系统解决方案,解决其传输速率的问题。
图1 系统框架图
1 系统整体结构概述
本设计主要是基于USB2.0高速接口芯片和ARM芯片,设计一个可对模拟信号进行采集并在LabView上显示的系统。该系统的整体结构框图如图1所示。
系统主要由信号采集模块、USB接口模块和PC机三个主要部分组成。其中信号采集模块包括信号调理电路和ADC电路;USB接口模块主要是ARM芯片FT2232H的FSMC对FT2232H中的FIFO进行读写操作;PC机软件部分是由驱动程序、动态链接库和LabView应用程序构成。
信号采集模块和USB接口模块主要把信号采集模块采集到的数据传到PC机,也要使PC机的控制信息能够传到信号采集模块和USB接口模块上,从而控制数据采集工作。其中,LabView应用程序要能够对采集到的数据进行处理、显示,以及对下位机采集的控制。
系统的基本工作原理略——编者注。
2 系统设计
2.1 系统硬件设计
2.1.1 信号采集电路设计
信号采集电路的功能就是采集被测信号波形数据,并把它存到处理器内存中。首先,将信号进行预处理,再经过A/D转换器转换成数字信号,最后存入处理器中。信号采集电路可以分为以下两个部分:信号调理、A/D转换。
如图2所示,信号调理电路的主要作用就是使输入信号满足A/D转换基准电压幅度要求,也可扩大输入信号范围,滤去不必要的干扰,如高频谐波、工频干扰、地线干扰、共模信号等。模拟信号调理电路主要包括:幅度控制、共模相减器,该电路主要采用两级运算放大器电路构成OP07CP为放大芯片。A/D采集需要基准电压,而STM32F103内部提供的参考电压不太稳定,利用基准电压芯片TL431,其引脚1输出2.5 V参考电压,外加滤波电容,布局靠近主控芯片,可以稳定工作。
图2 被测信号调理电路
STM32F103作为新一代ARM CortexM3核处理器,最高工作频率达72 MHz,资源丰富,功能强大。具有2个12位模/数转换器,1 μs转换时间(多达16个输入通道),转换范围为0~3.6 V,具有双采样和保持功能,而其特殊的可变静态存储技术FSMC具有高度的灵活性,其卓越的性能和功耗控制能够适用于广泛的应用领域。
2.1.2 USB接口电路设计
FTDI推出的第5代USBtoUART/FIFO IC 支持 480 Mb/s USB 2.0的高速规范,并可在各种工业标准的串行或并行接口(例如UART或FIFO)下进行配置。FT2232H提供两种可配置的接口,均可配置为UART、JTAG、SPI、I2C总线或带独立波特率发生器的位响应模式串口。内部集成了USB协议引擎(可以控制UTMI,处理USB 2.0高速接口的各个方面),并且集成了整个USB协议。
93C56是微芯公司的一款基于SPI串行接口的EEPROM,容量大小为256×8位或128×16位,具有高可靠性,可擦定寿命100万次,数据保持时间为100年。
EEPROM 93C56用于保存FT2232H配置完成的工作模式等。若无EEPROM,则FT2232H默认工作在USBUART方式,双向稳压二级管保证USB传输数据稳定。
FT2232H与STM32F103的接口电路略——编者注。
FSMC读写FIFO的过程如图3和图4所示。读过程:当RXF为低时,即可以读FIFO中数据。将RD拉低即可读出数据;写过程:当TXE为低时,即可以向FIFO中写数据。先给数据线上提供数据,然后拉低WR即可写入数据。
图3 异步FIFO模式下读信号波形
图4 异步FIFO模式下写信号波形
2.2 系统软件设计
一个 USB设备的软件一般由设备固件、设备驱动程序及应用程序组成。本文主要介绍 USB设备固件和应用程序的设计。在设备驱动程序里,FTDI公司提供了串口VCP和D2XX两种驱动程序,免去了复杂的USB驱动程序的开发过程。
2.2.1 设备固件设计
图5 FT2232的配置与显示
设备固件设计包括配置相关模式、主控器读FT2232H的读写控制。如图5所示,FTDI公司提供了MProg 3.5软件,方便配置各种传输模式。MProg 3.5软件应用于异步FIFO传输方式,利用D2XX Direct驱动程序,可在PC机设备管理器上看见USB的两个设备。
主控器读写FT2232H的读/写控制,利用STM32F103的FSMC的灵活性管理1 GB的映射地址空间,可分为4个256 MB的子BANK,本设计采用BANK1中SRAM控制方式,而FIFO没有地址线,却有空/满信号线。STM32F103的FSMC分配表如表1所列。
表1 STM32F103的FSMC分配表
针对异步FIFO时序要求,定义读写地址为(uint32_t)(0x60000000),利用ST提供的固件库进行主要初始化操作如下:
FSMC_NORSRAMInitTypeDefFSMC_InitStruc;//定义初始化数据结构体
FSMC_NORSRAMTimingInitTypeDefp;//定义初始化时间参数结构体读写FIFO时序的定义,时间设置查看FT2232H DataSheet
p.FSMC_AddressSetupTime=0×1;
p.FSMC_AddressHoldTime=0×0;
p.FSMC_DataSetupTime=0×01;
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision=0;
p.FSMC_DataLatency=0;
p.FSMC_AccessMode=FSMC_AccessMode_A;
/*与FSMC相关数据寄存器配置*/
FSMC_InitStruc.FSMC_Bank = FSMC_Bank1_NORSRAM1;//扩展端口为NOR BANK的第1个BANK
FSMC_InitStruc.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//不使用总线复用
FSMC_InitStruc.FSMC_MemoryType = FSMC_MemoryType_PSRAM;//扩展类型为SRAM读写方式
FSMC_InitStruc.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;//扩展总线宽度8位
FSMC_InitStruc.FSMC_ReadWriteTimingStruct = &p;//读写统一时间参数
FSMC_InitStruc.FSMC_WriteTimingStruct = &p;//指向定义的时间结构
/*调用初始化函数,实现对FSMC的配置*/
FSMC_NORSRAMInit(&FSMC_InitStruc);
/*使能FSMC*/
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
A/D采集数据通过STM32F103自带的DMA传送到内部RAM,通过幅值变换,再用FSMC写FIFO,将数据传输到PC,经由上位机显示波形和相关数据。主程序软件流程图、DMA中断软件流程图如图6、图7所示。
图6 主程序软件流程图图7 DMA中断软件流程图
2.2.2 上位机程序设计
LabView是美国NI公司推出的一种基于C语言的虚拟仪器软件开发工具,具有强大的数据采集功能,内含丰富的数据采集、数据信号分析以及控制等子程序。
利用LabView做USB的数据采集系统,需要驱动程序支持,如图8所示,可不必掌握从硬件结构到软件系统的所有细节。FTDI公司提供动态链接库文件(.dll),在Windows操作系统中,对USB接口通信采用阶层式的驱动模式,每个驱动程序阶层负责处理一部分通信工作。在应用程序的阶层中,以设备驱动程序与系统的总线驱动程序来通信,而其中总线的驱动程序用来处理USB的硬件。应用程序调用Windows API函数与设备驱动程序联系,从而实现对硬件的控制。在本系统中,LabView调用ftd2xx.dll,可将动态链接库中各个函数做子VI,可以参照D2XX_Programmer's_Guide中各个函数的使用方式。
图8 USB功能体系结构图
Labview程序设计模式采用状态机形式,如图9所示。
图9 LabView程序
3 相关功能实现
3.1 读功能展示
采样模拟信号在应用程序上显示波形和数据,读功能运行结果界面略——编者注。函数发生器提供一正弦波的电压信号接到信号调理端的输入端,经过稳幅和STM32F103的A/D采样,将12位的数字信号压缩成8位,通过FSMC写入FIFO,然后由LabView应用软件读出并显示其正弦波波形。
3.2 写功能展示
如图10所示在LabView界面的写区域,写上一定量的数据,数据经由设备传输到FT2232H的FIFO中,再由按键控制读FIFO内数据到串口打印屏幕上。
图10 写功能运行结果的界面
3.3 传输速率测试
如图11所示,STM32F103中准备1024个字节的数据传输到PC机,并计算其传输速率。
图11 测试速率功能运行结果的界面结语
用LabView开发USB高速传输系统,相对方便,USB的普及加上LabView在采集测试行业的优势,不用掌握USB协议细节,便可利用其在多通道采集数据和大量数据传输的优势广泛应用。一般的串口和全速的USB不可能达到3 011 KB。然而,为了能得到更高的速率,设计应采用同步FIFO方式加FPGA控制的传输模式,但是这样成本就会增加。