基于DSP的USB數據傳輸系統設計
2.2 驅動程序
在Windows平臺下,USB驅動程序由三部分組成:USB設備驅動程序、USB總線驅動程序和USB主控制器驅動程序。它們必須遵循Win32驅動程序模型(WDM)。其中,Windows操作系統已經提供了處于驅動程序棧底的USB主控制器驅動程序和USB總線驅動程序(USBD.SYS)。USB設備的驅動程序主要是通過調用USBD.SYS來實現PC機與USB總線的數據交換。USB驅動程序主要完成以下功能:
(1)發現、配置、關閉USB設備。通過一系列有關即插即用(Plug and Play)的派遣函數來完成。例如Ezusb_PnPAddDevice(),Ezusb_DispatchPnp()等函數。
(2)驅動程序與應用函數的接口。像Ezusb_Creat(),Ezusb_Close()等函數。應用程序調用Ezusb_Create()后,返回惟一的Windows句柄后,才能調用驅動程序的其他函數,完成驅動程序對CY7C68001的一系列操作和數據傳送。應用程序通過調用API函數CreateFile()來實現對Ezusb_Create()的訪問。
(3)控制與數據傳送接口。這是驅動程序的主要部分。它是Windows的異步I/O操作。應用程序使用標準Win32API函數DeviceIoControl()來執行這樣的操作。在驅動一方,這個DeviceloControl()調用被轉化成一個帶IRP_MJ_DEVICE_CONTROL功能碼的IRP。像讀取與寫入FIFO數據、endpoint0的操作均是通過異步I/O的方式來完成的。
2.3 主機應用程序
USB主機應用程序是計算機中完成特定功能的程序,其關鍵是實現從USB外設讀取或發送特定數量的數據、USB標準設備請求和特定的命令等。另外,可以、對數據做進一步的處理,如:存儲、顯示、快速傅里葉變換等。主機應用程序的編寫使用VC編譯環境中的API函數實現。應用程序的編程方法與串口編程類似。首先必須查找設備,調用Win32函數CreateFilea()打開設備的句柄;然后調用Win32函數DeviceloControl()就可以進行數據讀寫和控制操作;最后關閉設備句柄。在VC++6.0中用C++編寫簡單的上位機測試程序,得到測試結果如圖3所示。本文引用地址:http://www.104case.com/article/152289.htm
3 結 語
在CT圖像重建系統中,高性能的DSP芯片具有高速的數據處理能力,利用設計的USB接口,能夠快速方便地實現實時傳輸。經測試,該設計的USB接口傳輸速度可達35 Mb/s以上,具有較高的實用價值和良好的應用前景,而且對于使用其他微處理器開發基于CY7C68001的USB 2.0接口也有很好的借鑒作用。
評論