远程心电监护系统是基于ARM9开发平台.docx

上传人:b****7 文档编号:11432401 上传时间:2023-03-01 格式:DOCX 页数:19 大小:147.71KB
下载 相关 举报
远程心电监护系统是基于ARM9开发平台.docx_第1页
第1页 / 共19页
远程心电监护系统是基于ARM9开发平台.docx_第2页
第2页 / 共19页
远程心电监护系统是基于ARM9开发平台.docx_第3页
第3页 / 共19页
远程心电监护系统是基于ARM9开发平台.docx_第4页
第4页 / 共19页
远程心电监护系统是基于ARM9开发平台.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

远程心电监护系统是基于ARM9开发平台.docx

《远程心电监护系统是基于ARM9开发平台.docx》由会员分享,可在线阅读,更多相关《远程心电监护系统是基于ARM9开发平台.docx(19页珍藏版)》请在冰豆网上搜索。

远程心电监护系统是基于ARM9开发平台.docx

远程心电监护系统是基于ARM9开发平台

于ARM9的

摘要

心脏疾病成为危害人类健康和生命的主要疾病之一,目前心电监护系统为心脏病人诊断和治疗提供了一个有效的手段,尽管已设计出各种心电监护设备,但是由于设备昂贵,系统扩展性和软件系统可裁剪性较差,心电波形辩认的专业性强,监护实际上依然只够少量人在医院环境下进行。

针对这种情况,本文以嵌入式系统为基础,设计出一种基于ARM9的远程心电监护系统,该心电系统具有Web服务器功能。

本课程设计的远程心电监护系统是基于ARM9开发平台进行设计,采用高性能的3C2440。

首先在MINI2440硬件基础上完成心电信号采集电路的设计。

主要包括缓冲处理电路、前级放大电路、高低通滤波电路、隔离电路、主放大电路等。

然后根据所设计的硬件的特点和系统需要通过一定的实验证明,本课题所设计的系统能够较好的实现心电信号的采集、波形显示、处理等功能。

同时在动态网页上可对病人信息查询、心电波形显示、分析及心电数据下载等,为产品进一步研究和开发奠定了基础。

关键词:

心电监护,嵌入式系统,

第1章绪论1

1.1课题研究的意义1

1.2课题研究的目的1

第2章心电监护系统硬件设计2

2.1心电信号的特点2

2.2MINI2440开发平台介绍4

2.3心电信号采集放大电路5

2.3.1缓冲处理5

2.3.2前置放大和滤波6

2.3.3隔离7

2.3.4主放大电路8

第3章嵌入式Linux操作系统的裁剪和移植9

3.1BootLoader实现9

3.1.1BootLoader概述9

3.1.2BootLoader启动过程10

3.4Linux设备驱动的开发10

3.4.1Linux设备驱动的概述10

3.4.2A/D设备驱动设计11

第4章心电采集界面设计13

4.1心电采集与显示14

第5章嵌入式Web服务器的设计15

5.1嵌入式Web服务器概述15

5.2嵌入式Web服务器的移植16

参考文献17

第1章绪论

1.1课题研究的意义

心脏疾病成为危害人类健康的主要疾病之一,据统计全世界死亡人数中有三分之一死于该疾病,近年来我国心血管病的死亡率占人口总死亡率44%[1]。

心血管疾病死亡率高于欧美国家及日本。

因此对心脏疾病的防治和诊断是非常重要。

目前心电监护仪为心脏病人诊断和治疗提供了一个有效的手段。

它是把心脏产生的微弱电流(mv级)接收,放大并记录出心电图的装置。

它可向医护人员提供病人心电信号的重要信息,利用这些信息,临床医生能更好地分析患者的病情,从而采取适当的治疗措施,获得最佳的治疗效果,因此心监护仪的作用越来越受到重视。

1.2课题研究的目的

尽管已设计出各种心电监护设备,但是大多数的心电监护系统仍然存在不足之处。

心电设备昂贵,只有少量的家庭购买;心电波形辩认的专业性强,自动分析的能力低,操作性不高,监护实际上依然只够少量人在医院环境下进行;各种接口为专业医疗设备设计;虽然远程医疗也应用于心电监护设计中,基于Internet网络的远程心电监护系统大多数采用的是客户机/服务器(C/S)的模式,一般由客户机采集心电数据,然后通过网络传输给大型中心服务器,服务器上安装服务器软件,同时,在客户机上安装相应的客户端应用软件,这样才能使客户端得到相应的服务。

