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