USB接口數據設計管理論文

時間:2022-06-26 04:37:00

導語:USB接口數據設計管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

USB接口數據設計管理論文

摘要:以自行開發的基于usb接口數據采集系統為例,介紹了USB接口的硬件和軟件開發過程。

關鍵詞:USB數據采集PDIUSBD12

1USB協議和芯片選擇

理解好USB協議是USB系統開發的第一步。USB協議版本包括1.0、1.1和2.0,USBOTG是對2.0版本協議的補充。雖然USB協議內容繁多且復雜,然而,對USB開發影響較大的卻只是少數部分,以下對協議版本1.1[1]中這些部分進行介紹。

1.1USB協議

一般,每個USB設備由一個或多個配置(Configuration)控制其行為。使用多配置原因是對操作系統的支持;一個配置由接口(Interface)組成;接口則是由管道(Pipe)組成;管道與USB設備的端點(Endpoint)對應,一個端點可以配置為輸入輸出兩個管道。在固件編程中,USB設備、配置、接口和管道都用描述符報告其屬性。

圖1為USB多層次通信模型。端點0默認配置為控制管道,用來完成所規定的設備請求(USB協議第九章)。其它端點可配置為數據管道。對開發而言,主要的大數據傳輸都是通過數據管道完成的[2]。

USB傳輸類型包括批量傳輸、等時傳輸、中斷傳輸和控制傳輸,每種傳輸類型的傳輸速度、可靠性以及應用范圍都不同[3]。控制傳輸可靠性是最高的,但速度最慢;等時傳輸速度快,滿足實時性,但可靠性低。在具體應用中,端點傳輸類型可根據傳輸速度和可靠性選擇。

在USB通信協議中,主機取得絕對主動權利,設備只能是“聽命令行事”,通過一定的命令格式(設備請求)完成通信。USB設備請求包括標準請求、廠商請求和設備類請求。設備的枚舉是標準請求命令完成的;廠商請求是用戶定義的請求;設備類請求是特定的USB設備類發出的請求,例如海量儲存類、打印機類和HID(人機接口)類。固件編程中設備請求必須遵循一定的格式,包括請求類型、設備請求、值、索引和長度。

1.2USB接口芯片選擇

USB接口芯片的類型有:

(1)按傳輸速度的高低:低速(1.5Mbps)和全速(12Mbps)可選USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可選USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。

(2)是否帶MCU(微控制器):一般Philips公司的都不帶MCU,Cypress公司大多都帶,例如AN2131。

(3)是否帶主控器功能:不需要主機參與,主從設備間可進行數據傳輸,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。

還有專門用途USB芯片,例如閃存專用芯片IC1114。工程中用戶可根據自己的需求選擇一款性價比高的芯片。另外可用開發資源也是要考慮的重要方面,例如開發板和芯片廠商提供的網上資源,可大大降低開發的難度。

2基于USB接口的數據采集系統的設計

2.1系統簡介

該系統能夠實現16路溫度數據自動采集,系統的組成框圖如圖2所示。主要包括8個組成部分:中央處理器選用AT89C52芯片,完成各部分控制功能和USB傳輸協議;實時時鐘記錄當前測量溫度的時間;溫度傳感器和接口電路主要完成溫度采集,并讀入MCU處理;復位電路完成對MCU的上電復位和電源電壓監視;看門狗電路用來監視MCU是否工作;存儲電路主要存儲采集到的溫度數據以及采集的實時時間;電源電路主要為各部分提供要求的電源;外設與主機間的通信電路采用USB接口。

2.2接口芯片選擇

接口電路采用Philips公司的PDIUSBD12[4](以下簡稱為D12)芯片。主要因為D12芯片信息、開發資源豐富,具有較高的性價比。

D12芯片的主要特點包括:

·符合USB1.1版本規范;

·可與任何外部微控制器/微處理器實現高速并行接口(2MB/s);

·采用GoodLink技術的連接指示器,在通信時使LED閃爍;

·主端點的雙緩沖配置增加了數據吞吐量并輕松實現實時數據傳輸;

·在批量和等時模式下均可實現1MB/s的數據傳輸率;

·完全自治的直接內存存取DMA操作。

2.3接口硬件設計

由D12接口組成的通信電路原理如圖3所示。關于D12的各引腳說明見參考文獻[4]。多路地址/數據總線ALE接單片機的ALE腳,這樣使用MOVX指令可以與D12接口,對D12操作就象對RAM操作一樣,此時忽略A0(命令口和數據口地址線)的輸入。因為沒有使用DMA傳輸方式,所以沒有用到DMACK_N、EOT_N和DMREQ_NDMA引腳。INT_N是USB中斷請求腳,發出USB中斷請求;GL_N是GoodLink指示燈,在調試過程中非常有用,在通信時會不停閃爍。如果一直亮或者一直暗,表示USB接口有問題,如果D12掛起,則LED關閉。CLKOUT是D12的時鐘輸出,可以通過固件編程改變其頻率,在調試固件時,可作為參考。

