基于USB接口的心電信號(hào)數(shù)據(jù)采集系統(tǒng)
關(guān)鍵詞:USB;心電;數(shù)據(jù)采集
1 引言
心電信號(hào)是最廣泛的臨床檢查項(xiàng)目之一。心電信號(hào)數(shù)據(jù)采集系統(tǒng)是心電信號(hào)檢查的關(guān)鍵部件,它能在較強(qiáng)的噪聲背景下,通過(guò)電極將0.05~100Hz的微弱心電信號(hào)檢測(cè)出來(lái),然后經(jīng)放大、A/D轉(zhuǎn)換后送入計(jì)算機(jī)進(jìn)行處理。計(jì)算機(jī)的使用使得該系統(tǒng)在信號(hào)分析、儲(chǔ)存、打印等方面比傳統(tǒng)的心電圖機(jī)具有明顯的優(yōu)勢(shì)。但采集系統(tǒng)與計(jì)算機(jī)的通訊接口都存在插卡插拔麻煩,安全性差,且擴(kuò)展槽數(shù)目有限等不足。為此?本文提出的基于USB接口的心電信號(hào)數(shù)據(jù)采集系統(tǒng)使用了目前最為先進(jìn)的USB接口技術(shù),能夠支持即插即用和熱插拔功能。這是其它非USB接口無(wú)法比擬的。同時(shí)也可以與筆記本電腦相連以構(gòu)成移動(dòng)式心電檢測(cè)分析儀。
2 系統(tǒng)的硬件組成
2.1 系統(tǒng)組成
圖1所示為基于USB接口的心電信號(hào)數(shù)據(jù)采集系統(tǒng)的組成框圖。圖中?電極傳感器檢測(cè)到的心電信號(hào)經(jīng)輸入保護(hù)電路進(jìn)行電壓限幅、高頻濾波后,再進(jìn)行前置放大,然后經(jīng)光電隔離后,再次進(jìn)行電壓放大,最后經(jīng)干擾抑制電路消除干擾后,在多路模擬開關(guān)的控制下將其中某一路信號(hào)接入A/D。CY7C64613是帶智能USB接口的單片機(jī),通過(guò)它可以把A/D轉(zhuǎn)接后的數(shù)字信號(hào)經(jīng)USB接口傳輸?shù)接?jì)算機(jī)。
下面就數(shù)據(jù)采集系統(tǒng)的抗干擾措施、信號(hào)放大及USB通信等問(wèn)題進(jìn)行重點(diǎn)論述。
2.2 系統(tǒng)抗干擾
作為醫(yī)療器械的心電信號(hào)數(shù)據(jù)采集系統(tǒng),由于其檢測(cè)對(duì)象是低頻、微弱的心電信號(hào),干擾較大,因此?系統(tǒng)的抗干擾能力及安全可靠性至關(guān)重要。針對(duì)這種情況,本系統(tǒng)采取了多方面措施。圖2所示為輸入保護(hù)電路和高頻濾波電路。其中輸入保護(hù)電路是在每個(gè)電極和地之間加入兩個(gè)并聯(lián)的硅二極管以進(jìn)行電壓限幅,從而限制輸入電壓不超過(guò)600mv,確保病人和儀器的安全。高頻濾波電路用于阻止高頻干擾信號(hào)進(jìn)入數(shù)據(jù)采集系統(tǒng)。本設(shè)計(jì)使用以FX101芯片為核心的低通濾波器。濾波截止頻率為:
fc=1/[2p(R1R2C1C2)1/2]
使用光電隔離電路和干擾抑制電路可進(jìn)一步提高抗干擾能力。干擾抑制電路包括50Hz干擾抑制電路和肌電干擾抑制電路。前者用來(lái)濾掉50Hz工頻干擾(這是心電信號(hào)的主要干擾源),它是一個(gè)無(wú)源RC雙T網(wǎng)絡(luò)。后者用來(lái)抑制電極與皮膚接觸時(shí)引進(jìn)的肌電信號(hào),它是一個(gè)高載RC濾波器。
此外,還可采用軟件濾波的方法。可通過(guò)在軟件中設(shè)置50Hz干擾濾波和漂移濾波等程序來(lái)進(jìn)一步提高系統(tǒng)的抗干擾能力。
2.3 放大電路
放大電路也是設(shè)計(jì)重點(diǎn)之一。一般情況下,心電信號(hào)必須進(jìn)行放大才能送往計(jì)算機(jī)進(jìn)行處理。由于極化電壓的影響,放大器的增益不能太高,因而本系統(tǒng)采用了前置放大電路和電壓放大電路兩級(jí)放大的方法。對(duì)前置放大電路的要求是:輸入阻抗高、失調(diào)溫漂小、共模抑制比高、輸入噪聲小。為此筆者選用了INA121芯片。INA121是Texas Instruments BB公司生產(chǎn)的低功耗儀器放大電路,性能優(yōu)越,它的差模輸入電阻為1012Ω,共模抑制比為106dB,輸入失調(diào)電壓為200μv,輸入失調(diào)溫漂為2μv/℃,輸入噪聲為20nV?Hz?1/2。前置放大電路的放大倍數(shù)設(shè)置為50。較小的前置放大倍數(shù)可以避免極化電壓的影響。電壓放大電路的放大倍數(shù)設(shè)置的較高(取為100倍),則可以保證總的放大倍數(shù)。
2.4 USB專用芯片的選擇
目前各個(gè)廠商推出的USB芯片類型眾多,功能各異。本系統(tǒng)選用Cypress半導(dǎo)體公司推出的EZ-USB FX全速系列中的CY7C64613-128NC芯片。EZ-USB FX系列芯片是帶智能USB接口的單片機(jī),它以8051為核心。對(duì)于復(fù)雜與繁瑣的USB通信,該器件可提供EZ-USB固件函數(shù)庫(kù)與固件架構(gòu),從而可大幅度地降低編寫固件程序代碼的困難程度。CY7C64613支持USB協(xié)議1.1,同時(shí)可支持12Mbps的全速傳輸。此外,它還帶有增強(qiáng)版的8051核心和4kB或8kB的RAM,端點(diǎn)數(shù)量為32個(gè),可采用智能型的USB核心程序。
3 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)包括三部分:固件設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)、應(yīng)用程序設(shè)計(jì)。
本設(shè)計(jì)中將心電信號(hào)數(shù)據(jù)采集系統(tǒng)規(guī)劃為人工接口設(shè)備HID群組。該HID群組原是針對(duì)鍵盤、鼠標(biāo)等輸入設(shè)備而設(shè)置與規(guī)劃的。但是,對(duì)于需要以雙向、適當(dāng)?shù)念l率來(lái)進(jìn)行數(shù)據(jù)交換的其它設(shè)備而言,也是一個(gè)非常好的設(shè)計(jì)范例與基礎(chǔ)架構(gòu)。因此,可以將這些設(shè)備規(guī)劃為HID群組,只要它們符合HID規(guī)范中所定義的各種特性與條件,就可以執(zhí)行HID設(shè)備的功能。在windows98與windows2000等操作系統(tǒng)中都已包含了HID群組的驅(qū)動(dòng)程序,因此,用戶開發(fā)新設(shè)備時(shí),無(wú)須重新編寫驅(qū)動(dòng)程序。
3.1 固件(Firmware) 設(shè)計(jì)
由于EZ-USB FX系列已提供了固件架構(gòu)(frame works)。因此,可以利用這一架構(gòu)來(lái)簡(jiǎn)化固件的開發(fā)。用戶僅需提供其USB描述符以及實(shí)現(xiàn)外圍功能的程序代碼?在PERIPH.C文件中?,即可完成完全兼容的USB設(shè)備設(shè)置。此外,Cypress公司還提供了副函數(shù)鉤子(function hooks),利用該功能可以幫助用戶進(jìn)行固件的設(shè)計(jì)。
在程序開始執(zhí)行后,固件架構(gòu)會(huì)執(zhí)行以下步驟:第一步,設(shè)置內(nèi)部狀態(tài)變量的起始值;第二步,調(diào)用用戶的初始設(shè)置函數(shù)TD-Init;第三步,在1s間隔后重新設(shè)備列舉(ReNumerate),直到收到SETUP封包為止;第四步,一旦SETUP封包被檢測(cè)到,固件架構(gòu)立即啟動(dòng)與其合作的工作分配器。
TD_Init()可用來(lái)對(duì)用戶設(shè)備(即數(shù)據(jù)采集系統(tǒng))進(jìn)行初始化,并重新尋址描述符表。其程序代碼如下:
TD_Init();
pDeviceDscr=(WORD)&DeviceDscr;
pConfigDscr=(WORD)&ConfigDscr;
pStringDscr=(WORD) &StringDscr;
if((WORD)&DeviceDscr&0xe000)
pReportDscr=(WORD)&ReportDscr
{
IntDescrAddr=INTERNAL_DSCR_ADDR;
ExtDescrAddr=(WORD)&DeviceDscr;
DevDescrLen=(WORD)&UserDscr(WORD)&De-viceDscr+2;
for(i=0;i<DevDescrLen;i++)
*((BYTE xdata *)IntDescrAddr+i)=0xCD;
for(i=0;i<DevDescrLen;i++)
*((BYTE xdata* )IntDescrAddr+i)=*((BYTE xdata *)ExtDescrAddr+i);?
pDeviceDscr=IntDescrAddr;
offset = (WORD)&DeviceDscr_INTERNAL_DSCR_ADDR;
pConfigDscr- =offset;
pStringDscr - =offset;
pReportDscr- =offset;
}
EZUSB_IRQ_ENABLE();
EZUSB_ENABLE_(tái)RSMIRQ();
.
3.2 驅(qū)動(dòng)程序設(shè)計(jì)
在Windows操作系統(tǒng)中,USB驅(qū)動(dòng)程序是基于Win 32 Driver Model?WDM?的,它用階層式驅(qū)動(dòng)程序模式,每個(gè)驅(qū)動(dòng)程序階層負(fù)責(zé)處理一部分通信工作,具體框圖如圖3所示。設(shè)備驅(qū)動(dòng)程序(含群組驅(qū)動(dòng)程序)可與系統(tǒng)的總線驅(qū)動(dòng)程序進(jìn)行通信,總線驅(qū)動(dòng)程序用來(lái)處理USB的硬件。用戶應(yīng)用程序并不直接與硬件打交道,而是使用Win 32 API調(diào)用函數(shù)對(duì)Win 32子系統(tǒng)進(jìn)行調(diào)用,同時(shí)給設(shè)備驅(qū)動(dòng)程序發(fā)I/O請(qǐng)求包(IRP)。由于Windows操作系統(tǒng)中已包含了總線驅(qū)動(dòng)程序和一些群組驅(qū)動(dòng)程序,因此用戶只需編寫自己的用戶設(shè)備驅(qū)動(dòng)程序或選用Windows提供的群組驅(qū)動(dòng)程序即可。
在Windows系統(tǒng)中,HIDDEV.INF文件中已提供有HID群組的驅(qū)動(dòng)程序,可以直接引用。從而省去了編寫繁瑣的用戶驅(qū)動(dòng)程序的麻煩。
3.3 應(yīng)用程序設(shè)計(jì)
在應(yīng)用程序中,需要設(shè)置與固件程序及驅(qū)動(dòng)程序中相同的PID/VID碼,才能在設(shè)備管理中找到對(duì)應(yīng)的USB設(shè)備(數(shù)據(jù)采集系統(tǒng))。具體的設(shè)置程序代碼如下:
Const MyVendorID=&H1234
Const MyProductID=&H5678
在Windows 98驅(qū)動(dòng)程序開發(fā)工具組(DDK)中,一般都具有用戶模式(即應(yīng)用程序階層)HID通信部分的完整指導(dǎo)準(zhǔn)則。用戶通過(guò)調(diào)用API函數(shù),可以找到與設(shè)備描述符內(nèi)設(shè)置的VID/PID碼相符合的HID設(shè)備(即數(shù)據(jù)采集系統(tǒng))。有了API函數(shù)傳回的設(shè)備路徑名稱,就能用GreateFile()函數(shù)打開設(shè)備的指示(handle),然后使用HID特定的API函數(shù)來(lái)讀?。郑桑模校桑拇a,最后再使用ReadFile()與WriteFile()函數(shù)來(lái)準(zhǔn)備交換數(shù)據(jù)。具體編程方法可參閱Windows 98 DDK。
4 結(jié)論
基于USB接口的心電信號(hào)數(shù)據(jù)采集系統(tǒng)具有優(yōu)越的性能。試驗(yàn)表明,其使用方便,性能穩(wěn)定。尤其是它與筆記本電腦相結(jié)合可構(gòu)成移動(dòng)式心電信號(hào)檢測(cè)分析儀,從而方便地應(yīng)用于野外、救護(hù)車、病房等傳統(tǒng)心電分析儀不便使用的場(chǎng)合,具有很高的實(shí)用推廣價(jià)值。
評(píng)論