APP下载

基于USB和LabVIEW的生理信号采集系统

2012-12-15张文超

生命科学仪器 2012年5期
关键词:下位驱动程序端点

郭 栋,张文超

(杭州电子科技大学电子信息学院,浙江 杭州 310018)

21世纪,生命科学技术有了长足进步和发展,生物医学研究领域也有了突飞猛进的变化。生物医学工程科研、临床检查等过程中需要采集的信号愈来愈多样化,对采样结果的精确性要求也越来越高。为了满足这一需求,开发一款多通道、高速率、高精度的生理信号采集系统显得尤为重要。

通用串行总线USB(Universal Serial Bus)因其传输速率高,即插即用和易于扩展等优点被广泛应用。基于ARM Cortex-M3内核的STM32嵌入式处理器因其低成本和强大性能被广泛应用于汽车系统、家庭网络、无线技术等各个领域[1]。将ARM与USB结合起来并配合不同传感器、前端信号采集电路和信号调理电路,就能够很好地完成生理信号的采集、调理、传输和处理等任务,是一种较为理想的生理信号采集系统设计方案。

鉴于本设计目的是设计一种相对通用的生理信号采集系统,将其与各种传感器和信号集电路配合就可完成各种各样的生理信号采集任务。也因篇幅限,故将具体传感器部分略去,而重点阐述后面的信号采集、调理和上、下位机的软硬件框架结构与USB通信的实现方法上。

1 系统原理及框图

系统选用增强型系列处理器STM32F103ZET6,工作频率可高达72MHZ,带有片内RAM和标准USB2.0接口,多达16路通道A/D转换器等丰富外设,其中处理器集成的双ADC结构允许双通道采样/保持(为实时同步数据采集提供了坚实的基础),能够实现12位转换精度,转换周期最短为1μs。由于选用的STM32F103系列处理器集成度非常高,所以开发的系统可靠性较高。USB接口设备总线传输功率有限,采用集成度高的器件也有利于降低USB总线的负荷,其原理框图如图1。

图1 系统原理框图

生理信号处理模块主要负责将不同传感器的输出信号进行调理(放大、滤波、降噪等)使其满足后续ADC部件对输入信号的要求以便进行正确的A/D转换。主控模块主要负责USB协议解析及其通信转发:一方面,将上位机通过USB发送的数据包进行解析,执行测量与控制任务。另一方面,将ADC转换完成的数据打包组成数据帧,再通过USB接口发送至上位机。为了保证采样精度,采用REF196芯片设计高精度基准电压模块为系统的AD采集模块提供精确的参考电压。JTAG接口用于实现对STM32的在线调试,与采集通道对应的LED指示采集系统的工作状态[2]。

2 USB数据传输过程

当U S B设备接入主机时,主机开始枚举USB设备,并向USB设备发出指令,要求获得USB设备相关描述信息,其中包括设备描述符(device descriptor)、配置描述符(configuration descriptor)、接口描述符(interface descriptor)、端点描述符(endpoint descriptor)等。获取各种描述符信息后,主机操作系统会分配给该外设一个单独的地址,地址是动态分配的,每次均可能不同。在分配完地址和对设备进行初始化完成后就可以对设备进行读写操作了。其中,设备接口是用于描述USB设备某一特定功能,是一组端点的集合。端点是USB主机和设备之间进行通信的节点。通道是设备上端点和USB主机应用程序之间的连接件,用于在端点和应用程序所申请的缓冲区之间进行数据交换。USB逻辑组成如图2。

图2 USB逻辑组成框图

系统中数据的传输,宏观来看是在HOST和USB功能设备之间进行,微观来看是在应用软件的中BUFFER和USB功能设备端点之间进行,每个端点都有自己的缓冲区,因此,可以认为USB通信就是应用软件BUFFER和设备端点BUFFER之间的数据交换。

3 模拟电路部分硬件设计

整个系统硬件可分为两个部分:第一部分主要实现动物生理信号的采集与放大,包括模拟信号采集与滤波电路、放大电路等。第二部分主要为STM32最小系统及与PC之间USB电路的设计。

在模拟电路设计之前,首先要考虑生物电信号的幅值和频带宽度,常见生物电压范围在0.5μV至5mV之间[3],是非常微弱的信号,必须进行放大后再才能送给单片机处理。生物传感器产生的微弱电信号(含共模干扰信号和噪声信号)送到INA128差动放大器的两个差点输入端(VIN+和VIN-),进行差动放大,如图3所示。差动放大可以有效地抑制掉“共模干扰信号”,余下所含的噪声信号就由滤波电路处理。

图3 前置放大电路原理图

生物电信号一般是低频信号,传感器电极的生理信号混有包括人体肌电、呼吸生物噪声,电极连接噪声等的干扰,所以系统需要设计滤波电路来滤除噪声[4]。带通滤波器由高、低通滤波器来构成,如图4所示。

图4 滤波电路原理图

4 系统软件设计

整个系统软件可分为三个部分:下位机固件程序,USB设备驱动,上位机应用程序。STM32下位机固件程序是整个系统运行的核心;USB设备驱动程序是USB硬件与上位机之间通信的桥梁;上位机应用程序完成对下位机的控制和对数据的分析、处理、显示等功能。三部分配合完成可靠、高速的数据采集与传输处理任务。系统程序框图如图5。

图5 系统程序框图

4.1 下位机固件程序和设备驱动程序设计

