在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

  • <object id="1jp1h"></object>
    <address id="1jp1h"><nav id="1jp1h"></nav></address>
  • <label id="1jp1h"></label>
    
    

    <bdo id="1jp1h"></bdo>

    新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > USB數(shù)據(jù)通信接口模塊的程序設(shè)計

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計

    作者: 時間:2016-12-21 來源:網(wǎng)絡(luò) 收藏

    中斷服務(wù)處理函數(shù)代碼如下

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計3

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計4

    4.主端點操作

    這部分代碼較多,包括各個端口的發(fā)送/接收函數(shù),端點1和主端點(端點2)的收發(fā)函數(shù)相對較簡單。

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計5

    (2)主端點接收函數(shù)。

    5.程序說明

    在端點0的發(fā)送函數(shù)中,MCU首先需要通過讀DI2的最后處理狀態(tài)寄存器,清0Control_In中斷標志位,接著 MCU在確認DI2處于傳輸模式后進行數(shù)據(jù)所的發(fā)送。由于D12的控件端點只有16bit,如果傳輸?shù)拈L度大于 16bit,MCU在傳輸階段就必須控制數(shù)據(jù)的數(shù)量,其流程如圖2所示。MCU必須檢查要發(fā)送到主機的當前和剩余 的數(shù)據(jù)大小,如果剩下的字節(jié)數(shù)大于16,MCU將先發(fā)送16字節(jié)并減去參考長度(要求的長度)16。

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

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計0

    圖2 控制點發(fā)送函數(shù)流程

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

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

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

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

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

    USB數(shù)據(jù)通信接口模塊的程序設(shè)計1

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


    上一頁 1 2 下一頁

    評論


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

    關(guān)閉