您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于ARM的嵌入式多参数监护仪计划与实现

发布日期:2011-05-21

        多参数监护仪遍及应用于ICU、CCU、病房、手术室等。如今我国也有自主知识产权的产品,如迈瑞、金科威、金脑人等,但与GE、飞利浦天下先辈产品比较,在监测和谋略、可靠性、及时性、稳固性、信号变异的处理惩罚阐发、长途传输等方面都较掉队[1]。

       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的嵌入式多参数监护仪的计划与实现,并应用于实际丈量,为嵌入式体系在医用监护中的应用提供了一个很故意义的新思路和确切可行的方案。由于该网络监护仪重要面向医院、社区和家庭,具有本钱低、功耗小、数据存储量大、数据处理惩罚速率快、便于长途医疗、能同时实现及时多任务的操纵等各项上风,是当代医疗监护进一步智能化、专业化、小型化、低功耗的生长新方向,困此具有很广阔的市场远景。