心电图(ECG)是心脏疾病诊断的重要手段。常规心电图是病人在静卧情况下由医院的心电图仪记录的短时间心电活动,由于心脏病发作带有很大的偶然性和突发性,所以在非发作期做常规心电图检查获取疾病信息的几率很低。因此,将心电监护从病床边、医院内扩展到家中,实现实时远程监护具有重要的现实意义。
互联网尤其是无线网络的迅速普及促使嵌入式技术应用的条件日趋成熟,此外,心电监护对心脏病诊断的重要性也使得远程监护也具有现实的可能性。
本文主要研究并设计了一套实用的便携式移动心电监护系统。通过该系统可以随时随地将患者的心电信号通过GPRS网络无线发送到设在医院的PC机上,或者将心电数据先存储在本系统中,然后再通过USB实现高速回放。
一、系统的总体设计
本文所设计的便携式移动心电监护系统由心电监护仪、通信网络和监护中心三部分组成(如图1所示)。其工作过程如下:
图1:便携式心电监护系统总体框图
心电监护仪由患者随身携带,通过粘贴式电极可随时采集用户的心电数据,并进行放大、滤波、A/D转换,然后存储到串行闪存中。当存储一定时间的心电数据后,可以通过GPRS无线上网,利用无线网络将数据传送给位于监护中心的上位机。也可通过USB直接连接到上位机,进行本地高速回放。
本文将重点介绍心电监护仪的设计。由于是便携式设备,所以设计时必须考虑尽量降低功耗、体积和成本。经过反复地分析比较,最终决定采用Z-World公司的工业级控制芯片Rabbit3000微处理器作为心电监护仪的主芯片。
尽管Rabbit3000是8位微处理器,但其内存空间可达1M,主频可达22M。它具有丰富的接口资源,共有40条并行I/O口线(与串行口共用)。此外,该器件的功耗非常低,处理器时钟可由32.768KHz振荡器驱动,并将主振荡器断电。此时电流约为100μA,而处理器仍能保持每秒10,000条指令的执行速度。
二、系统硬件设计
在进行总体硬件设计时,以Rabbit3000高性能微处理器为核心,利用外部接口扩展了512K的并行Flash和512K的SRAM,存储空间达到 1M,并扩展了USB接口。利用串行接口扩展了串行Flash、A/D转换和无线模块MC35。以下重点介绍无线模块和USB模块的硬件设计。
1. 无线模块MC35硬件设计
无线模块负责完成心电数据的无线传送。为实现此功能,本系统采用了西门子公司的MC35模块。这是西门子公司首款支持GPRS的GSM/GPRS模块,体积小巧,易于集成到便携式终端中。通过串行口连接,使用AT命令对该模块进行控制和数据传送。
西门子公司的MC35模块具有一个40脚的零插入力连接器,该连接器中提供了串行接口、音频接口、SIM接口、状态引脚、电源接口等接口,通过这些接口与 SIM卡座、天线以及主控制器相连。MC35的串行接口TXD0和RXD0与Rabbit3000的串口B,即引脚TXB和RXB(PC4和PC5)相连,以实现与MC35之间的通信。MC35的IGT引脚为其启动引脚,需要开漏极驱动器驱动。而Rabbit3000的端口E具有很强的驱动能力,因此选用PE5作为MC35的启动控制线。在MC35的电源接口中有电源输入引脚、电源输出引脚和充电引脚,其中充电引脚可用来给电池充电。本系统采用电池供电或外部充电。如图2所示。
设计时需注意的两点是:本系统使用电池供电,由于MC35在上行传输需提供2A的峰值电流,这会引起电压突然下降,因此设计电路时要加足够大的电容,以防电压突然下降;在SIM卡电路设计时,需要注意电磁兼容性的问题,否则会影响MC35的通信效果,甚至导致MC35无法正常工作。
图2:MC35模块硬件连接图
2. USB模块硬件设计
USB模块负责完成心电数据的本地高速回放,它提供了另一种数据传输手段。通常的串口RS-232只是利用一条线进行数据传输,而USB传输是利用D+和 D-线上的差分信号,与主机进行数据的传输,充分保证了数据传输的可靠性。本系统采用恩智浦公司的PDIUSBD12实现USB传输。
PDIUSBD12(以下简称D12)是恩智浦公司的一款性价比很高的USB芯片,完全符合USB1.l版的规范。是在USB1.1协议设备端使用最多的芯片之一,是一种纯粹的USB接口芯片,需要外部微处理器控制。
本系统利用Rabbit3000微处理器控制USB芯片D12来完成USB传输,此时D12就是单片机的一个外设。D12与Rabbit3000之间的数据传输是通过8位数据线来实现的,即D12的并口数据线D0-D7与Rabbit3000的数据线D0-D7直接相连。
D12的INT_N引脚与Rabbit3000复用引脚INT0A相连,作为Rabbit3000的外部中断输入。当D12需要进行操作时,就利用 INT_N引脚发出一个中断请求,Rabbit3000立即响应中断,对其进行操作。D12的RD_N和WR_N分别与Rabbit3000的IORD和 IOWR相连,以控制数据传输的方向。D12的RESET_N与Rabbit3000的复用引脚PE4相连,Rabbit3000可以利用这个引脚向 D12发出一个低电平,RESET_N被置为低电平后,D12便自动复位了。D12的CS_N与Rabbit3000的复用引脚PE7相连,可以通过这个引脚来控制片选。如图3所示。
图3:PDIUSBD12模块硬件连接图
D12有两种数据总线方式:多路地址/数据总线方式和单地址数据总线方式。本系统采用单地址数据总线方式,将D12的ALE接地,A0与 Rabbit3000的地址总线A0相连,在片选信号有效的前提下(即PE7=0),当A0=1时,CPU给D12发命令;当A0=0时,CPU向D12 写数据或从D12读数据。因此,地址0xE001为发送命令地址,地址0xE000为读写数据地址。
三、系统软件设计
软件设计借鉴了软件工程的设计思想。采用了分层和模块化的设计思路,为代码的组织、维护和升级都提供了便利。而且,即使以后更换硬件系统平台,也能够保证大部分代码可重用。软件总体结构如图4所示。下面重点介绍无线模块和USB模块的软件设计。
1. 无线模块软件设计
无线模块MC35与Rabbit3000的串口B相连,并通过串口向MC35发送AT指令,进行拨号、设置等操作。
MC35与网关的通信协议为PPP协议(Point-to-Point Protocol),PPP协议是一种基于TCP/IP协议栈的数据链路层协议,是为在两个对等实体间传输数据包,建立简单连接而设计的,主要用于广域网的连接,但在局域网的拨号连接中同样可以采用。MC35本身不支持PPP协议,要通过MC35拨号上网必须编写程序实现PPP协议,同时还要实现 TCP/IP协议。
开机后首先初始化MC35模块,这里要注意的是初始化MC35模块时,需要给IGT引脚一个低电平,并保持120~140ms,才能完成初始化操作。然后启动MC35并登陆移动梦网网关,建立与服务提供商的连接。
登陆成功后,MC35具有两种工作状态:数据传输状态和空闲状态。MC35在空闲状态下的电流一般为15mA,而且在空闲状态下,MC35还支持多种休眠模式。为降低功耗,本系统启用了MC35的休眠功能,设置为休眠模式7。在该休眠模式下,电流可以降到3mA左右。
图4:心电监护系统软件总体结构
2. USB模块软件设计
USB接口对于使用者来说十分简单方便,但从开发者角度来看,最大的缺点就是协议的复杂性增加了,因此也就导致了USB设计的复杂性。USB软件设计包括三个方面:固件(firmware)设计、驱动程序设计和主机端应用程序的设计。
a. 固件设计
固件是固化在单片机中的程序代码,可采用汇编语言或C语言设计。它运行在微处理器上,用来响应主机的请求。即它与USB控制器一起完成枚举过程和主机通信。USB协议规定任何传输过程都是由主机端发起并控制的,在枚举过程中,主机通过USB控制器的端点0的默认管道建立控制传输过程,D12响应主机的要求,主要是发送特定的描述符(如设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符和厂商描述符)给主机。主机从获得的描述符来了解该设备的配置和能力,并完成对USB设备的配置。枚举过程结束后,主机就可以与D12进行数据传输了。
本系统的固件编程采用标准C语言来编写,设计固件程序时需要注意的是:D12的中断输出为电平触发,Rabbit3000的中断为上升沿或下降沿触发。在设计程序时,使用下降沿加延时,可使低电平保持一段时间,从而达到同样的效果。
b. 驱动程序设计
在Windows系统下,与USB外设的任何通信都必须通过设备驱动,设备驱动使应用程序访问硬件设备成为可能。USB驱动程序的编写与硬件相关,属于核心模式。微软的DDK在这方面提供了较为详细的说明。
c. 应用程序的设计
本系统采用VB编写上位机应用程序。它主要负责实现利用USB接口从心电监护仪中读取心电数据,并把心电数据保存到数据库中,同时在PC机屏幕上绘制心电波形。
四、本文小结
本文所研制的便携式移动心电监护仪,能够在计算机屏幕上准确地描绘出心电波形,经中国医科大学附属二院的医生认定,可作为临床诊断依据;本系统实用性强,且体积小、经济方便。患者可随时随地对心脏进行实时监护,而不受时间和空间限制;本系统所具有的无线传输功能,可以实时地把心电数据传送给医院供医生诊断,极大地提高了急救效率。