成本高、系统结构复杂、开放性低。

针对这些不足,本文设计了一种基于ARM9的远程心电监护系统,该心电监护系统在ARM9开发平台上进行,采用高性能的S3C2440微处理器,引用了嵌入式Linux技术,在心电监护界面上除了对心电波形进行显示,另外还对心率进行了分析,以适用于

更多的人群。

同时该心电监护系统中具备WEB服务器功能,采用了浏览器/服务器(B/S)的模式,用户在任何地方通过浏览器能够访问该心电监护系统,在动态网页上能够对病人的信息进行查询、心电波形的分析以及心电数据的下载,实现了远程医疗。

第2章心电监护系统硬件设计

嵌入式微处理器和嵌入式操作系统为核心的嵌入式技术是最近一个新的技术发展方向。

以ARM公司的32位IP核为基础的ARM嵌入式微处理器,因其高性能、低功耗、低成本、小体积以及完整的产业链支持,成为嵌入式系统设计的理想选择。

本文选用的是广州友善之臂科技有限公司提供的MINI2440开发板,在它的基础上进行研制开发心电系统,MINI2440采用SamsungS3C2440微处理器,系统硬件设计总体框图如

图2.1所示。

MINI2440

开发平台

心电信号

采集放大

 

图2.1系统硬件总体结构

2.1心电信号的特点

心脏在周期性活动中,伴随着规律的周期性变化的心电生理活动。

心脏的心电生理活动可以看作一组电偶,这组电偶的大小、方向在每次心动周期中呈现有规律性的变化,电偶的电流流经人体的各个部位,在人体表面任何一点产生一个相应变化的电位。

将测量电极放置在人体表面的一定部位记录出来的心脏电变化曲线,就是目前临床上常规记录的心电图(ECG)[19]。

心电图是心脏兴奋的发生传播及恢复过程的客观指标,它可记录心脏节律和频率以及电压的高低,用于诊断各种心律失常、心肌病变、心肌梗塞及心肌缺血等,是心血管病最常用的检查手段。

典型的心电波形如图2.2所示。

图2.2典型的心电波形

(1)P波:

P波由心房除极所产生,是每一波组中的第一波,它反映了左、右心房的

除极过程。

前半部分代表右房,后半部分代表左房。

(2)P-R间期:

从p波的起点至QRS波群的起点,代表心房开始除极至心室开始除

极的时间。

(3)QRS波:

典型的QRS波群包括三个紧密相连的波,第一个向下的波称为Q波,

继Q波后的一个高尖的直立波称为R波,R波后向下的波称为S波。

因其紧密相连,且反映了心室电激动过程,故统称为QRS波群。

这个波群反映了左、右两心室的除极过程。

(4)ST段:

自QRS波群的终点至T波起点间的线段,代表心室缓慢复极过程。

(5)Q-T间期:

从QRS波群的起点至T波终点,代表心室除极和复极全过程所需的时间。

(6)T波:

T波位于S-T段之后,它是心室复极所产生的。

(7)U波:

位于T波之后,反映心肌激动后电位与时间的变化。

人体的心电信号主要有以下几个特点:

(1)微弱性

其幅值一般为1mV~4mV。

(2)低频性

频率范围一般为0.05Hz-100HZ,能量主要集中在17Hz附近。

(3)高阻抗性

心电的信号源是人体,人体的内阻较大,因此心电信号的阻抗一般为数十欧到数百千欧。

(4)不稳定性和随机性

人体受外界的影响较大,而且内部器官的相互影响,因此造成了心电信号的不稳定性和随机性。

心电信号除存在上述特点外,在检测心电的信号的同时存在着很大的干扰。

主要有50Hz的工频干扰,电极移动引起基线漂移(一般小于1Hz),肌肉收缩和兴奋所引起的肌电干扰(几百Hz以上)等,所以心电放大电路必须根据以上的特点进行设计,才能得到放大、无干扰的心电信号。

2.2MINI2440开发平台介绍

