当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM的嵌入式多参数监护仪设计与实现

1 引 言

    多参数监护仪广泛应用于ICU、CCU、病房、手术室等。目前我国也有自主知识产权的产品,如迈瑞、金科威、金脑人等,但与GE、飞利浦世界先进产品比较,在监测和计算、可靠性、实时性、稳定性、信号变异的处理分析、远程传输等方面都较落后[1]。嵌入式系统把计算机直接嵌入到应用系统之中,它融合了通信技术和半导体微电子技术,是信息技术IT的最终产品[2]。因此将嵌入式系统,网络等技术应用于医用监护仪领域,能使多参数监护仪顺应现代医用监护仪市场缩小体积,提高数据处理能力,远程医疗等方面的要求。

    本文介绍一种基于ARM的实时监护系统,它将32位RISC结构的ARM内核处理器与实时多任务嵌入式系统相结合,并通过嵌入式TCP/IP协议栈为平台添加网络传输功能,构建一个新型的多参数监护仪系统。

2 系统硬件设计

    医用监护仪具有以下几个方面功能:测量功能、分析功能、报警功能、打印功能、网络通信功能等。六参数模块通过导联端、光手指、袖带获得人体的心电、无创血压、血氧、脉率、呼吸、体温六参数信号,通过串口通信方式与以ARM7为内核的嵌入式处理器相连,数据从串口送到ARM7中 央处理器,通过多任务调度,进行实时数据处理,并在LCD上实时显示各种信号的图形和数值,还可以由外部键盘控制,进行存储和网络发送,并对各种检测信号设置报警线,对超出报警范围的检测情况进行报警。硬件结构图1所示。

多参数监护仪硬件结构

  图1 多参数监护仪硬件结构图

3 开发系统软件设计

3.1 软件开发总体介绍

    利用PC机运行的Hitool forARM开发环境下调试程序:首先运行系统、Memory及I/O端口的初始化程序,随后进入主程序,采用外部中断方式,判断是否有键输入,若有则调用键盘控制子程序进行识别所按下的键,根据键盘的控制执行相应的任务;若无就调用串口读入程序,采集心电、血氧、血压等数据,并判别所采集数据的类型,存入不同地址的SDRAM中,并依次分类进行处理,处理完毕,判断是否超越各自的报警限,若是则调用报警程序和显示程序,若否则直接调用显示程序;这样,各种数据就实时地采集进来,并在LCD上显示测试数值和心电、呼吸波形。其中测试数值按每分钟存储,心电、呼吸波形按键存储,按翻页键可以调出相应的存储波形并进行显示;根据打印和网络命令进行打印和网络命令处理等。程序主要用C语言编写。

3.2 串口的处理

    硬件接口采用标准RS-232C异步串行接口,选用发送 (TXD)、接收(RXD)和地线的三线方式,其它的握手信号直接悬空。要实现六参数模块与S3C44BO之间的串口通信,必须使两者采用相同的数据传输方式,它们通信的数据格式如下;波特率为9600bps, 8位数据位, 1位停止位,无奇偶校验位。

    另外,在I/O端口初始化程序中,定义Uart_Init函数,对串行口各寄存器进行初始化,配置参数时钟和波特率等。在设计中主要进行以下串行口寄存器设置:

UART线性控制寄存器ULCON1=0x3;

UART控制寄存器UCON1=0x245;

UART先进先出控制寄存器UFCON1=0x1;

UART波特率寄存器UBRDTV,根据公式计算出。

    在串口读入程序中,采用了中断方式,来实现双向数据传输,达到实时控制的目的。串口程序数据接收过程为:调用Uart_Getch()函数读入N个字符,以数组的方式放置在SDRAM中,然后进行数据处理。在lib.C程序中部分源代码如下:

  charUart_Getch()

  {…

  while(! (rUTRSTAT1& 0x1)); //Receive data ready

  return rURXH1;

  …}

3. 3 LCD显示

    当有新数据需要显示时, LCD显示模块将新的采样数据写入LCD显示存储器中, S3C44BO芯片所支持的LCD控制器在不需要CPU介入的情况下,通过专用DMA自动地将需要显示的数据从显示存储器传送到LCD显示器中。LCD显示器不断地接收数据,就在LCD上显示监测内容。

