USB接口單片機SL11R的特點及應用
MCS51等沒有BIOS的單片機,需要開發(fā)者控制CPU的每一步運行,程序必須在某一段反復循環(huán),程序結構見圖2。SL11R由于有BIOS支持,它的程序結構就與MCS51有所區(qū)別。SL11R的主體循環(huán)是在BIOS內部,實際上用戶程序一般只是BIOS的中斷響應子程序。也就是說,開發(fā)者所編的SL11R的用戶程序可以沒有主循環(huán)體。SL11R的用戶程序結構見圖3。值得指出的是,開發(fā)者也可以擺脫BIOS的控制,程序不在BIOS內部循環(huán)。但該程序設計難度較大,因為這時開發(fā)者需要自己直接處理USB接口的底層軟件,一般沒有特殊要求不要使用這種方式。
SL11R的大部分功能都可以通過BIOS調用實現(xiàn)。USB的編程也是調用BIOS實現(xiàn)。SL11R復位后會自動配置USB接口,與主機建立USB通訊,一般情況下開發(fā)者可以不進行干預。
開發(fā)者主要使用的與USB有關的BIOS軟件中斷:
?USB_STAND_INT、USB_CLASS_INT、USB_VENDOR_
INT、USB_FINISH_INT 這些中斷主要是為了實現(xiàn)USB通訊,其中USB_VENDOR_INT是接受主機控制指令中斷,主機對SL11R的控制基本上都是通過它實現(xiàn)的。
?USB_SEND_INT、USB_RECEIVE_INT這兩個中斷用于USB發(fā)送、接收數(shù)據(jù)。可以通過配置,分別使用USB的四個端口。
3.3 主機軟件設計
要開發(fā)SL11R主機軟件,一種簡單、快捷的方式是借助于SL11R開發(fā)工具包(SL11R DVK)。通過學習工具包中附帶的例子程序可以在較短的時間內開發(fā)出一個應用軟件,用戶不需自己開發(fā)驅動程序。該工具包可以從ScanLogic公司的網(wǎng)站(www.scanlogic.com)下載得到。工具包中包括的內容有:通用驅動程序、例子程序和開發(fā)用的文檔資料。對于一般的開發(fā)工作可以直接使用工具包中的驅動。用于Windows98系統(tǒng)的三個文件分別是: slusbgen.sys、usb2epp.sys和usbdev.inf。
在AppWizard (zip)源代碼包中,可以找到用VC寫成的主機例子程序(usbtest.exe)的源代碼。其中有幾個文件對利用ScanLogic公司提供的驅動程序來開發(fā)應用程序很有幫助。在頭文件slusb.h中含有如下函數(shù)原型:
BOOL FAR PASCAL CloseUsbDev(VOID); //關閉USB口
BOOL FAR PASCAL FindUsbDev(WORD wProd); //打開USB口
BOOL UsbVendorCmdRead(BYTE bCmd,WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //發(fā)送讀控制指令
BOOL UsbVendorCmdWrite(BYTE bCmd, WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //發(fā)送寫控制指令
BOOL UsbDataRead(DWORD n, PVOID pData); //讀數(shù)據(jù)塊
BOOL UsbDataWrite(DWORD n, PVOID pData); //寫數(shù)據(jù)塊
只要在應用程序中靈活用好以上幾個函數(shù),做一些簡單的數(shù)據(jù)采集工作是完全可行的,筆者就是借用這幾個函數(shù)在實際工作中成功完成了應用系統(tǒng)的開發(fā)。
文件devioctl.h包含有slusb.h中需要的常數(shù)和宏的定義。在文件usbtest.cpp中定義了控制SL11R操作的指令代碼。
SL11R是一種功能強大的USB接口單片機,它的16位總線及DMA傳輸模式允許進行大容量數(shù)據(jù)的高速傳輸,可以進行高速數(shù)據(jù)采集。而且SL11R的編程簡單,無需專用開發(fā)裝置,開發(fā)成本低,初次接觸USB的開發(fā)人員可以很容易實現(xiàn)應用系統(tǒng)的開發(fā)。
評論