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