3. 3. 1 LCD初始化

    定义Lcd_MonoInit()函数,在LCD的三个控制寄存器中,设置LCD扫描宽度等与硬件时序有关的量:如:使用160×240的黑白单色显示屏, 4-bit单扫描等。在LCD的三个缓冲初始地址寄存器中,主要配置了帧缓冲寄存器BUFFER的起始地址等。

    以上各寄存器基本的配置的源程序如下:

  void Lcd_MonoInit(void) //初始化LCD屏幕

  { //160×240 1bit/1pixelLCD

  #defineMVAL_USED 0

  rLCDCON1=(0) (1<<5) (MVAL_USED<<7) (0x3<<

  8) (0x3<<10) (CLKVAL_MONO<<12);

  //disable, 4B_SNGL_SCAN,WDLY=8clk,WLH=8clk

  rLCDCON2=(LINEVAL) (HOZVAL<<10) (10<<21);

  //LINEBLANK=10(without any calculation)

  rLCDSADDR1= (0x0<<27) (((U32) frameBuffer1>>22)<<

  21 ) M5D((U32)frameBuffer1>>1);

  //monochrome,LCDBANK,LCDBASEU

  rLCDSADDR2=M5D( (((U32)frameBuffer1+(SCR_XSIZE*LCD_

  YSIZE/8))>>1)) (MVAL<<21) (1<<29)

;

  rLCDSADDR3=(LCD_XSIZE/16) ((SCR_XSIZE-LCD_XSIZE) /

  16)<<9);

  }

3. 3. 2 打开LCD

1)在内核中开辟内存空间用于显示内存

    可在显示模块中加入:#define frameBuffer1 0xC400000

2)定义帧缓冲器长度,并对其赋初值设置一个行列与LCD

    高宽相对应的数组pbuffer, pbuffer用于存放发送至显示屏的每帧像点数据,像点数据的多少取决于显示屏的大小; pbuffer="BitsPerPixe"*l Lines* /8=160* 240/8=4800(字节)。

    由于pbuffer被定义为U32,即32位(八个四位)指针,每一个元素对应LCD显示屏上的一个像素点,显示方式采用4-bit单扫描,所以应当循环4800(字节) /4=1200次,实际上对应的单元数为整个160×240的屏幕范围。

  for( i="0", i<1200; i++)

  #(pBuffer[ i])=0x0;

3)数据处理

    LCD的数据处理主要对要显示的数据进行处理(4bit到32bit的转换)。

  temp_data=(Buf[ i* 4+3]<<24)+(Buf[ i* 4+2]<< 16)+(Buf[*i 4+1]<<8)+(Buf[*i 4]);

3. 3. 3 清屏

    清屏对显存的每个单元置零,使屏幕显示清除。以下为清屏的部分源程序:

  Void clrscreen(void)

  { int ;i

   unsigned int* pbuffer;

   pbuffer=(U32* )frameBuffer1;

   for( i="0"; i<1200; i++)

          {

       pbuffer[ i]=0;

         }

    }

