新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > USB協(xié)議深入分析 配置

        USB協(xié)議深入分析 配置

        作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
        前面已經(jīng)介紹設(shè)置USB的設(shè)備地址,接著下來是做什么呢?其實有了設(shè)備地址后,主控器還會再次發(fā)送獲取上面已經(jīng)讀取的設(shè)備描述符下來,如下:
        80 06 00 01 00 00 12 00
        然后USB設(shè)備也再次回應(yīng)它,但這次發(fā)送的長度是0x0012了,不再是第一次64個字節(jié)長度了。
        接著USB設(shè)備就返回下面的描述符給主控器,也就是第一次已經(jīng)發(fā)送的設(shè)備描述符,如下:
        12 01 10 01 00 00 00 40 00 80 00 80 00 01 04 2C 4A 01
        這樣分配地址之后,再次獲取設(shè)備描述符成功了,接著下來就是主控器獲取配置描述符。下面就是收到的配置描述符數(shù)據(jù):
        80 06 00 02 00 00 09 00
        分析上面的數(shù)據(jù)如下:
        bmRequestType是80,表示方向USB設(shè)備發(fā)送給主控器,接收設(shè)備是USB設(shè)備。
        bRequest是06,表示這是獲取描述符。GET_DESCRIPTOR 6
        wValue是00 02。低字節(jié)表示偏移地址00,高字節(jié)表示描述符的類型。如下:
        CONFIGURATION2
        所以這里的返回的設(shè)備描述符是配置描述符。
        wIndex是00 00。
        wLength是09 00。它表示返回描述符的長度。這里是9個字節(jié)。
        接著下來,就是設(shè)備返回配置描述符給主控器,發(fā)送的數(shù)據(jù)如下:
        09 02 22 00 01 01 00 01 32
        發(fā)送的數(shù)據(jù)是按下面的結(jié)構(gòu)來定義,這也是在USB協(xié)議里定義的格式。如下:
        typedefstruct_USB_CONFIGURATION_DESCRIPTOR{
        BYTEbLength;
        BYTEbDescriptorType;
        WORDwTotalLength;
        BYTEbNumInterfaces;
        BYTEbConfigurationValue;
        BYTEiConfiguration;
        BYTEbmAttributes;
        BYTEMaxPower;
        }USB_CONFIGURATION_DESCRIPTOR;
        bLength是配置的長度,也就是配置結(jié)構(gòu)的整個長度。在這里9個字節(jié)。
        bDescriptorType是描述符的類型,這里配置描述符,所以設(shè)置為02。
        wTotalLength是所有配置設(shè)置的結(jié)構(gòu)長度。包括配置描述符、接口描述符、HID或者其它描述符和端點描述符的長度。這里是22 00,也就是0x0022個字節(jié)。
        bNumInterfaces是接口個數(shù),這里一個。
        bConfigurationValue是配置的個數(shù),當(dāng)設(shè)置配置時發(fā)送的值。這時設(shè)置為1個配置。
        iConfiguration是說明配置的字符的偏移值。這里是0。
        bmAttributes是配置特性,D7位保留。D6位是說明是否自供電。D5位是否支持遠程喚醒。D4—D0是保留,設(shè)置為0。
        MaxPower是使用的功率,它采用電流來表示。每2mA為單位,比如它的值是50時就表示是100mA的電流消耗。
        通過這樣說明,主控器就知道這個設(shè)備是什么樣的設(shè)備,有多少功能。


        關(guān)鍵詞: USB協(xié)議配

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 衡南县| 松阳县| 嘉峪关市| 晋城| 紫金县| 都昌县| 南澳县| 旬阳县| 张掖市| 安平县| 和林格尔县| 鹤庆县| 越西县| 都匀市| 会同县| 焦作市| 五莲县| 连城县| 静海县| 陇川县| 京山县| 乌海市| 乌兰县| 高要市| 大洼县| 府谷县| 林甸县| 木里| 鄄城县| 潼关县| 宁河县| 万山特区| 尉氏县| 平顶山市| 海淀区| 收藏| 阿拉善左旗| 天柱县| 博白县| 彭州市| 稻城县|