<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > USB接口單片機SL11R的特點及應(yīng)用

          USB接口單片機SL11R的特點及應(yīng)用

          作者: 時間:2009-08-05 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/173650.htm

          MCS51等沒有BIOS的,需要開發(fā)者控制CPU的每一步運行,程序必須在某一段反復(fù)循環(huán),程序結(jié)構(gòu)見圖2。由于有BIOS支持,它的程序結(jié)構(gòu)就與MCS51有所區(qū)別。的主體循環(huán)是在BIOS內(nèi)部,實際上用戶程序一般只是BIOS的中斷響應(yīng)子程序。也就是說,開發(fā)者所編的的用戶程序可以沒有主循環(huán)體。SL11R的用戶程序結(jié)構(gòu)見圖3。值得指出的是,開發(fā)者也可以擺脫BIOS的控制,程序不在BIOS內(nèi)部循環(huán)。但該程序設(shè)計難度較大,因為這時開發(fā)者需要自己直接處理的底層軟件,一般沒有特殊要求不要使用這種方式。

          3.2.2 SL11R的編程

          SL11R的大部分功能都可以通過BIOS調(diào)用實現(xiàn)。的編程也是調(diào)用BIOS實現(xiàn)。SL11R復(fù)位后會自動配置USB,與主機建立USB通訊,一般情況下開發(fā)者可以不進行干預(yù)。

          開發(fā)者主要使用的與USB有關(guān)的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 主機軟件設(shè)計

          要開發(fā)SL11R主機軟件,一種簡單、快捷的方式是借助于SL11R開發(fā)工具包(SL11R DVK)。通過學(xué)習(xí)工具包中附帶的例子程序可以在較短的時間內(nèi)開發(fā)出一個軟件,用戶不需自己開發(fā)驅(qū)動程序。該工具包可以從ScanLogic公司的網(wǎng)站(www.scanlogic.com)下載得到。工具包中包括的內(nèi)容有:通用驅(qū)動程序、例子程序和開發(fā)用的文檔資料。對于一般的開發(fā)工作可以直接使用工具包中的驅(qū)動。用于Windows98系統(tǒng)的三個文件分別是: slusbgen.sys、usb2epp.sys和usbdev.inf。

          在AppWizard (zip)源代碼包中,可以找到用VC寫成的主機例子程序(usbtest.exe)的源代碼。其中有幾個文件對利用ScanLogic公司提供的驅(qū)動程序來開發(fā)程序很有幫助。在頭文件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ù)塊

          只要在程序中靈活用好以上幾個函數(shù),做一些簡單的數(shù)據(jù)采集工作是完全可行的,筆者就是借用這幾個函數(shù)在實際工作中成功完成了應(yīng)用系統(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)應(yīng)用系統(tǒng)的開發(fā)。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();