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