技術頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術頻道 > 技術百科 > 基于ARM的嵌入式多參數(shù)監(jiān)護儀設計與實現(xiàn)

基于ARM的嵌入式多參數(shù)監(jiān)護儀設計與實現(xiàn)

時間:2007-12-28 09:52:00來源:caojing

導語:?本文介紹一種基于ARM的實時監(jiān)護系統(tǒng),它將32位RISC結構的ARM內(nèi)核處理器與實時多任務嵌入式系統(tǒng)相結合。
1 引言 多參數(shù)監(jiān)護儀廣泛應用于ICU、CCU、病房、手術室等。目前我國也有自主知識產(chǎn)權的產(chǎn)品,如邁瑞、金科威、金腦人等,但與GE、飛利浦世界先進產(chǎn)品比較,在監(jiān)測和計算、可靠性、實時性、穩(wěn)定性、信號變異的處理分析、遠程傳輸?shù)确矫娑驾^落后。嵌入式系統(tǒng)把計算機直接嵌入到應用系統(tǒng)之中,它融合了通信技術和半導體微電子技術,是信息技術IT的最終產(chǎn)品。因此將嵌入式系統(tǒng),網(wǎng)絡等技術應用于醫(yī)用監(jiān)護儀領域,能使多參數(shù)監(jiān)護儀順應現(xiàn)代醫(yī)用監(jiān)護儀市場縮小體積,提高數(shù)據(jù)處理能力,遠程醫(yī)療等方面的要求。 本文介紹一種基于ARM的實時監(jiān)護系統(tǒng),它將32位RISC結構的ARM內(nèi)核處理器與實時多任務嵌入式系統(tǒng)相結合,并通過嵌入式TCP/IP協(xié)議棧為平臺添加網(wǎng)絡傳輸功能,構建一個新型的多參數(shù)監(jiān)護儀系統(tǒng)。 2 系統(tǒng)硬件設計 醫(yī)用監(jiān)護儀具有以下幾個方面功能:測量功能、分析功能、報警功能、打印功能、網(wǎng)絡通信功能等。六參數(shù)模塊通過導聯(lián)端、光手指、袖帶獲得人體的心電、無創(chuàng)血壓、血氧、脈率、呼吸、體溫六參數(shù)信號,通過串口通信方式與以ARM7為內(nèi)核的嵌入式處理器相連,數(shù)據(jù)從串口送到ARM7中央處理器,通過多任務調度,進行實時數(shù)據(jù)處理,并在LCD上實時顯示各種信號的圖形和數(shù)值,還可以由外部鍵盤控制,進行存儲和網(wǎng)絡發(fā)送,并對各種檢測信號設置報警線,對超出報警范圍的檢測情況進行報警。硬件結構圖1所示。
圖1 多參數(shù)監(jiān)護儀硬件結構圖
3 開發(fā)系統(tǒng)軟件設計 3.1 軟件開發(fā)總體介紹 利用PC機運行的Hitool forARM開發(fā)環(huán)境下調試程序:首先運行系統(tǒng)、Memory及I/O端口的初始化程序,隨后進入主程序,采用外部中斷方式,判斷是否有鍵輸入,若有則調用鍵盤控制子程序進行識別所按下的鍵,根據(jù)鍵盤的控制執(zhí)行相應的任務;若無就調用串口讀入程序,采集心電、血氧、血壓等數(shù)據(jù),并判別所采集數(shù)據(jù)的類型,存入不同地址的SDRAM中,并依次分類進行處理,處理完畢,判斷是否超越各自的報警限,若是則調用報警程序和顯示程序,若否則直接調用顯示程序;這樣,各種數(shù)據(jù)就實時地采集進來,并在LCD上顯示測試數(shù)值和心電、呼吸波形。其中測試數(shù)值按每分鐘存儲,心電、呼吸波形按鍵存儲,按翻頁鍵可以調出相應的存儲波形并進行顯示;根據(jù)打印和網(wǎng)絡命令進行打印和網(wǎng)絡命令處理等。程序主要用C語言編寫。 3.2 串口的處理 硬件接口采用標準RS-232C異步串行接口,選用發(fā)送 (TXD)、接收(RXD)和地線的三線方式,其它的握手信號直接懸空。要實現(xiàn)六參數(shù)模塊與S3C44BO之間的串口通信,必須使兩者采用相同的數(shù)據(jù)傳輸方式,它們通信的數(shù)據(jù)格式如下;波特率為9600bps, 8位數(shù)據(jù)位, 1位停止位,無奇偶校驗位。 另外,在I/O端口初始化程序中,定義Uart_Init函數(shù),對串行口各寄存器進行初始化,配置參數(shù)時鐘和波特率等。在設計中主要進行以下串行口寄存器設置: UART線性控制寄存器ULCON1=0x3; UART控制寄存器UCON1=0x245; UART先進先出控制寄存器UFCON1=0x1; UART波特率寄存器UBRDTV,根據(jù)公式計算出。 在串口讀入程序中,采用了中斷方式,來實現(xiàn)雙向數(shù)據(jù)傳輸,達到實時控制的目的。串口程序數(shù)據(jù)接收過程為:調用Uart_Getch()函數(shù)讀入N個字符,以數(shù)組的方式放置在SDRAM中,然后進行數(shù)據(jù)處理。在lib.C程序中部分源代碼如下: charUart_Getch() {… while(! (rUTRSTAT1& 0x1)); //Receive data ready return rURXH1; …} 3. 3 LCD顯示 當有新數(shù)據(jù)需要顯示時, LCD顯示模塊將新的采樣數(shù)據(jù)寫入LCD顯示存儲器中, S3C44BO芯片所支持的LCD控制器在不需要CPU介入的情況下,通過專用DMA自動地將需要顯示的數(shù)據(jù)從顯示存儲器傳送到LCD顯示器中。LCD顯示器不斷地接收數(shù)據(jù),就在LCD上顯示監(jiān)測內(nèi)容。 3. 3. 1 LCD初始化 定義Lcd_MonoInit()函數(shù),在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)在內(nèi)核中開辟內(nèi)存空間用于顯示內(nèi)存 可在顯示模塊中加入:#define frameBuffer1 0xC400000 2)定義幀緩沖器長度,并對其賦初值設置一個行列與LCD 高寬相對應的數(shù)組pbuffer, pbuffer用于存放發(fā)送至顯示屏的每幀像點數(shù)據(jù),像點數(shù)據(jù)的多少取決于顯示屏的大小; pbuffer="BitsPerPixe"*l Lines* /8=160* 240/8=4800(字節(jié))。 由于pbuffer被定義為U32,即32位(八個四位)指針,每一個元素對應LCD顯示屏上的一個像素點,顯示方式采用4-bit單掃描,所以應當循環(huán)4800(字節(jié)) /4=1200次,實際上對應的單元數(shù)為整個160×240的屏幕范圍。 for( i="0", i<1200; i++) #(pBuffer[ i])=0x0; 3)數(shù)據(jù)處理 LCD的數(shù)據(jù)處理主要對要顯示的數(shù)據(jù)進行處理(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顯示函數(shù)并向LCD設備寫入數(shù)據(jù) 定義displayLcd()函數(shù)為LCD顯示函數(shù),用于往顯存中寫數(shù)據(jù),經(jīng)過pbuffer送至LCD顯示器,并讓它循環(huán)顯示在LCD顯示屏上。要在LCD上顯示ASCII字符,首先把每個字符轉成一個16* 16bit的數(shù)組,組成字庫(本次實現(xiàn)中使用),然后,選擇要顯示的字符,從字庫中提取字符,經(jīng)函數(shù)調用后,將要顯示的字符送至LCD顯示器,這樣,就在LCD上顯示出ASCII字符。 部分源程序如下: void displayLCD(void) //LCD顯示函數(shù) { 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的數(shù)據(jù)轉換處理 pbuffer[ i]=~temp_data; Delay(10); } } 在添加所用的頭文件的同時,增加對LCD_Init()函數(shù)、dis-playLCD()等函數(shù)的調用。 4 網(wǎng)絡命令處理 在硬件設計上采用以太網(wǎng)口,軟件上通過實現(xiàn)瘦TCP/IP網(wǎng)絡通信協(xié)議,針對嵌入式系統(tǒng)特點對傳統(tǒng)的TCP/IP協(xié)議棧進行裁減[4],讓嵌入式多參數(shù)監(jiān)護儀支持輕量級TCP/IP協(xié)議棧而 直接連入Internet。在設計將無實時要求和費時的TCP/IP協(xié)議簇的處理放在主程序順序循環(huán)中。網(wǎng)絡程序結構采取順序執(zhí)行和硬件中斷相配合的方式,這種硬件中斷是外部時鐘中斷,中斷級別要比非向量模式的FIQ中斷級別低,在系統(tǒng)空閑時進行網(wǎng)絡數(shù)據(jù)交互;對網(wǎng)絡接口控制芯片采用查詢方式,即在其他中斷任務的執(zhí)行間隙處理瘦TCP/IP協(xié)議簇,以犧牲響應速度來換取系統(tǒng)可靠性。 考慮到嵌入式醫(yī)用監(jiān)護儀在窄寬帶不可靠環(huán)境下實現(xiàn)實時監(jiān)測的要求,決定在網(wǎng)絡通信協(xié)議的傳輸層中,選用UDP(用戶數(shù)據(jù)報協(xié)議)。 5 結束語 介紹一種基于ARM的嵌入式多參數(shù)監(jiān)護儀的設計與實現(xiàn),并應用于實際測量,為嵌入式系統(tǒng)在醫(yī)用監(jiān)護中的應用提供了一個很有意義的新思路和切實可行的方案。由于該網(wǎng)絡監(jiān)護儀主要面向醫(yī)院、社區(qū)和家庭,具有成本低、功耗小、數(shù)據(jù)存儲量大、數(shù)據(jù)處理速度快、便于遠程醫(yī)療、能同時實現(xiàn)實時多任務的操作等各項優(yōu)勢,是現(xiàn)代醫(yī)療監(jiān)護進一步智能化、專業(yè)化、小型化、低功耗的發(fā)展新方向,困此具有很廣闊的市場前景。

標簽:

點贊

分享到:

上一篇:PC作為Profibus-DP單主站的實現(xiàn)

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網(wǎng)站簡介|會員服務|聯(lián)系方式|幫助信息|版權信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務平臺

網(wǎng)站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號