色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          本文引用地址:http://cafeforensic.com/article/173650.htm

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

          3.2.2 SL11R的編程

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

          開(kāi)發(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ī)對(duì)SL11R的控制基本上都是通過(guò)它實(shí)現(xiàn)的。

          ?USB_SEND_INT、USB_RECEIVE_INT這兩個(gè)中斷用于USB發(fā)送、接收數(shù)據(jù)??梢酝ㄟ^(guò)配置,分別使用USB的四個(gè)端口。

          3.3 主機(jī)軟件設(shè)計(jì)

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

          在AppWizard (zip)源代碼包中,可以找到用VC寫(xiě)成的主機(jī)例子程序(usbtest.exe)的源代碼。其中有幾個(gè)文件對(duì)利用ScanLogic公司提供的驅(qū)動(dòng)程序來(lái)開(kāi)發(fā)程序很有幫助。在頭文件slusb.h中含有如下函數(shù)原型:

          BOOL FAR PASCAL CloseUsbDev(VOID); //關(guān)閉USB口

          BOOL FAR PASCAL FindUsbDev(WORD wProd); //打開(kāi)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ā)送寫(xiě)控制指令

          BOOL UsbDataRead(DWORD n, PVOID pData); //讀數(shù)據(jù)塊

          BOOL UsbDataWrite(DWORD n, PVOID pData); //寫(xiě)數(shù)據(jù)塊

          只要在程序中靈活用好以上幾個(gè)函數(shù),做一些簡(jiǎn)單的數(shù)據(jù)采集工作是完全可行的,筆者就是借用這幾個(gè)函數(shù)在實(shí)際工作中成功完成了應(yīng)用系統(tǒng)的開(kāi)發(fā)。

          文件devioctl.h包含有slusb.h中需要的常數(shù)和宏的定義。在文件usbtest.cpp中定義了控制SL11R操作的指令代碼。

          SL11R是一種功能強(qiáng)大的USB接口,它的16位總線及DMA傳輸模式允許進(jìn)行大容量數(shù)據(jù)的高速傳輸,可以進(jìn)行高速數(shù)據(jù)采集。而且SL11R的編程簡(jiǎn)單,無(wú)需專(zhuān)用開(kāi)發(fā)裝置,開(kāi)發(fā)成本低,初次接觸USB的開(kāi)發(fā)人員可以很容易實(shí)現(xiàn)應(yīng)用系統(tǒng)的開(kāi)發(fā)。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