<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > USB數據通信接□模塊的程序設計

USB數據通信接□模塊的程序設計

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

  當下一個(gè)Control_In標志來(lái)時(shí),MCU將確定剩余的字節是否為0,如果已經(jīng)沒(méi)有數據要發(fā)送,MCU需要發(fā)送一 個(gè)空的包以指示主機數據已發(fā)送完畢。


圖2 控制點(diǎn)發(fā)送函數流程

  · 如果是一個(gè)有效的請求,MCU必須向控制輸出端點(diǎn)發(fā)送應答建立命令,以重新使能下一個(gè)建立階段。接 下來(lái),MCU需要證實(shí)控制傳輸是控制讀還是寫(xiě),這可以通過(guò)讀建立包中bmRequestType的第8位來(lái)實(shí)現。

  · 如果控制傳輸是一個(gè)控制讀類(lèi)型,那就是說(shuō)器件需要在下一個(gè)數據階段向主機發(fā)回數據包。MCU需要設 置一個(gè)標志以指示USB設備現在正處于傳輸模式,即準備在主機發(fā)送請求時(shí)發(fā)送數據。建立階段結束之后, 主機會(huì )執行數據階段,D12等待接收Control In包。

  · 如果建立包為SetesDescriptor()請求,那么建立包中的控制傳輸將指示此包為控制寫(xiě)類(lèi)型。在執行 完Setpescnptor請求過(guò)程后,MCU等待數據階段主機發(fā)送一個(gè)ControlOut標志,MCU從D12緩沖區中減去數據 。流程現在處于ControleOut處理程序的右端,MCU首先確認D12是否處于USB Receive模式,然后MCU通過(guò)檢 查選擇控制輸出端點(diǎn),確認緩沖區是否已滿(mǎn),并將數據從緩沖區讀出。

  設備標準請求STANDARDASK,C。此部分代碼用于實(shí)現各種USB協(xié)議的標準請求。對應每一個(gè)請求,用不同 的函數實(shí)現。在主循環(huán)中,當建立包標志為真時(shí),利用control_handler()函數進(jìn)入不同的標準請求處理 函數。雖然此處函數較多,但每個(gè)函數結構較簡(jiǎn)單,在此不做詳細說(shuō)明。

  主循環(huán)MAINLOOP.C。主循環(huán)檢查事件標志并進(jìn)入對應的子程序進(jìn)行進(jìn)一步的處理。在主循環(huán)中,MCU首先 對其所有端口、存儲區、定時(shí)器和中斷服務(wù)程序進(jìn)行初始化,之后MCU將重新連接USB,包括將SofteCo nnect寄存器設置為ON。這些過(guò)程是很重要的,它確保了在MCU準各好服務(wù)D12之前,D12不會(huì )進(jìn)行操作。初始 化后,進(jìn)入循環(huán),輪詢(xún)各種狀態(tài)。當輪詢(xún)到了檢測建立包時(shí),它確認建立標志是否被中斷服務(wù)程序所置位。 如果建立標志被置位,它將向協(xié)議層發(fā)送一個(gè)器件請求進(jìn)行處理。圖3所示為主程序在前臺執行的流程。


圖3 主循環(huán)流程

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>