一、绪论
心血管病症是目前对人类害处最大的一种病症,而心电图是检测、诊断和防治该类病症的主要手段和根据。因为传统的基于PC机平台的心电监护仪,价位高昂,容积庞大,不易于联通且主要集中在大诊所,而未能实时监护病人的病况,给大夫和患者带来了很大的不便。近些年来,随着嵌入式和网路通信技术的急速发展,我们研发出一种基于ARM7处理器的新型嵌入式心电监护仪,它采用Samsung公司的一款ARM7TDMI核的RISC的32位高速处理器S3C44B0X,具有成本低、体积小、可靠性高、操作简单等优点,适用于个人、中小诊所和社区医疗单位,为家庭保健(HHC)和远程医疗(Telemedicine)等新兴的医疗途径提供良好的帮助与支持。
二、系统的工作原理
图一新型嵌入式心电监护仪的系统结构框图
心联通号通过专用电极从人的左右臂采集到后,送入讯号调养电路,先经过后置放大器初步放大,经联发科混频滤除直流讯号及低频基线干扰后,由后级放大器放大,再经混频器进一步滤除50HZ的工频干扰,经低通混频器后得到符合要求的心联通号,由模拟讯号输入端送入ADC,进列宽精度的A/D转换。为了更好的抑制干扰讯号和避免导联松动及开裂,我们在电路中还引入了手臂驱动电路和导联开裂测量电路。系统控制核心采用Samsung公司的S3C44BOX,液晶显示屏(LCD)构建良好的人机交互界面,采集到的讯号可以通过LCD实时显示和回放,数据通过因特网基于TCP/IP(传输控制合同、网际合同)次序可靠地传输数据到心电监护中心,为医护人员及时确切的确诊提供参考。嵌入式实时操作系统采用现今流行的uClinx,管理协调各模块工作,为系统可靠的运行提供保证。
三、系统硬件模块设计
3.1、信号调养电路
讯号调养电路主要包括:放大器、带通混频器、陷波器等。
图二心电后置放大电路
人体心联通号属于强噪音背景下的低频微弱讯号,通常只有0.05-5mV,频谱范围为:0.05-100HZ,心联通号正常输出时其幅值约为1mV,而A/D转换器的输入电平要求抵达1V左右,即心电放大倍数约为1000倍,因为肌电干扰可能导致后置放大器静态工作点的偏斜,甚至截止饱和,所以后置放大器的增益不能太大。我们选用AD620仪表放大器作为系统后置放大器,它具有低噪音、低飘移、高纹波抑制比、高输入阻抗等特性。它的增益通过1脚和8脚的阻值Rg来调节,可达1-100倍,估算公式为:G=49.4/Rg+1。我设计中级放大倍数在七级左右,选用精度为0.01%,电阻为8.25的精密线绕内阻,后级选用TL064将讯号放大到A/D转换器的输入电平要求。
图三心电后级放大及混频电路
为抑制直流甩尾和放大器通带外的低频噪音,设计一个RC骁龙混频器;因心联通号的频度在100HZ以下,为清除高频讯号和的工频干扰,还设计了低通混频和带阻混频器。
为避免导联松动和开裂,设计导联测量电路,电极开裂时,比较器的输出电平由正常的高电平变为低电平,形成报案讯号,提醒病人检测导联。手臂驱动电路linux系统命令,人体串扰电流测量出后,经倒相放大反馈到人的肩膀上,而没有直接与放大器的地相联,这样人体的位移电压不流到地,而是流到集电极的输出端,对AD620减少了串扰电流的拾取。
3.2、嵌入式处理器及外围电路
S3C44B0X是Samsung公司为手持设备和通常类型的应用提供了高性价比和高性能的微处理器解决方案。CPU内核采用ARM公司设计的16/32位ARMTDMIRISC处理器(66HZ),内核工作电流为2.5V,带有8KB的高速缓存,外部储存控制器8个bank,共256MB,8通道10位ADC和支持彩色/黑白显示LCD控制器,具有普通、慢速、空闲和停止帧率控制模式,精简出众的全静态设计适宜于低成本和帧率敏感的设计。
3.2.1、A/D转换
对心联通号的采用精度的考虑主要是出自于对ST段异常剖析处理的要求,ST段电平变化为0.05mV早已得到公认,因而取样精度起码为0.025mV。依据日本肾脏学会AHA标准和Nyquist取样定理,当讯号取样频度等于或小于讯号最高频率的2倍时,就可以从抽样后的讯号中不失真的还原出原讯号。ECG频度范围为0.05-100HZ,我们取取样频度为200HZ,即取样周期为5ms.S3C44B0X内部有一个逐次迫近型8路模拟讯号输入的10位ADC北京linux培训,输入满刻度电流为2.5V,能区分下来的输入电流变化的最小值为2.5V/210=2.5mVlinux内核源代码情景分析 26,心电采集放大倍数约为1000倍,输入端的最小码率约为2.5mV/1000=0.0025mV,故完全满足系统采用要求。
3.2.2、系统程序储存器FlashROM和SDRM扩充
S3C44B0X自身不具有ROM,因而必须外接ROM元件来储存掉电后仍须要保存的程序代码和数据。我们采用了SST公司推出的容量为1MB×16的CMOS多用途FlashROM,它具有可靠性好、功耗低、读取速率快等优点。系统复位后,首先从0X00000000地址处开始执行,系统启动代码应当借此地址开始储存,所以Flash映射在处理器的Bank0区域内。
采用Linksmart公司的一种容量为8MB的SDRML43L16064作为系统程序的运行空间、数据区和堆栈区,供系统快速读写。它的储存形式为4Bank×1MB×16,采用多Bank和管线结构,具有手动刷新、低帧率和掉电模式。其储存空间映射在S3C44B0X的Bank6上,地址范围为:0XC000000H-0XCFFFFFFH。
3.2.3、液晶显示LCD和按键模块
为了使用户就能对采集到的心联通号有一个直观的印象和进行常识性的观察,我们采用了EPSON公司的EG1147型FSTN单色液晶显示模,对时间、波形、心电参数和系统菜单进行显示,同时配合按钮进行仪器控制和设定。它的显示器点阵为240×320,采用EL背光源,自带驱动器,通过对S3C44B0X外置LCD控制器编程,将定位在储存器的显示缓冲器内的图象数据传送给外部LCD的驱动器中,PC口和PD口作为LCD驱动插口,设置PC口工作在第三功能状态,PD口工作在第二功能状态。
3.2.4、以太网模块设计
S3C44B0X没有集成网路插口控制器NIC(NetworkInterfaceController),因而我们为系统扩充了一个REALTECK公司的RTL8019AS控制器,它与NE2000兼容linux内核源代码情景分析 26,软件移植好,插口电路简单。RTL8019AS工作原理:驱动程序把要发送的数据根据指定格式写入芯片并启动发送命令即可。反之,芯片从数学通道上收到讯号会直接按照以太网合同把她们转化成相应格式的数据,并发出中断,恳请CPU读取数据。
四、系统软件设计
软件设计主要包括嵌入式操作系统uClinux在S3C44B0X上的移植,心电数据的采集和储存,基于S3C44B0X的嵌入式GUI的实现,网路设备驱动程序开发等。
4.1、嵌入式uClinux操作系统在S3C44B0X上的移植
uClinux是专门针对无MMU(MemoryManagementUnit显存管理单元)的处理器而设计的一种免费开放源代码的操作系统。支持多任务,采取模块化设计。系统移植可分为bootloader和内核的移植两大部份。
Bootloader从本质上讲它不属于系统内核,在CPU上电启动后即开始运行,成立初始化环境和引导内核。这部份代码用汇编语言编撰,主要完成硬件初始化,对系统的储存映射(memorymap)进行初始化设置等操作,同时改变PC值,致使CPU开始从SDRM执行操作系统的内核。
内核移植时首先RedHatLinux环境下下载源代码文件包构建交叉编译环境,接着步入uClinux-dist文件夹进行内核配置,系统配置主要由三部份组成:Makefile、配置文件(config.in)和配置工具(在/script目录下)。运行makemenuconfig命令,会现顶楼菜单,选择硬件系统、内核版本和C库的选择,我们在这儿vendors选Samsung的S3C44B0X,内核版本为Linux-2.4-x,C库选uClibc。接着要更改源代码,对应于各个硬件的子目录中,比如在uClinux-dist/linux-2.4-x/drivers/更改或降低驱动程序;保存设置退出后运行再执行makedep和makelib_only命令,生成C库;运行makeuser_only生成应用程序;接着运行makeromfs和makeimage,生成rom文件系统,拷贝内核文件到uClinux-dist/images中;最后运行make,生成可供嵌入式系统运行的内核文件,这时可以在uClinux-dist/images中出现三个文件:含“rom”是压缩内核,含“ram”是直接运行的内核,romfs.img是uClinux的文件系统。“ram”和“rom”文件可以通过超级终端从PC并口下载到嵌入式系统的显存中直接运行,这时超级终端上也将显示uClinux的启动信息。
4.2、基于S3C44B0X的嵌入式GUI的实现
屏幕驱动的程序设计主要是PSD(PointertoScreenDevice)的结构表针,表针所指向的结构中记录了有关的一切属性,依据显示属性判定选择哪个子函数来提供有关的显示函数。图形引擎调用PSD完成圆形,方形等画图函数,这种函数调用底层的屏幕驱动基本画图函数来完成图形显示。
4.3、RTL8019AS驱动程序在uClinux下的实现
在uClinux中,网路插口被看作是一个发送和接收数据包的实体,用一个net_device的数据结构表示,在数据结构中定义对网路插口的各类操作。程序我们是在uClinux网路驱动文件的基础上更改而成,主要更改在/drivers/net下的两个文件:ne.c和8390.c,包括芯片的初始化、收包、网络注册等大部份工作。内核在初始化时会手动调用函数ne_probe(),读取RTL8019AS标示寄存器,测量设备是否存在以决定是否启动驱动程序,配置和初始化硬件,之后初始化net_device结构中的变量,再调用Rtl8019as_init()对RTL8019AS做寄存器的相关设置,最后按照starp的值来启动和关掉RTL8019AS。
五、结束语
针对心联通号ECG非常微弱和极易遭到外界干扰的特性,本文的创新点为采用具有低飘移、共模抑制比的仪表放大器AD620对讯号进行中级放大,并设计上臂驱动电路以提高讯号的抗干扰能力;LCD的引入给人直观的印象和常识性的判定;采集到的数据可通过以太网实时传输到远程数据中心,供专家剖析和确诊;嵌入式uClinux的引入保证了系统稳定、可靠的运行;大型化的设计,更有利于病人的携带。随着心血管疾患的发病率不断地逐年上升,这些便携式心电监护仪具有很高的应用价值和良好的市场前景。
参考文献:
[1]张华和卫星徐栋君陈相朝基于S3C44B0X的便携式心电检测仪的研发2006
[2]杨崎刘大茂一种用于心联通号采集插口的调养方式南京学院学报2003
[3]唐鸿华,罗贵娥,吕扬生.基于S3C44B0X的智能仪表以太网插口设计.电子质量.2004.6
[4]张州基于ARM7的便携式心电监护仪及心电剖析的研究四川工业学院2005
[5]唐怀武基于ARM处理器的仪器网路化应用与研究四川学院2005
[6]ANALOGDEVICESINC.AD620DATASHEETS.2005
[7]毛德操胡希明Linux内核源代码情境剖析四川学院出版社
[8]吴旭移植uClinux到嵌入式系统的方式有线电视技术2005.14
[9]杨亮杨宜民陈波基于uClinux平台的程序设计《微计算机信息》2004