3. 3. 4 编制LCD显示函数并向LCD设备写入数据

    定义displayLcd()函数为LCD显示函数,用于往显存中写数据,经过pbuffer送至LCD显示器,并让它循环显示在LCD显示屏上。要在LCD上显示ASCII字符,首先把每个字符转成一个16* 16bit的数组,组成字库(本次实现中使用),然后,选择要显示的字符,从字库中提取字符,经函数调用后,将要显示的字符送至LCD显示器,这样,就在LCD上显示出ASCII字符。

    部分源程序如下:

  void displayLCD(void) //LCD显示函数

  {

       unsigned int* pbuffer, temp_data;

       int ;i

       pbuffer=(U32* )frameBuffer1;

       for( i="0"; i<1200; i++)

       {

    temp_data=(Buf[ i* 4+3]<<24)+(Buf[ i* 4+2]<<

  16)+(Buf[*i 4+1]<<8)+(Buf[*i 4];

           //进行4bit到32bit的数据转换处理

       pbuffer[ i]=~temp_data;

          Delay(10);

          }

     }

    在添加所用的头文件的同时,增加对LCD_Init()函数、dis-playLCD()等函数的调用。

4 网络命令处理

    在硬件设计上采用以太网口,软件上通过实现瘦TCP/IP网络通 信协议,针对嵌入式系统特点对传统的TCP/IP协议栈进行裁减[4],让嵌入式多参数监护仪支持轻量级TCP/IP协议栈而 直接连入Internet。在设计将无实时要求和费时的TCP/IP协议簇的处理放在主程序顺序循环中。网络程序结构采取顺序执行和硬件中断相配合的方式,这种硬件中断是外部时钟中断,中断级别要比非向量模式的FIQ中断级别低,在系统空闲时进行网络数据交互;对网络接口控制芯片采用查询方式,即在其他中断任务的执行间隙处理瘦TCP/IP协议簇,以牺牲响应速度来换取系统可靠性。

    考虑到嵌入式医用监护仪在窄宽带不可靠环境下实现实时监测的要求,决定在网络通信协议的传输层中,选用UDP(用户数据报协议)。

5 结束语

    介绍一种基于ARM的嵌入式多参数监护仪的设计与实现,并应用于实际测量,为嵌入式系统在医用监护中的应用提供了一个很有意义的新思路和切实可行的方案。由于该网络监护仪主要面向医院、社区和家庭,具有成本低、功耗小、数据存储量大、数据处理速度快、便于远程医疗、能同时实现实时多任务的操作等各项优势,是现代医疗监护进一步智能化、专业化、小型化、低功耗的发展新方向,困此具有很广阔的市场前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

成都2022年10月19日 /美通社/ -- 近期,平安养老险积极筹备个人养老金的产品设计和系统开发工作,发展多样化的养老金融产品,推动商业养老保险、个人养老金、专属商业养老保险等产品供给。 搭养老政策东风 ...

关键字: 温度 BSP 东风 大众

广东佛山2022年10月19日 /美通社/ -- 空间是人居生活的基础单元,承载着生存与活动的最基本功能。而对于理想空间的解构意义却在物理性容器之外,体现出人们对于空间和生活深层关系的思考,同时也塑造着人与空间的新型连接...

关键字: 温度 BSP 智能化 进程

上海2022年10月19日 /美通社/ -- 10月17日晚间,安集科技披露业绩预告。今年前三季度,公司预计实现营业收入7.54亿元至8.33亿元,同比增长60.24%至77.03%;归母净利润预计为1.73亿...

关键字: 电子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市经济和信息化局发布2022年度第一批北京市市级企业技术中心创建名单的通知,诺诚健华正式获得"北京市企业技术中心"认定。 北京市企业技...

关键字: BSP ARMA COM 代码

北京2022年10月18日 /美通社/ -- 10月14日,国际数据公司(IDC)发布《2022Q2中国软件定义存储及超融合市场研究报告》,报告显示:2022年上半年浪潮超融合销售额同比增长59.4%,近5倍于...

关键字: IDC BSP 数字化 数据中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都银行集团成立60周年的纪念日。趁着首都银行集团成立60周年与首都银行(中国)在华深耕经营12年的“大日子”,围绕作为外资金融机构对在华战略的构想和业...

关键字: 数字化 BSP 供应链 控制

东京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式会社(NIPPON EXPRESS HOLDINGS, INC.)旗下集团公司上海通运国际物流有限公司(Nipp...

关键字: 温控 精密仪器 半导体制造 BSP

广州2022年10月18日 /美通社/ -- 10月15日,第 132 届中国进出口商品交易会("广交会")于"云端"开幕。本届广交会上高新技术企业云集,展出的智能产品超过140,...

关键字: 中国智造 BSP 手机 CAN

经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括了家居,商业,工业,农业等领域,不仅吸引...

关键字: 嵌入式 物联网 技术

随着IT技术飞速发展,互联网已经进入了“物联网”时代。物联网中需要的大量设备不在依赖人与人之间的交互产生联系,更多通过协议、通信、程序设计等方式连接到一处。即 “物联网”的目的则是让所有的物品都具有计算机的智能但并不以通...

关键字: 嵌入式 物联网 计算机

嵌入式教程

6897 篇文章

关注

发布文章

编辑精选

技术子站

关闭