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