本站小編為你精心準備了生理參數采集模塊的USB接口設計參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
摘要:
采用USB接口芯片和多通道生理參數采集模塊設計了一種采集模塊與上位機PC通信的usb接口,實現了多通道生理參數的實時數據采集。從通信實現的上位機和下位機兩方面討論了接口的設計和實現過程。闡述了基于PC的上位機驅動程序設計,基于USB接口芯片的下位機硬件設計和固件設計,與PC串口通信對比了數據通信的實時性和準確性。
關鍵詞:
USB接口,生理參數,數據通信,WDM驅動
以往的多通道生理參數采集接口一般為PCI插槽或串口。PCI接口安裝復雜、硬件資源受限制,而串口速度比較慢,越來越輕便的電腦已經不集成串口。由于以上缺點,本文設計了一種生理參數采集模塊的USB接口實現。以OEM定制生理參數采集模塊為基礎,通過PDIUSBD12實現了與上位機PC的實時高速數據通信。該接口集成度高、滿足生理參數尤其是心電數據的通信率要求、使用簡便。
1系統設計方案
系統采用OEM定制的生理參數采集模塊,此模塊具有同時采集用來測量和監控心電波、心率、無創血壓(收縮壓、舒張壓、平均壓)、血氧飽和度、呼吸和體溫的功能。模塊定制接口具有全雙工通信模式,輸入為規定格式的控制命令字,輸出數據的比特率為10000bps。下位機選用AT公司的MCU和Philips公司的PDIUSBD12完成了USB通信接口的硬件電路和固件設計。下位機電源包括兩部分,一部分為DC6V直接給采集模塊供電,另一部分為USB接口電源設計為直接從USB總線索取5V電源。上位機PC的軟件設計包括驅動程序和數據測試程序兩部分。驅動程序為WindowsNT32位操作系統下生理參數采集模塊的USB接口總線的WDM驅動。基于VC開發的測試程序主要用來測試數據雙向通信準確性。系統結構圖如圖1所示。
2下位機接口設計
2.1硬件電路下位機硬件設計實現了USB通信接口。PDIUSBD12是一款性價比很高的USB器件,通常用作實現與微控制器進行通信的高速通用并行接口。由于D12已有成熟外圍連接電路,在此不再詳細介紹。對比D12的兩種不同讀寫方式:IO方式和總線方式(如圖2所示)。針對不同MCU可以選擇合適的連接方式,修改底層功能函數。IO方式為IO模擬的方式模擬D12的讀寫,讀寫的時候需要指定IO引腳。讀寫的時候按照D12時序一次進行。總體分為三步:1)根據命令和數據置位A0(A0=1選擇命令,A0=0選擇數據);2)輸出對D12操作的地址;3)讀出或寫入數據。這種方式的優點就是適用范圍廣,適用于各種單片機,尤其是不帶總線的單片機。比如AVRMEAG8,但缺點是代碼復雜,執行效率低。本文采用總線讀寫的方式。MCU選用AT89S52,它自帶總線結構。可以很簡單的實現對D12的讀寫操作。將D12的CS_N引腳連接到MCU的P2.7引腳。總線地址最高位為0時D12片選有效。
2.2USB固件設計固件設計的目標就是使D12在USB上達到最大的傳輸速率。固件程序主要包括兩部分:USB總線的枚舉和數據通信處理。USB總線的枚舉是USB協議中最復雜的部分,枚舉的完成也是通信成功的必備條件。此設計按照USB協議標準實現了USB標準請求,成功完成設備枚舉。數據通信處理核心功能為數據雙向實時傳輸。此部分程序模擬了操作系統中的雙線程功能。一個線程處理MCU采集生理參數數據過程。程序流程圖如圖3所示。設計為硬件中斷方式,從而保障數據接收的實時性、準確性。另一個線程為主函數循環,主要處理USB與主機的通信過程。如圖4所示。USB協議規定了4種傳輸類型:批量傳輸、同步傳輸、中斷傳輸和控制傳輸。由于同步傳輸無法保證100%數據準確性;中斷傳輸適用于數據量小,保證查詢頻率的傳輸;而控制傳輸主要應用與枚舉的實現,故選擇批量傳輸模式。為了確保數據的實時傳輸,軟件設計了主副兩個數據緩沖區,通過修改指向緩沖區的指針,實現了循環數據緩沖區功能。D12設置為模式0,使用端點2的批量輸入輸出,最大緩沖區字節設置為64字節。
3上位機驅動設計
3.1USB驅動程序在Windows操作系統下,不能直接對硬件接口進行操作,必須采用驅動程序作為橋梁[3]。WDM是微軟退出的一種驅動程序模式,旨在提供一種靈活方式簡化驅動程序開發。WDM驅動采用了分層驅動的方式,在USB驅動框架中主要分為:總線驅動、功能驅動和過濾驅動。總線驅動已經由操作系統提供,而過濾驅動是一種監視、攔截和修改數據的驅動。因采集模塊沒有確定對應系統類,故開發了其專有USB功能驅動。開發基于WDM模型的驅動程序不僅需要了解系統內核原理,而且還要熟練WindowsDDK編程。為了縮短開發周期提高效率,選用第三方工具:DriverStudio。它使用DriverWorks進行WDM驅動程序開放,對標準的WDM驅動程序進行了封裝,簡化了驅動開放過程。可以簡單使用向導方式生成一個驅動框架。框架程序大體都相似不再詳述。
3.2應用測試程序應用程序需要獲取驅動程序的GUID和設備路徑才能使用CreateFile打開設備進行讀寫操作。以上三個函數通過GUID查找設備,獲取路徑信息。使用CreateThread函數創建了兩個子線程分別用于端點讀寫操作。通過DeviceIoControl函數分別使用EP2_READ/EP2_WRITE功能代碼實現端點2讀寫操作。圖5為基于VC編寫的上位機USB數據測試程序。圖5中右邊所示為接收的生理參數數據。
4結束語
經過和串口測試比較,此設計完全可以取代串口。通過此模塊可以擴展上位機應用軟件,可以實現遠程醫療、生理數據存儲等功能。
參考文獻
[1]周立功.PDIUSBD12USB固件編程與驅動開發[M].北京航空航天大學出版社,2003
[2]陳心浩,劉海華,陳亞光.基于USB接口的多通道實時數據采集系統[J].計算機工程與應用,2003(19):128-129
[3]薛園園.USB應用開發技術大全[M].北京:人民郵電出版社,2007
[4]陸永忠,劉峰.嵌入式高速實時數據采集系統設備驅動程序的研究[J].計算機工程與科學,2006,28(10)
[5]ArtBaker,JerryLozano.Windows2000設備驅動程序設計指南[M].施諾,譯.北京:機械工業出版社,2001
作者:高勇 閆聰聰 單位:天津理工大學聾人工學院 河北工業大學控制科學與工程學院