MINI2440采用高性能的ARM9微处理器以其优化的片上性能,在视频会议、楼宇的对讲系统、网络监控、GPS定位/导航仪、医疗电子设备、多媒体终端产品等应用领域有广泛应用,其主要的硬件配置如下:

(1)CPU处理器

三星S3C2440(ARM920TcorewithMMC,最高主频可达532MHz)。

(2)SDRAM

64MSDRAM,32位数据线,SDRAM时钟频率高达100MHz。

(3)FLASH存储

64MbyteNandFlash,2MNorFlash,已经安装了BIOS。

(4)液晶屏支持(LCDSupport)

集成4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏;支持黑白、4级灰度、级灰度、256色、4096色STN液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率

可以达到1024x768象素;支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024x768象素;引出一个12V电源接口,可以为大尺寸TFT液晶的12VCCFL背光模块(Inverting)供电。

(5)USB端口(USBPort)

1个主USB接口,1个从USB接口。

(6)音频

1路立体声音频输出接口(标准3.5mm接口),1路麦克风接口。

(7)网络

1个100M以太网RJ-45口(采用DM9000网卡)。

(8)SD/MMC卡

1个SD/MMC卡存储接口。

(9)摄像头

引出CPU内部全部摄像头信号引脚。

(10)串口

3个串行口,COM0为RS232DB9接口(亦引出TTL接口),COM2和COM3为2.0mm

间距。

(11)扩展接口

1个34pin2.0mmGPIO接口,1个40pin2.0mm系统总线接口。

(12)实时时钟

板载实时时钟,带有备份锂电池。

(13)Jtag接口

标准JTAG接口(2.0mm间距)。

2.3心电信号采集放大电路

心电信号采集放大电路由缓冲处理,前置放大和滤波,隔离技术、主放大等组成。

2.3.1缓冲处理

心电电极信号首先进入缓冲级,缓冲放大电路可以获得高共模抑制比。

同时为了保护人体的安全问题,在缓冲放大电路中,采用220V的供电心电仪器中限制通过人体的电流一般不能超过10毫安,因此在如图2.3所示的缓冲放大电路图中我们设置R1的阻值为22千欧。

图2.3缓冲放大电路图

2.3.2前置放大和滤波

心电信号电压幅值一般为1mV~4mV[22-23],A/D转换输入信号范围是正负5伏,所以放大倍数大约为1000左右。

电路采用两级放大,来自人体的心电信号源阻抗高,要求放大电路的输入阻抗也必须足够高才能不衰减电极的有用信号。

50Hz交流共模干扰信号必须在前置放大电路中加以抑制,放大倍数定为16。

另外,常见的心电信号的频率范围为0.05Hz~100HZ之间,由C12和R6组成高通滤波器,抑制低于0.05Hz信号的干扰,可得截止频率见公式(2.1)。

f=1/2πR6C12=1/2×3.1415×3×10^6×10^-6=0.05HZ

设计由C26和R9组成的低通滤波器,抑制高于100Hz信号的干扰,可得截止频率见公式(2.2)。

f=1/2πR9C26=100HZ

图2.4前置放大电路图

2.3.3隔离

为了心电前置放大电路不受电源电压的影响,采用电源隔离技术,使得人体与电源电压相隔离,电源隔离电路如图2.5所示,采用了DC/DC电源模块,输入为+5V电压,输出为±12V和+5V电压,其中隔离电压达到1500V,保证人身安全。

图2.5电源隔离

在前置放大电路的隔离中还包含心电信号隔离,在心电信号后续的数字化的A/D转换需要隔离前置级的共地回路(浮地),在电气上将前置级与后续电路隔离。

放大隔离级电路的引入还能有效地消除地线中串入的共模干扰信号,提高共模抑制比,因此采用光电隔离放大电路,电路结构图如图2.6所示。

图2.6光电隔离

2.3.4主放大电路

在前置放大电路心电信号已放大16倍,而心电信号放大需要千倍数左右,心电信号需要进一步放大,采用反相放大电路,如图3-6所示,A=R85/R81,放大倍数为63,

图2.7所示。

图2.7主放大电路

