乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      USB?設(shè)備枚舉的數(shù)據(jù)傳輸過程

       lchjczw 2012-03-15

      以下是一個程序枚舉數(shù)據(jù)傳輸?shù)娜^程: 

      (1) 主機檢測到有設(shè)備插上,總線復(fù)位 

      當(dāng)設(shè)備與主機連接時,主機就會檢測到一個連接條件,并且D+的數(shù)據(jù)線被拉至Vse以上2.5微秒(30個全速數(shù)據(jù)比特周期),主機就開始進行總線復(fù)位。 

      (2) 主機讀取設(shè)備描述符 

      主機使用默認地址(地址0)讀取設(shè)備描述符,在這里主機使用地址0對設(shè)備的設(shè)備描述符進行讀取。由于PDIUSBD12的端點0的緩沖區(qū)只有16個字節(jié),所以單片機就先發(fā)送16個字節(jié)的設(shè)備描述符。當(dāng)主機接收到這16個字節(jié)的字符后,就認為真正有設(shè)備連接了,即發(fā)送10字節(jié)的數(shù)據(jù)包到設(shè)備作為狀態(tài)應(yīng)答。 

      (3) 地址分配 

      在地址分配階段里,主機分配給設(shè)備一個地址。在以后的通信里設(shè)備就只對這個地址的信息作出應(yīng)答。 

      (4) 主機從新的地址獲取設(shè)備描述符 

      分配好了設(shè)備地址后,主機就從新的地址獲取設(shè)備描述符。由于受PDIUSBD12芯片的限制,設(shè)備分2次把設(shè)備描述符經(jīng)過端點0發(fā)送出去,第一次發(fā)送16個字節(jié),第2次發(fā)送2個字節(jié)。最后主機發(fā)送0字節(jié)的數(shù)據(jù)包作為狀態(tài)應(yīng)答。 

      (5) 主機讀取配置描述符 

      主機讀取完設(shè)備描述符后就讀取設(shè)備的配置描述符 

      (6) 讀取描述符集合 

      主機除了讀取設(shè)備描述符和配置描述符外,還要讀取接口描述符和端口描述符。在這里主機使用再次讀取配置的方法來讀取配置描述符、接口描述符和端點描述符的集合。 

      (7) 設(shè)置配置 

      主機讀取完描述符后,就需要對設(shè)備進行配置,使得設(shè)備從地址狀態(tài)進入配置狀態(tài)。 

      (8) 讀取配置狀態(tài) 

      主機設(shè)置完配置以后,設(shè)備即可使用。主機有時會對設(shè)備的配置狀態(tài)進行讀取。 

      (9) 讀取接口狀態(tài) 

      在配置完成后,主機會對接口的狀態(tài)進行讀取,這和讀取配置一樣也是可選的。 
      一個網(wǎng)友的例程:
      本系統(tǒng)中所謂USB設(shè)備即是指溫度測量和控制的設(shè)備,設(shè)備采用USB總線供電,采用D12芯片內(nèi)置的SoftConnect技術(shù)與USB總線連接。所謂SoftConnect意思是在程序中通過向D12發(fā)送命令實現(xiàn)USB設(shè)備的連接或者斷開連接,這里的連接并不是指USB電纜的插上或拔出,相反USB連接可以重新初始化而不需要拔出電纜。

      主機是通過檢測Vcc上拉電阻的變化來確定是否有設(shè)備連接的。在D12內(nèi)部集成了1.5kΩ的上拉電阻,默認狀態(tài)下不與Vcc相連,程序運行時可以向D12發(fā)送連接命令使1.5kΩ電阻連接到Vcc,這樣主機便檢測到有設(shè)備連接。

      它的枚舉過程分析如下。

      設(shè)備連接到總線后,設(shè)備從總線獲得5V電源,程序首先初始化,端口,然后向D12發(fā)出USB連接命令。主機檢測到設(shè)備連接。主機向設(shè)備發(fā)出第一個信號:總線復(fù)位??偩€復(fù)位產(chǎn)生一個中斷,并且D12器件在默認地址0處使能,以便在接下來的枚舉過程中使用地址0傳輸命令和數(shù)據(jù),同時中斷寄存器的總線復(fù)位位被置為1。在程序中的表現(xiàn)是,D12向主循環(huán)請求中斷,進入中斷處理程序USB_int_handler(),讀取中斷寄存器,確定中斷的類型,進行相應(yīng)的處理。

      主機使用默認地址0讀取設(shè)備描述符。

      具體過程是:主機向D12發(fā)送第一個Setup包,每個Setup包都是8個字節(jié),第一個包Get Descriptor的內(nèi)容為:80 06 00 01 00 00 40 00 ,數(shù)據(jù)為16進制表示。其中的40表示返回的數(shù)據(jù)最大長度為40H字節(jié)。此Setup包存儲在D12的端點0緩沖區(qū)中,并產(chǎn)生一個外部中斷。(這時在D12的中斷寄存器中保存了中斷的類型:端點0的OUT中斷,即中斷寄存器字節(jié)1的值應(yīng)為0x01)進入中斷服務(wù)程序后,由于D12端點0的緩沖區(qū)只有16個字節(jié),所以單片機就先發(fā)送16個字節(jié)的設(shè)備描述符。

      當(dāng)主機接收到這16個字節(jié)的字符后,就認為真正有設(shè)備連接了。

      地址分配。

      主機向D12發(fā)送第二個Setup包,這是一個含有指定地址的數(shù)據(jù)包,其內(nèi)容一般為:00 05 02 00 00 00 00 00 ,其中的02就表示主機為設(shè)備分配的地址為0x02,在以后的通信里設(shè)備就只對0x02地址的信息作出應(yīng)答。D12收到這個Setup包后同樣產(chǎn)生一個中斷(端點0的OUT中斷),需要注意的是單片機處理這個中斷時需要向主機返回一個長度為0的空數(shù)據(jù)包。

      主機從新的地址獲取設(shè)備描述符。

      主機收到設(shè)備發(fā)來的空的應(yīng)答數(shù)據(jù)包后,確認地址分配成功。然后主機向D12發(fā)送第三個Setup包,再次要求獲取設(shè)備描述符。這個Setup包的內(nèi)容一般是:80 06 00 01 00 00 12 00 。與上次不同的是,這次要求實際的描述符長度,其中的12(十六進制數(shù))表示要求得到全部18字節(jié)的設(shè)備描述符。因為每次只能發(fā)送16字節(jié),因此程序中要分兩次完成此要求。第一次16字節(jié),第二次2字節(jié)。

      主機讀取配置描述符。

      成功得到18字節(jié)的設(shè)備描述符后,主機向D12發(fā)送第四個Setup包,要求得到設(shè)備的配置描述符。這個Setup包的數(shù)據(jù)為:80 06 00 02 00 00 09 00 。其中的09指定設(shè)備返回9字節(jié)數(shù)據(jù),這正是配置描述符的長度。

      讀取描述符集合。

      成功得到9字節(jié)的配置描述符后,主機向D12發(fā)送第五個Setup包,要求得到設(shè)備的配置描述符、接口描述符、端點描述符的集合。這次Setup包的內(nèi)容是:80 06 00 02 00 00 FF 00 。由于不知道描述符集合的真實長度,因此它要求得到256字節(jié)。

      到這一步,主機現(xiàn)在應(yīng)該已經(jīng)發(fā)現(xiàn)新硬件并為新設(shè)備安裝好驅(qū)動程序。對于以上過程,主機是在總線驅(qū)動層處理,下面的一步,也是典型枚舉過程的最后一步,就需要設(shè)備驅(qū)動程序來做了。

      數(shù)值配置。主機得到各種描述符之后,認為設(shè)備的信息已經(jīng)齊全,便對設(shè)備進行配置,使設(shè)備從地址狀態(tài)進入配置狀態(tài)。

      主機向D12發(fā)送第六個Setup包,其數(shù)據(jù)為:00 09 01 00 00 00 00 00 。程序中需要調(diào)用Set Configuration()函數(shù)處理此事件,允許所有端點進入工作狀態(tài)。

      至此,USB枚舉過程結(jié)束,設(shè)備可以正常使用了。在這個過程中D12指示燈根據(jù)通信的狀況間歇閃爍。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多