基于USB總線(xiàn)的數據采集設備的設計與實(shí)現
隨著(zhù)醫學(xué)信息網(wǎng)絡(luò )化的需要,經(jīng)常需要將各種醫學(xué)儀器(如腦電圖、心電圖等)與主機相連,以便于從這些醫學(xué)儀器獲得所需的各種醫學(xué)信息。同時(shí),在需要的時(shí)侯還可以通過(guò)主機對這些醫學(xué)儀器的操作進(jìn)行控制。
傳統的外設與主機的通訊接口一般是基于PCI總線(xiàn)、ISA總線(xiàn)或者是RS-232C串行總線(xiàn)。PCI總線(xiàn)雖具有高的傳輸速度(132Mbps),支持"即插即用"功能,但其缺點(diǎn)是插拔麻煩,且擴展槽有限(一般為5~6個(gè))。ISA總線(xiàn)顯然存在著(zhù)同樣的問(wèn)題。RS-232C串行總線(xiàn)雖然連接簡(jiǎn)單,但其缺點(diǎn)是傳輸速度慢(56kbps),且主機的串行口數目有限。
USB(Universal Serial Bus,通用串行總線(xiàn))是由Intel、Microsoft、IBM及NEC等共同制定的微機總線(xiàn)接口規范1。由于USB具有較高的傳輸速度(USB協(xié)議1.1支持的最高傳輸速度為12Mbps,而USB協(xié)議2.0支持的最高傳輸速度更是高達480Mbps),支持即插即用和熱插拔功能,USB設備的連接電纜最長(cháng)可達5 m,且可通過(guò)USB集線(xiàn)器進(jìn)行層式星形拓撲連接(一臺主機最多可連接127個(gè)USB設備,且可實(shí)現最多5級的拓撲連接),因此其非常適合作為主機和醫學(xué)儀器之間的通信接口。
為便于臨床上采集病人的某些生理信號(如心電信號,腦電信號等)23,設計了基于USB總線(xiàn)的醫學(xué)數據采集設備,其最多支持32個(gè)通道的同步數據采集,最高采樣率為1kHz,采樣精度為16bit,主機的操作系統為Win98。主要完成了四個(gè)方面的工作:硬件設計、firmware(固件)設計、設備驅動(dòng)程序設計以及應用軟件的設計。
1 硬件設計
USB數據采集設備的硬件構成見(jiàn)圖1。
從圖1可知,32路模擬輸入信號由多路模擬開(kāi)關(guān)控制將其中的某一路信號接入串行A/D(選用B-B公司的ADS7809),A/D轉換的結果經(jīng)光電隔離后串行輸出到移位寄存器,移位寄存器將此結果轉為并行數據并寫(xiě)入FIFO存儲器,80C52系統將數據從FIFO存儲器中讀出并通過(guò)USB控制器送到主機。
當前可供選擇的USB控制器很多,如朗訊公司的USS820、國家半導體公司的USBN9602。另外,還有將微控制器和USB控制器集成在一起的芯片,如Intel公司的8x930Hx和8x930Ax,其中8x930Hx支持USB集線(xiàn)器功能。在實(shí)際開(kāi)發(fā)中選擇了朗訊公司的USS820,其主要特點(diǎn)是完全遵循USB協(xié)議1.1,支持12Mbps的全速傳輸,支持四種傳輸方式,提供8個(gè)端點(diǎn)(Endpoint) 且每個(gè)端點(diǎn)的傳輸類(lèi)型、傳輸方向均可自由配置。另外,它還為每個(gè)端點(diǎn)提供兩套FIFO數據緩沖區,總的數據緩沖區大小可達2240字節。
2 firmware設計
此處firmware(固件)是指被固化到89c52 E2PROM中的程序。firmware主要完成兩個(gè)方面的工作:控制A/D的采樣和通過(guò)USB控制器與主機通信。由于89C52系統控制A/D采樣的工作非常簡(jiǎn)單,此處不做介紹。詳細介紹89C52系統通過(guò)USB控制器與主機通信的工作。
因為89C52系統對USB控制器的操作是嚴格按照USB協(xié)議1.1進(jìn)行的,因此先對USB協(xié)議1.1做一簡(jiǎn)單的介紹。按照USB協(xié)議1.1的規定,USB的傳輸方式分為4種:控制傳輸(Control transfer),塊傳輸(Bulk transactiONs),中斷傳輸(Interrupt transactions)和等時(shí)傳輸(Isochronous transactions)??刂苽鬏斨饕脕?lái)完成主機對設備的各種控制操作(如獲取設備的設備描述符,設置設備的USB地址等,也可以通過(guò)控制傳輸來(lái)定義自己對設備的控制操作,如設置采樣參數、開(kāi)始或停止采樣等);塊傳輸主要用來(lái)完成主機和設備之間的大批量數據傳輸,由于塊傳輸在硬件級上對傳輸數據進(jìn)行錯誤檢測(若發(fā)生錯誤,它支持"重傳"功能),因此它能保證數據傳輸的可靠性,塊傳輸支持兩個(gè)方向的數據傳輸(即主機到設備和設備到主機);中斷傳輸用來(lái)完成設備到主機的少量數據傳輸,它只支持設備到主機方向的數據傳輸(中斷傳輸跟實(shí)際的"中斷"概念沒(méi)有任何聯(lián)系);等時(shí)傳輸主要用來(lái)完成主機和設備之間連續、實(shí)時(shí)數據的傳輸(如語(yǔ)音信號),同步傳輸不對傳輸數據進(jìn)行錯誤檢測,它主要保證數據的連續傳輸。另外,需要注意的是所有的USB傳輸事務(wù)均由主機啟動(dòng),即USB總線(xiàn)采取主從式結構(master to slave)。
在實(shí)際開(kāi)發(fā)中使用了兩種傳輸方式:控制傳輸和塊傳輸??刂苽鬏斢脕?lái)實(shí)現位于主機上的USB總線(xiàn)驅動(dòng)程序(USBD.SYS)以及編寫(xiě)的功能驅動(dòng)程序對設備的各種控制操作,而塊傳輸用來(lái)完成將采集數據從設備傳送到主機。
USB控制器的工作原理可以簡(jiǎn)單地描述為:當USB控制器從USB總線(xiàn)檢測到主機啟動(dòng)的某一傳輸請求時(shí),USB控制器通過(guò)中斷方式將此請求通知89C52系統。89C52系統通過(guò)訪(fǎng)問(wèn)USB控制器的狀態(tài)寄存器和數據寄存器獲得與此次傳輸有關(guān)的各種參數,并根據具體傳輸參數,對USB控制器的控制寄存器和數據寄存器進(jìn)行相應的操作,以完成主機的傳輸請求。
評論