经放大后得到的摸拟信号经过电压偏移后需转换为数字信号才能进一步的分析和处理,本系统S3C2440自带一个10位CMOS的具有8通道摸拟输入的模数转换器,在2.5MHz的A/D转换时钟下,最大的转化速率可达到500KSPS,支持片上采样和保持功能及掉电模式。

第3章嵌入式Linux操作系统的裁剪和移植

在各种嵌入式操作系统中,Linux以其结构清晰、源代码公开、功能强大、又易于移植得到广泛的使用。

本系统使用的Linux内核采用2.6版本的内核,Linux2.6内核在性能、模块支持、可用性、可测量性等方面有大幅度的提高。

一个完整的嵌入式Linux系统主要包括BootLoader(引导程序)、内核和根文件系统三个方面,要搭建适合自己需要的嵌入式Linux系统是一个复杂的过程,除了对Linux内核和目标平台有一定的了解之外,移植技术和经验是非常关键的。

3.1BootLoader实现

3.1.1BootLoader概述

BootLoader就是在操作系统内核运行之前运行的一段小程序。

通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

不同的CPU体系结构一般都有不同的BootLoader,有些BootLoader也支持多种体系结构的CPU。

除了依赖于CPU的体系结构外,BootLoader实际上也依赖于具体硬件的其它配置。

这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU而构建的,要想让运行在一块板子上的BootLoader程序也能运行在另一块板子上,通常也都需要修改BootLoader的源程序。

大多数BootLoader都包含两种不同的操作模式:

"启动加载"模式和"下载"模式。

启动加载(Bootloading)模式:

这种模式也称为"自主"(Autonomous)模式。

也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

这种模式是BootLoader的正常工作模式。

下载(Downloading)模式:

在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件,将它们直接放在内存运行或是烧入flash类固态存储设备中。

BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。

工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。

3.1.2BootLoader启动过程

从操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行。

大多数BootLoader都分为stage1和stage2两大部分。

依赖于CPU体系结构的代码,比如设备初始化代码等,一般都放在stage1中,通常都用汇编语言来实现,以达到短小精悍的目的。

而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。

9

3.4Linux设备驱动的开发

3.4.1Linux设备驱动的概述

设备驱动程序是Linux内核的重要组成部分,在嵌入式linux系统中,由于内核的保护机制,用户一般不能直接访问硬件,而是通过调用驱动程序来实现对硬件的控制。

Linux抽象了对硬件的处理,所有的硬件设备都可以像普通文件一样来看待:

它们可以使用和操作文件相同的、标准的系统调用接口来完成打开、关闭、读写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。

Linux系统中的所有硬件设备都使用一个特殊的设备文件来表示,例如,系统中的第一个IDE硬盘使用/dev/hda表示。

每个设备文件对应有两个设备号:

一个是主设备号,标识该设备的种类,也标识了该设备所使用的驱动程序;另一个是次设备号,标识使用同一设备驱动程序的不同硬件设备。

在Linux中,将各种设备大致分成3种基本类型:

字符设备、块设备及网络设备。

字符设备采用字符流方式访问的设备,如字符终端、串口,一般只能按顺序访问,但也可以前后移动访问指针。

对应的字符设备驱动的接口是标准的文件系统调用接口。

块设基于ARM9的远程心电监护系统研究与设计

备是采用数据块方式访问的设备,如磁盘等。

块设备的存取是通过缓冲方式来进行的,并且可以进行随机访问,即不管块位于设备中何处都可以对其进行读写。

对应的块设备除了和字符设备驱动一样的文件系统调用接口之外,还提供了专门的面向块设备的接口,但这个接口对用户来说是不可见的。

由于块设备通常都提供文件系统支持,因此常用的设备访问方式都是通过文件来进行。

网络设备是采用数据包传输方式访问的设备。

和前两者不同,由于不是面向流的设备,因此将网络设备映射为文件系统中的设备文件就比较Linux采用的方法是给它们分配一个惟一的名字。

同时,内核与网络设备驱动间的通信安全不同于字符设备以及块设备驱动程序之间的通信,而是采用了一套和数据包传输相关的函数。

Linux内核内部通过file结构识别设备,通过file_operations数据结构提供文件系统的入口点函数,file_operations定义在于文件中。

该结构的每一个成员的名字都对应着一个系统调用。

在用户进程利用系统调用设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应的设备的驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。

