USB2.0技术在便携式测试系统中的应用
2015-05-15王文梁
王文梁 仇 傲
(中海油田服务股份有限公司油田技术事业部,河北 三河065201)
0 引言
随着大规模集成电路和计算机技术的迅速发展,数字技术渗透到各个技术领域,以此为基础的各种装置层出不穷,传统的外设一般基于PCI总线、PC-232总线或USB总线。USB总线的即插即用、真正的热插拔、可总线供电、高性能和系统造价低等一系列优点使得USB接口得到了广泛的应用[1]。
本文介绍了基于USB技术的便携式石油测井测试系统,该系统可用于对测井仪器进行实验室测试、维修,保养。通常,也可以在新测井仪器研发阶段用于调试。一般来说,石油测井系统包括地面采集系统、长距离井下电缆、井下辅助通信设备和测井仪器。当需要对测井仪器进行测试、检修时,需要整个测井系统,缺一不可。而通过该便携式测试系统,就可以直接对测井仪器直接进行控制、数据通信和测试,省去了地面采集系统和井下电缆等设备,节省了设备资源。
1 系统结构和工作原理
该测试系统模拟油田井场测井作业,实时给测井仪器发送指令,并接收测井仪器的信号数据,并将数据通过USB接口输出到PC机,通过PC机的控制软件显示、存储采集数据测试,用于测井仪器的研发,实验室模拟调试。该测试系统主要有三个部分组成:USB2.0传输接口、DSP控制单元和测井总线接口单元,其总体框图如图1所示。
图1 测试系统总体框图
USB传输接口采用FTDI公司的第二代USB FIFO芯片FT245BM,它在片内集成完整的USB协议功能,控制单元主要采用DSP芯片TMS320F2812实现,控制逻辑电路在FPGA中完成。测井设备中线接口采用EDIB总线,该总线是中海油田服务股份有限公司自主研制的一种井下测井仪器总线,该总线采用主从结构,可以同时挂接多种测井仪器。
测试系统的工作流程是:PC机通过USB接口发送测井仪器命令,DSP控制单元对USB2.0功能设备接口进行实时检测,当检测到PC机有命令下发时,对下发的命令数据及参数进行曼切斯特编码,发给井下仪器。当井下仪器要传送数据给PC机时,DSP控制单元对EDIB总线通道进行检测,将检测到的数据进行曼切斯特解码,并将解码后的数据打包通过USB2.0接口传给PC机。PC机通过仪器测试软件来检测井下仪器的各种功能。
2 USB接口单元与控制电路设计
在USB数据传输通信中,分USB主机设备和USB功能设备,USB系统的数据和命令的传输都是有USB主机来启动的,在整个数据通信中占主导地位,在同一时刻USB系统中只存在一个USB主机。USB功能设备通常是一个独立的外部设备,可以和USB主机进行数据和控制信息的交互,并未主机提供额外的功能,每个USB设备内部都包含有描述器功能和资源需求的配置信息[2]。对于我们的测试系统来说,PC机是USB主机设备,测试系统是USB功能设备。
FT245BM是一款USB FIFO芯片,兼容USB1.1和USB2.0协议,具有块传输和同步传输两种传输方式,片内具有384字节FIFO的发送缓冲器和128字节FIFO的接收缓冲器[3]。可以将USB总线转化为8位的处理器并口输出,工作原理如图2所示。
图2 USB接口工作原理框图
串行接口引擎(SIE)负责完成串行数据的解码、差错控制、位填充与USB协议有关的功能。USB协议引擎管理USB设备控制端点的数据流,处理底层USB协议。
当主机向USB设备发送数据时,EMPTY信号为低,通知USB设备已有数据接收到,这时DSP可以从FT245BL中读取主机发来的数据,当所有数据都读完后,EMPTY信号变为高电平。
当USB设备向主机发送数据时,如果FULL信号为低电平,数据被写进发送FIFO,如果发送FIFO已满,FULL信号变为高电平,这时禁止向FIFO写数据,待FIFO中的数据通过USB接口传到主机之后,FULL信号变为低,这时USB可以继续向主机发送数据。FT245BL通过EEPROM接口外扩一块EEPROM,EEPROM用来存储USB VID、PID、串行码、产品描述符,还用来设置USB传输模式、远程唤醒模式。本设计中选用16位宽的EEPROM 93c46。
控制电路主要有DSP芯片和FPGA芯片构成,DSP使用TI公司的TI公司的DSP芯片TMS320F2812,它是高性能的32位定点DSP,具有哈佛总线结构,统一的存储器规划,4M的线性程序地址,4M的线性数据地址,高效的代码(C/C++和汇编语言)。片内集成128K×16的Flash空间,可以反复擦写,重复编程,用于存放程序代码和数据,在产品开发阶段使用起来非常方便。
TMS320F2812内部有18K×16的数据存储空间,考虑到TMS320F2812的内部数据存储空间较小,为未来研发的更大数据量仪器保留余量,DSP外扩了512K×16的SRAM芯片,型号为IS61LV52116,用于存放井下传送数据。DSP地址空间分配如下:
内部资源分配:DSP内部具有128K×16的Flash,占用空间是0x3D8000——0x3F7FFF,其中,0x3F6000——0x3F7F80作为用户的程序代码存放空间,0x3F7FF6——0x3F7FF8为引导到闪存的进入点(这里有程序跳转指令)。0x3F8000——0x3F8FFF为内部RAM空间,作为程序代码的运行空间。
外部资源分配:F2812的外部接口可分为5个存储器映射区,本次设计使用了两个存储映射区。0x004000——0x005FFF为Zone1映射区,实际中只使用了前16个地址单元作为USB模块和曼码编、解码模块的外部控制寄存器。0x080000——0x0FFFFF为Zone2映射区,作为DSP外部扩展数据区,用于存放从井下仪器收到的采集数据。
DSP与FT245BM之间的通信主要靠8位数据线D0~D7以及读写控制线(RW、RD、EMPTY、FULL)来完成,这是USB芯片FT245BM作为DSP的一个外部设备,当USB接口接收主机数据的时候,对于DSP来说就是一个读外部FIFO数据的过程;当USB接口向主机发送数据的时候,对于DSP来说就是一个向外部FIFO写数据的过程。
FPGA芯片采用了ACTEL公司的APA600。它具有158个用户I/0引脚,3.3 V的I/O电压,内核电压2.5V,可生成同步/异步FIFO和SRAM。APA600可以产生不同频率时钟信号,具有较大的存储空间和丰富的I/O资源,可以完全满足本项目对时钟产生,逻辑控制和数据缓存的要求。
FPGA作用有两个,一是完成测井设备总线接口的逻辑控制,测井设备数据的编码、解码,用于和测井仪器进行通信,二是完成DSP于USB接口之前的逻辑控制。
3 软件设计
系统的软件设计包括固件程序设计、驱动程序设计和主机应用程序设计。
3.1 固件程序
USB固件程序主要完成USB协议处理和固件交换,目的是让WINDOWS检测和识别设备建立起正确的通信连接[4]。由于USB设备芯片FT245内完全集成了USB协议引擎,不需要专门设计USB固件程序。
DSP固件程序主要用去检测USB芯片内FIFO标志的状态,完成USB接口与测井仪器的通信,编程步骤如下。
(1)初始化,等待PC控制命令。
(2)检测USB的接收FIFO是否为空,当FIFO为非空时,说明接收到PC机下发命令。
(3)对PC机下发命令进行测井数据命令格式编码,并下发给测井设备。
(4)等待接收测井设备的回传数据。
(5)对测井设备回传的数据进行格式解码。
(6)将测井设备数据通过USB发送到PC机,当USB设备的发送FIFO为非满时,向USB发送FIFO写入测试设备的数据。USB接口芯片将自动将数据发送给PC机。
3.2 驱动程序设计
USB芯片FT245BL的厂家提供两种驱动程序:VCP和D2XX驱动程序。VCP驱动程序为虚拟串口程序,它将USB接口包装成一个虚拟的232串口,最高传输速率为2.4Mbps。D2XX驱动程序是标准的USB接口驱动程序,最高传输速率为8Mbps。本设计中使用的是D2XX驱动程序。
3.3 主机应用程序
主机应用程序采用LabWindows/CVI设计。安装USB设备驱动程序后,直接调用动态连接库函数可实现BUS端口的识别、打开、关闭和数据通信在驱动程序的动态连接库中常用的函数如下:
(1)int OpenDevice(int device_num),用于连接USB设备,num表示所连接的USB设备个数。
(2)int CloseDevice(int device_num),用于关闭USB设备,num表示所连接的USB设备个数。
(3)int ReadDevice(int device_num,char*RdBuffer;unsigned long num),用于接收来自USB接口的数据
(4)void WriteDevice(int device_num,char*wrbuffer,ULONG num),用于向USB设备发送数据。
(5)void SetDevideTimeout(int device_num,ULONG R),用于设置USB设备的接收、发送超时时间。
(6)FT_Purge(FTHandle1,Mask),用于USB设备发送、接收数据缓冲的清空。
4 实验与结论
通过上述方法实现了主机软件和测井仪器之间的通信,并使用测井仪器对该测试系统进行了实验验证。图3为基于USB接口的测井仪器测试系统装置与采集波形,USB接口与PC主机连接,测井数据总线接口与测井仪器连接,测试系统在试验时挂接的测井仪器为数字声波测井仪,图中显示的四道波形为数字声波测井仪上传的波形数据,地面软件采用将仪器采集的四道正弦波显示出来。四组波形正确显示了测井仪器采集的波形情况,实验表明该测试系统满足了仪器测试的需要。
图3 测试系统装置与采集波形
[1]罗伟林,王立欣,毛远.USB数据采集系统中DMA数据传输的实现[J].电子测量技术,2008,31(6):121
[2]李英伟USB2.0原理与工程开发[M].北京:国防工业出版社,2007:7-8.
[3]Future Technology Devices International Ltd.DS245BL Version1.7[DB/OL].http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT245BL.pdf,2005
[4]张建鹏,解国明,李刚.基于ISP1581型接口电路的USB2.0接口设计[J].国外电子元器件,2005(9):7-10.