USB上电复位之后,下位机首先需要完成系统时钟配置,以及片内外设和中断的配置等,然后初始化USB设备。初始化成功后,等待上位机发送控制命令(启动、停止或者通道转换等)。下位机以中断方式接收命令执行相应操作,开启相应ADC通道[4],转换结束后数据打包成帧并上传给上位机。

下位机程序中,通过解析U S B C D C(Communications Device Class)类标准设备类通信协议,开发了一种USB CDC类的数据传输程序,由于是标准设备类请求,可借鉴仿造PC机上微软公司提供的usbser.sys驱动程序,仅需一个设备信息文件(Device Information File)来引导驱动程序,免去了设计者完全独立研发和安装驱动程序的步骤。

设备信息文件简称INF,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,它实质上是一个文本文件,可以用记事本工具打开,进行查看和编辑。INF文件包含了相应USB设备及其驱动程序的详细信息。这些信息包括不同类型的设备使用对应不同类型驱动程序,设备信息在系统注册表中的存储等,这样可以确保设备能够在连接到主机时候被正确地配置[5]。本系统所采用的INF文件是由标准CDC类引导文件快速定制的,在整个文件中,仅少数几个部分需要用户定制,主要包括:

(1)[D e v i c e L i s t]部分包括产品I D(idVender)和产品ID(idProduct),以及其它配置信息。

(2)[Strings]部分包含操作系统在即插即用阶段在不同的对话框中使用的不同字符串和标识,以及在硬件管理器中标识设备的字符串和标识符。

INF文件的处理过程为:

(1)系统从连接的USB设备中获取设备描述符中获取产品ID(idVender)和产品ID(idProduct)。

(2)系统查找与该硬件ID相符合的INF文件。通过INF文件将设备的一些基本信息保存在系统注册表中。

(3)如果仍然没有找到,则系统提示用户自己安装该USB设备驱动程序。

4.2 基于LabVIEW的采集模块设计与应用

LabVIEW简称LV,是美国NI公司研发的基于图形化编程语言(俗称G语言)的开发环境。LabVIEW程序(简称VI)包括两部分:前面板和流程图。前面板模拟真实仪器面板操作,流程图相当于源代码。流程图采用图形化语言代替了程序源代码编写,它利用人们熟悉的术语,图标和概念进行编写。因此,LabVIEW是一个面向最终用户的工具。使用LV进行研究、设计和开发时,可大大提高工作效率。利用LV可产生能够独立运行的可执行文件。打开设备后选择相应的通道,发送相应命令后,设备的数据接收模块开始实时监听与下位机相连接的USB接口的数据,如果未超时,则组成数据流给数据处理模块,由处理模块进行分析、处理,在前面板中描绘出波形曲线,同时在文本框中显示收到的数据点的采集值。

NI公司也提供了生物医电起步工具包,支持NI数据采集平台实现临床生理信号的采集,也支持MIT-BIH等不同专业数据库文件格式的读取。此工具包可以在脑电图(EEG)、肌电分析(EMG)以及核磁共振(MRI)3D成像等领域中应用。

5 测试方法

限于篇幅,以人体心电信号测试为例,说明测试方法。测量方法为Ⅰ、Ⅱ、Ⅲ导联法,让被检测人员静卧,将电极安装在相应的部位,电极连接方式如图6所示。

图6 Ⅰ、Ⅱ、Ⅲ标准导联法示意图

Ⅰ、Ⅱ、Ⅲ导联法又叫做爱氏标准肢体导联法。第一导联的心电信号是心脏活动时传导到左手和右手上的心电点位差,第二导联是传导到右手和左脚之间的电位差,第三导联是传导到左手和左脚直接的电位差[6]。设心电活动时传导到右手、左手和左脚的心电电位分别为UR、UL和ULF,系统第一导联输入端之间的电位差经过放大、滤波和模数转换后,在PC机上显示采集到的数据并分析、处理。

6 结束语

该系统采用STM32内部12位ADC进行模数转换和内部USB模块进行数据传输,配合外部信号采集与调理电路,并利用LabVIEW的强大信号分析处理功能,实现了人或动物生理信号采集、调理、数据传输和处理及显示等功能。操作简单,通用性强,而且极大的降低了成本,很适合后续功能的开发。

[1]程龙飞,何闻,基于LabVIEW的USB数据传输技术研究[J].机床与液压,2009,37(9):106-108.

[2]侯进振,占涛,毛乐山,基于CH375的智能数据采集卡[J].现代电子技术,2010,33(10):143-147.

[3]杨耀,漆婷,庞小峰,基于USB接口的多通道生理信号采集系统实现[J].仪器仪表与检测技术2005,24(10):51-53.

[4]武利珍,张文超,程春荣,基于STM32的便携式心电图仪设计[J].电子器件,2009,32(5):946-945.

[5]樊荣,韩涛,基于USB CDC的虚拟以太网接口研究及设计[J].计算机与数字工程,2007,35(7):94-97.

[6]徐超,邬志峰,基于STM32的便携式心电信号测量仪的设计[J].装配制造技术,2012,(1):57-59.

猜你喜欢

下位驱动程序端点
非特征端点条件下PM函数的迭代根
不等式求解过程中端点的确定
发射机房监控系统之下位机
计算机硬件设备驱动程序分析
参数型Marcinkiewicz积分算子及其交换子的加权端点估计
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
基丁能虽匹配延拓法LMD端点效应处理
CAN总线并发通信时下位机应用软件设计
基于MPC8280的CPU单元与内部总线驱动程序设计