2.4接口程序設計

USB接口程序設計是USB開發的核心。USB接口程序設計包括三部分:單片機程序開發、USB設備驅動程序開發、主機應用程序開發。三者互相配合,才能完成可靠、快速的數據傳輸。

2.4.1單片機程序設計

單片機程序(又稱固件)采用模塊化程序設計,主要模塊包括:數據采集模塊、數據處理、監控模塊和數據通信模塊。模塊化設計的優點是可靠性高、可讀性好、升級簡單。

通信模塊固件結構如圖4所示。主循環和中斷服務程序之間的數據交換可通過事件標志和數據緩沖實現。圖3中USB中斷引腳INT_N發出中斷請求,中斷服務程序根據中斷請求類型操作,設置事件和填充數據緩沖區再傳輸給主循環;標準設備請求程序是對標準請求進行處理;用戶可以根據實際需要編寫廠商請求,例如發出啟動或停止數據采集命令。

圖3USB接口連接示意圖

2.4.2驅動程序設計

驅動開發工具有DDK和第三方開發工具。其中DDK開發難度最大,第三方開發工具有DriverStudio和Windriver等。DriverStudio難度適中,而Windriver則屬于應用層驅動開發,難度小,但效率低,并存在問題。

DDK驅動程序開發工作包括:開發環境設置(VC編譯環境)[5]、驅動程序設計[6]、安裝文件(INF文件)設計。

驅動程序設計采用WDM(WindowsDriveMode)。WDM設備驅動程序提供了一個參考框架,大大降低了由DDK書寫驅動程序帶來的難度。

D12驅動使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程,以下是D12的WDM驅動程序函數:

DriverObject->MajorFunction[IRP_MJ_CREATE]=D12_Create;

DriverObject->MajorFunction[IRP_MJ_CLOSE]=D12_Close;

DriverObject->DriverUnload=D12_Unload;

DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL;

=D12_ProcessIOCTL;

DriverObject->MajorFunction[IRP_MJ_WRITE]=D12_Write;

DriverObject->MajorFunction[IRP_MJ_READ]=D12_Read;

DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL;

DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;

DriverObject->MajorFunction[IRP_MJ_POWER]=D12_Process-PowerIrp;

DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;

驅動程序與應用程序和硬件之間通信都是IRP(I/O請求包)完成的。IRP_MJ_PNP主要是實現USB即插即用,例如設備的添加、刪除和資源的分配;IRP_MJ_POWER實現電源管理,例如設備的掛起和喚醒;IRP_MJ_CREATE(創建)、IRP_MJ_CLOSE(關閉)、IRP_MJ_

DEVICE_CONTROL(設備控制)、IRP_MJ_WRITE(讀)和IRP_MJ_READ?穴寫?雪是主要完成數據通信的函數,實現管道的創建、關閉和數據讀寫。其中設備控制具有輸入輸出緩沖區,可實現讀和寫功能;AddDevice和DriverUnload實現設備管理,在設備添加和卸載時,創建和刪除設備,以及管理資源分配。

驅動程序通過安裝文件(.inf文件)中PID(產品識別號)和VID(廠商識別號)識別USB設備。

2.4.3應用程序設計

主機應用程序的編寫使用VC編譯環境中的API函數實現。

應用程序的編程方法與串口編程類似。首先必須查找設備,打開設備的句柄;然后進行讀寫和控制操作;最后是關閉設備句柄。為了提高效率,可使用多線程技術實現讀寫。

應用程序通過GUID(注冊表驅動唯一識別號)查找驅動程序。

2.5調試

首先是固件調試,可用仿真機完成,驅動開發工具Windriver也是很好的固件調試工具,例如測試標準請求、廠商請求和管道讀寫。其次是驅動調試,這是USB接口開發最困難的部分,調試工具可用DriverStudio中Softice工具和文獻[6]中DebugPrint跟蹤工具,監視工具BusHound可監視USB的實際數據傳輸情況。需要注意的是,驅動調試必須在應用程序正確調用的前提下。

2.6USB傳輸速度

主機每過1ms發出一個SOF(起始幀),四種USB傳輸類型都分布在1ms的幀內。所以為了提高傳輸速度,可加大端點緩沖區的大小和使用雙緩沖(有些芯片還有四緩沖),在1ms內盡量多傳輸數據;采用DMA傳輸方式,USB設備不通過微控制器直接完成數據傳輸,當然相應硬件和軟件開發的難度增加;如果單片機數據加載速度較慢,則可考慮使用高速指令的單片機;如果速度要求在1MB/s以上,則考慮采用USB2.0接口芯片。

本文以USB接口程序在16路溫度采集系統中的應用為例,介紹了USB的接口標準和程序設計。該系統經過一段時間運行,穩定可靠,目前已廣泛應用于航空電子設備的測溫系統。