本文介紹了一種基于ARM微處理器的脈象儀系統(tǒng),該系統(tǒng)以S3C2410嵌入式芯片作為硬件平臺(tái)。并且詳細(xì)分析了基于uClinux嵌入式操作系統(tǒng)的軟件設(shè)計(jì)方法。實(shí)踐證明該系統(tǒng)有效地提高了診斷的精度與效率,具有成本低、可靠性高、操作簡(jiǎn)單等優(yōu)點(diǎn)。 1 引言 脈象攜帶有豐富的人體健康狀況的信息。在中醫(yī)學(xué)中,脈診占有非常重要的位置。由于中醫(yī)是靠手指獲取脈搏信息,在長(zhǎng)期的醫(yī)療實(shí)踐中也暴露出一些缺陷。脈診的定性化和主觀性大大影響了其精度與可行性,成為中醫(yī)脈診應(yīng)用和發(fā)展中的制約因素。為了促進(jìn)脈診的應(yīng)用和發(fā)展,必須與現(xiàn)代科技相結(jié)合,實(shí)現(xiàn)更科學(xué)、客觀的診斷。隨著嵌入式技術(shù)的飛速發(fā)展,我們研制出一種基于ARM920T處理器的新型脈象儀。它采用一款A(yù)RM920T核的高速處理器S3C2410。該新型脈象儀具有成本低,體積小,可靠性高和操作簡(jiǎn)單等優(yōu)點(diǎn),適用于個(gè)人和中小醫(yī)院的脈象診斷用途。 2 系統(tǒng)總體設(shè)計(jì)思想 按照中醫(yī)脈診的理論,從左右手腕的寸、關(guān)、尺三部按不同的輕重可獲知人體五臟六腑的病理變化,模擬中醫(yī)脈診過(guò)程,設(shè)計(jì)中醫(yī)脈象儀。脈象儀原理圖如圖1所示。 圖1 脈象儀原理圖 圖2 傳感器結(jié)構(gòu)圖 3 系統(tǒng)硬件模塊設(shè)計(jì) 3.1 嵌入式處理器的選擇 系統(tǒng)采用了ARM920T作為系統(tǒng)與上位機(jī)溝通的橋梁。該實(shí)驗(yàn)箱如圖3所示。 圖3 ARM920T實(shí)驗(yàn)箱圖 片上資源包括2個(gè)32位定時(shí)器;1個(gè)A/D輸入接口;18個(gè)多功能I/O接口;1個(gè)CPLD;1個(gè)64M的SDRAM;1個(gè)4M的Flash;1個(gè)64M 的Nand Flash控制器;還有中斷控制器和系統(tǒng)管理器。 處理器采用芯片S3C2410。S3C2410有出色的內(nèi)核性能,豐富的外部接口和低功耗。在系統(tǒng)中我們用到2種內(nèi)存,一種SDRAM,一種Flash。 SDRAM具有運(yùn)行速度快的優(yōu)點(diǎn),但是掉電后不能保存數(shù)據(jù)。所以在系統(tǒng)主要是用來(lái)運(yùn)行操作系統(tǒng)、應(yīng)用程序和各類數(shù)據(jù)的緩存。 Flash內(nèi)存較SDRAM運(yùn)行速度慢.但掉電后能保存數(shù)據(jù)。在該系統(tǒng)設(shè)計(jì)中選用一種通用的Flash (SST39VF1601),容量為2MB,主要用于固化啟動(dòng)代碼和控制應(yīng)用程序,并保存一些系統(tǒng)數(shù)據(jù)。 3.2 A/D轉(zhuǎn)換 A/D轉(zhuǎn)換電路采用MAXIM公司的MAX197,MAX197采用逐次逼近技術(shù)以達(dá)到快速變換和低功耗。如圖4所示。 圖4 MAX197 4 系統(tǒng)軟件設(shè)計(jì) 為了滿足系統(tǒng)對(duì)實(shí)時(shí)性和安全性的要求,系統(tǒng)采用了嵌入式操作系統(tǒng)uClinux。uClinux是針對(duì)微控制領(lǐng)域而設(shè)計(jì)的linux系統(tǒng),是在linux的基礎(chǔ)上添加了對(duì)沒(méi)有內(nèi)存管理單元的微處理器的支持。一方面它繼承了linux的穩(wěn)定性優(yōu)點(diǎn),另一方面其內(nèi)核相當(dāng)精簡(jiǎn)。因此在嵌入式領(lǐng)域得到廣泛應(yīng)用。 該脈象儀系統(tǒng)的軟件主要由三個(gè)部分組成,系統(tǒng)軟件結(jié)構(gòu)如圖5所示,包括嵌入式linux操作系統(tǒng),A/D驅(qū)動(dòng)程序和應(yīng)用程序。 圖5 系統(tǒng)軟件結(jié)構(gòu) 4.1 嵌入式uClinux的構(gòu)建 將嵌入式uClinux系統(tǒng)移植到特定的硬件平臺(tái)上,大致需要完成建立叉編譯環(huán)境,配置編譯uClinux內(nèi)核,制作根文件系統(tǒng),下載和調(diào)試內(nèi)核四部分的工作。 4.2 A/D驅(qū)動(dòng)程序的設(shè)計(jì) 在uClinux系統(tǒng)下,驅(qū)動(dòng)程序可以看成uClinux內(nèi)核與外部設(shè)備之間的接口。驅(qū)動(dòng)程序向應(yīng)用程序屏蔽了硬件實(shí)現(xiàn)上的細(xì)節(jié)。可以使用和操作文件中相同的系統(tǒng)調(diào)用接口函數(shù)來(lái)完成對(duì)硬件設(shè)備的打開(kāi),關(guān)閉,讀,寫以及I/O控制操作。 本系統(tǒng)中的A/D驅(qū)動(dòng)程序主要結(jié)構(gòu)包括: (1)數(shù)據(jù)類型定義文件 #define U32 unsigned int #define U16 unsigned short #define S32 int #define S16 short int #define U8 unsigned char #define S8 char #define TRUE 1 #define FALSE 0 #define ERROR 0 (2)啟動(dòng)A/D轉(zhuǎn)換文件 void INT_ADC_Enable(int flag) { int temp;//定義臨時(shí)變量 if(flag == FALSE) { temp = rINTSUBMSK; temp |=(1<<10); rINTSUBMSK = temp; temp = rINTMSK; temp |=0x80000000; rINTMSK = temp; } else { temp = rINTSUBMSK; temp = 0x5ff; rINTSUBMSK = temp; temp = rINTMSK; temp &= ~(0x80000000) ; rINTMSK = temp; } } 。3)主程序文件 #include "2410addr.h"http://調(diào)用S3C2410地址頭文件 #include "def.h"http://調(diào)用數(shù)據(jù)類型頭文件 main() { clrsrc();//刷新操作 INT_ADC_Enable(int flag);//啟動(dòng)A/D轉(zhuǎn)換 … … } 4.3 應(yīng)用程序的設(shè)計(jì) 應(yīng)用程序是實(shí)現(xiàn)系統(tǒng)所需功能的核心部分,主要是A/D采樣分析。該部分主要負(fù)責(zé)對(duì)采集到的脈象模擬信號(hào)進(jìn)行數(shù)模轉(zhuǎn)換,并根據(jù)脈象的時(shí)域和頻域特征進(jìn)行分析脈象圖的結(jié)構(gòu)。 5 結(jié)束語(yǔ) 本文作者創(chuàng)新點(diǎn)是,與傳統(tǒng)的中醫(yī)脈象儀相比,基于ARM的脈象儀具有高性能,低成本,電路簡(jiǎn)潔可靠和擴(kuò)展性好等優(yōu)點(diǎn)。嵌入式uClinux的引入保證了系統(tǒng)穩(wěn)定和運(yùn)行的可靠。ARM技術(shù)將計(jì)算機(jī)硬件和軟件有機(jī)的融為一體,它使測(cè)試設(shè)備簡(jiǎn)單化,軟件設(shè)計(jì)變得更加靈活,具有無(wú)比的優(yōu)越性。ARM技術(shù)應(yīng)用于脈象儀具有很高的應(yīng)用價(jià)值和良好的市場(chǎng)前景,值得我們深入研究。 |