从某种角度来说,编写设备驱动程序就是为具体硬件的file_operations结构编写各个函数。

3.4.2A/D设备驱动设计

本开发平台中提供了液晶显示器、网卡、串口、USB等的驱动,但没有AD设备驱

动,其主要开发步骤如下[35-37]:

(1)AD初始化模块

AD初始化模块主要功能是向内核注册设备和申请中断。

int_inits3c2440_adc_init(void)A初始化函通过register_chrdev_region(devno,1,"s3c2440adc")向内核注册一个字符驱动设备,其中devno为注册的设备号,1为设备个数。

另外我们可以由alloc_chrdev_region(&devno,0,1,"s3c2440adc")函数动态分配一个设备号:

卸载设备用unregister_chrdev_region(devno,1)函数表示。

同时在注册驱动时,通过以下函数向系统申请中断:

equest_irq(IRQ_ADC,adcdone_int_handler,SA_INTERRUPT,DEVICE_NAME,

NULL),其中adcdone_int_handler为中断处理函数。

(2)定义file_operations回调函数

staticstructfile_operationss3c2440adc_fops={owner:

THIS_MODULE,

open:

s3c2440adc_open,

read:

s3c2440adc_read,write:

s3c2440adc_write,release:

s3c2440adc_release,};

(3)编写file_operations中定义的调用函数,可以对设备进行打开和读写操作。

staticints3c2440adc_open(structinode*inode,structfile*filp)

staticssize_ts3c2440adc_read(structfile*filp,char*buffer,size_tcount,loff_t

*ppos)

staticssize_ts3c2440adc_write(structfile*file,constchar*buffer,size_tcount,loff_t

*ppos)

staticints3c2440adc_release(structinode*inode,structfile*filp)

s3c2440adc_read()函数实现将ADC的数据转换并读取,操作系统内核和驱动程序在内核空间中运行,而用户程序在用户空间中运行,因此存在着内核空间与用户空间的数据交换,copy_to_user函数实现将内核空间的数据拷贝到用户空间中。

同理在3c2440adc_wirte()函数中调用copy_from_user实现将用户空间的数据拷贝到内核空间。

(4)中断处理模块

S3c2440转换后,将产生一个中断信号,中断调用函数如下:

wake_up(&s3c2440adc_dev.wait);

第4章心电采集界面设计

MiniGUI中有三种窗口类型:

主窗口、对话框和控件窗口,心电采集界面是采用对话框进行设计,对话框编程是一种快速构建用户界面的技术,通常,我们编写简单的图形用户界面时,可以通过调用CreateWindow函数直接创建所有需要的子窗口,即控件。

但在图形用户界面比较复杂的情况下,每建立一个控件就调用一次CreateWindow函数,并传递许多复杂参数的方法很不可取。

主要原因之一,就是程序代码和用来建立控件的数据混在一起,不利于维护。

为此MiniGUI提供了一种基于模板的机制,利用CTRLDATA和DLGTEMPLATE两个结构体来表示,结构体CTRLDATA用来定义控件,DLGTEMPLATE用来定义对话框本身。

利用这两个结构体模板,用户可以根据需要在程序中定义自己的对话框和控件。

对话框定义如下:

staticDLGTEMPLATEDlgInitProgress=

{

WS_BORDER|WS_CAPTION,

WS_EX_NONE,

0,0,240,320,

"欢迎使用心电信号采集系统",

0,0,

10,NULL,

0

};

心电采集界面主要有心电数据采集与显示、存储、分析等功能,采用多线程编程,为采集、显示、存储、分析各建立一个专门的线程。

采用多线程进行数据采集可以有效地加快程序的反应速度、增加执行的效率。

在MiniGUI中,使用消息驱动作为应用程序的创建构架。

在消息驱动的应用程序中,

计算机外设发生的事件,例如键盘键的敲击、鼠标键的按击等,都由支持系统收集,将其以事先的约定格式翻译为特定的消息。

应用程序一般包含有自己的消息队列,系统将消息发送到应用程序的消息队列中。

应用程序可以建立一个循环,在这个循环中读取消息并处理基于ARM9的远程心电监护系统研究与设计消息,直到特定的消息传来为止。

这样的循环称为消

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1