91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CDC設(shè)備枚舉過(guò)程解析

GReq_mcu168 ? 來(lái)源:面包板社區(qū) ? 作者:面包板社區(qū) ? 2020-10-09 11:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇筆記將詳述 CDC設(shè)備枚舉過(guò)程,讓大家對(duì)整體的枚舉過(guò)程有個(gè)概念。

為了更好到理解并分析接下來(lái)的通信流程,魚(yú)鷹首先介紹標(biāo)準(zhǔn)請(qǐng)求和描述符。

上篇筆記了解了標(biāo)準(zhǔn)請(qǐng)求和描述符是怎么回事,但還不夠,還需要更細(xì)節(jié)的東西。

首先從標(biāo)準(zhǔn)請(qǐng)求的8字說(shuō)起:

第一字節(jié):位圖請(qǐng)求信息。 D7 代表了接下來(lái)傳輸?shù)臄?shù)據(jù)是從主機(jī)到從機(jī),還是從機(jī)到主機(jī)的。我們知道枚舉過(guò)程使用控制傳輸,有三個(gè)階段,如果有數(shù)據(jù)階段,那么這個(gè)階段的DATA數(shù)據(jù)是由主機(jī)發(fā)出還是由從機(jī)發(fā)出,就看這個(gè)位的值了。 當(dāng)然了,因?yàn)槊恳淮问聞?wù)都有令牌包存在,所以IN令牌后的數(shù)據(jù)一定是由從機(jī)發(fā)出的,但是標(biāo)準(zhǔn)請(qǐng)求的這個(gè)位可以讓從機(jī)做好發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)的準(zhǔn)備。

D6~D5:代表了請(qǐng)求類(lèi)型。 請(qǐng)求類(lèi)型代表本次請(qǐng)求屬于什么類(lèi)型的請(qǐng)求。目前有三類(lèi),標(biāo)準(zhǔn)、類(lèi)、廠商。標(biāo)準(zhǔn)請(qǐng)求主要有:

除了標(biāo)準(zhǔn)請(qǐng)求,還有類(lèi)請(qǐng)求,比如 CDC 類(lèi),用到了三種類(lèi)請(qǐng)求: SET_LINE_CODING(0x20) 設(shè)置串口波特率、起始位、停止位、流控等信息 GET_LINE_CODING(0x21) 獲取串口波特率、起始位、停止位、流控等信息 SET_CONTROL_LINE_STATE(0x22)用于設(shè)置串口的狀態(tài) 廠商請(qǐng)求一般不會(huì)用于標(biāo)準(zhǔn)設(shè)備,CDC 類(lèi)就沒(méi)有用到(如果需要的話,應(yīng)該也是能發(fā)出的)。 D4~D0:代表了請(qǐng)求類(lèi)型。 因?yàn)檎?qǐng)求的內(nèi)容可能是面向設(shè)備,也可能面向接口、端點(diǎn),所以這個(gè)域確定了本次請(qǐng)求面向的對(duì)象,這樣設(shè)備可以根據(jù)請(qǐng)求的對(duì)象作相應(yīng)的措施。 第二字節(jié):bRequest:請(qǐng)求代碼,即上面的幾種請(qǐng)求代碼,每個(gè)請(qǐng)求都會(huì)有請(qǐng)求代碼,代表了具體請(qǐng)求。 第三四字節(jié):wValue:這個(gè)雙字節(jié)主要根據(jù)bReuest來(lái)確定含義,比如如果是獲取描述符(GET_DESCRIPTOR),而描述符有很多種,比如設(shè)備描述符、字符串描述符、配置描述符,那么到底主機(jī)要獲取什么描述符?就看這個(gè)雙字的高字節(jié)了。如果高字節(jié)為 1,代表獲取設(shè)備描述符,高字節(jié)為 2,代表獲取配置描述符。 總之這個(gè)值的具體含義需要根據(jù)請(qǐng)求代碼來(lái)確定,而每一種請(qǐng)求代碼都會(huì)明確規(guī)定wValue具體含義。 第五六字節(jié):wIndex:這個(gè)值和上面一樣,也是需要請(qǐng)求代碼來(lái)確定含義的。比如在獲取產(chǎn)品序列號(hào)字符串時(shí),這個(gè)值代表了語(yǔ)言 ID,告訴從機(jī)需要返回什么哪種字符串,當(dāng)值為0x0409時(shí)代表英語(yǔ)。 第七八字節(jié):wLenth:這個(gè)值代表接下來(lái)主機(jī)會(huì)發(fā)送或者需要接收字節(jié)長(zhǎng)度。 一般來(lái)說(shuō),主機(jī)會(huì)根據(jù)需要在接下來(lái)的數(shù)據(jù)階段獲取或發(fā)送指定長(zhǎng)度數(shù)據(jù),主機(jī)發(fā)送的數(shù)據(jù)因?yàn)槭怯芍鳈C(jī)控制的,所以可以很容易確定這個(gè)值,但是因?yàn)橹鳈C(jī)并不清楚從機(jī)到底有多少數(shù)據(jù)會(huì)返回,所以這個(gè)值可能會(huì)比實(shí)際的更大。 比如第一次獲取設(shè)備描述符時(shí),因?yàn)橹鳈C(jī)不清楚這個(gè)描述符多長(zhǎng),一般會(huì)比實(shí)際的描述符長(zhǎng)度更大,所以如果從機(jī)沒(méi)有足夠的數(shù)據(jù)返回,那么只要返回從機(jī)能返回的最大數(shù)據(jù)即可; 但是如果主機(jī)請(qǐng)求返回的數(shù)據(jù)比從機(jī)實(shí)際的數(shù)據(jù)短,那么從機(jī)就按照主機(jī)的要求來(lái)就行,不必把自己所有的數(shù)據(jù)返回。 以上就是標(biāo)準(zhǔn)請(qǐng)求的內(nèi)容。設(shè)備返回的描述符通用格式比較簡(jiǎn)單: 第一字節(jié):描述符總長(zhǎng)度(包括本字節(jié)) 第二字節(jié):描述符類(lèi)型(對(duì)應(yīng)標(biāo)準(zhǔn)請(qǐng)求wValue的高字節(jié)) 其余字節(jié)就代表了這個(gè)描述符的具體內(nèi)容了,每種描述的具體內(nèi)格式都不相同,需要根據(jù)實(shí)際的描述符確定,比如:

bcdUSB 代表 USB 版本號(hào),比如 0x0110,代表 USB 1.1 版本(bcd編碼,即寫(xiě)成十六進(jìn)制時(shí)的版本號(hào)),這樣主機(jī)就知道這個(gè)設(shè)備只支持全速 12 Mbit/s 那么關(guān)于關(guān)于高速的請(qǐng)求qualifier(wValue 高字節(jié)為6)就不用發(fā)送到該設(shè)備了,因?yàn)榘l(fā)送給設(shè)備也肯定會(huì)被回復(fù) STALL,那么主機(jī)就沒(méi)必要浪費(fèi)這個(gè)帶寬了。 但是如果你這里寫(xiě)成 0x0200,那么這個(gè)設(shè)備可能是全速的,也可能是高速的,那么主機(jī)就會(huì)發(fā)送請(qǐng)求來(lái)詢問(wèn)是否支持高速,如果設(shè)備不支持,回復(fù)的描述符設(shè)置為0即可。 接下來(lái)的三個(gè)字節(jié)根據(jù)設(shè)備屬于什么類(lèi)別來(lái)確定,比如 CDC 類(lèi),這三個(gè)值分別為 0x02 ,0x00,0x00。 bMaxPacketSize0 確定了端點(diǎn)0的數(shù)據(jù)包大小,主機(jī)可以據(jù)此知道設(shè)備的傳輸能力,進(jìn)而控制傳輸數(shù)據(jù)包的大小,不然主機(jī)一次發(fā)送的數(shù)據(jù)包太大,那么從機(jī)可能無(wú)法正確接收。 idVendor 由 USB-IF 分配,這個(gè)值確定了這個(gè)設(shè)備屬于哪個(gè)廠家的產(chǎn)品。比如 0xC251,代表了KEIL,只要主機(jī)看到了這個(gè)代號(hào),就知道這個(gè)設(shè)備由哪個(gè)廠家生產(chǎn)的了,因?yàn)檫@個(gè)在USB-IF中掛了號(hào),大家都可以從網(wǎng)上查到。 和必須購(gòu)買(mǎi)的 idVendor 不同卻類(lèi)似的是,iProduct 是由廠家自己定義的,可以根據(jù)這個(gè)來(lái)確定這個(gè)設(shè)備屬于哪個(gè)產(chǎn)品。 這個(gè)USB設(shè)備更新到哪一個(gè)版本了?通過(guò)bcdDevice 即可確定,也是bcd 編碼。 iManufacture 代表廠商的字符串序號(hào),一般都是 1,這樣當(dāng)主機(jī)需要獲取廠商的字符串,只要在wValue 的低字節(jié)為設(shè)置為 1,那么從機(jī)就知道該發(fā)送什么字符串給主機(jī)了。 iProject 代表產(chǎn)品字符串序號(hào),一般為2。 iSerialNumber 代表產(chǎn)品序列字符串序號(hào),一般為3。 為什么從 1 開(kāi)始編號(hào),而不是從 0 開(kāi)始呢,這是因?yàn)槿绻O(shè)備沒(méi)有這個(gè)字符串的話,可以設(shè)置該值為 0,這樣主機(jī)就知道沒(méi)有這個(gè)字符串,也就不會(huì)主動(dòng)獲取這個(gè)字符串。 當(dāng)然了,即使你告訴了主機(jī)有這個(gè)字符串存在,主機(jī)也是按照需求來(lái)獲取的,不一定會(huì)把所有的字符串描述符都獲取回來(lái)。 iNumConfigurations 代表了設(shè)備有多少種配置,前面說(shuō)過(guò),設(shè)備可能會(huì)在不同時(shí)刻的功能表現(xiàn)不一樣,那么可以通過(guò)該值確定這個(gè)設(shè)備有多少種配置,一般而言這個(gè)值是1,即只有一種配置。畢竟復(fù)合設(shè)備可以同時(shí)滿足多功能的要求,沒(méi)必要使用多種配置來(lái)達(dá)到多種功能的要求。 以上就是設(shè)備描述符的具體含義,其他描述符比如配置描述符、接口描述符、端點(diǎn)描述符等就自行看魚(yú)鷹給的資料理解即可,只要找到對(duì)應(yīng)描述符的格式說(shuō)明,分析代碼中的描述符數(shù)據(jù)也不是那么難的事情。 接下來(lái)魚(yú)鷹介紹枚舉總體流程。 主機(jī)在對(duì)設(shè)備復(fù)位后,首先會(huì)請(qǐng)求獲取設(shè)備描述符。這個(gè)描述符一般為18個(gè)字節(jié),但是主機(jī)一開(kāi)始并不知道這個(gè)描述符多大(雖然一般是18,但萬(wàn)一不是呢),所以一般主機(jī)會(huì)以更大的請(qǐng)求長(zhǎng)度來(lái)獲取,而從機(jī)根據(jù)實(shí)際長(zhǎng)度18字節(jié)返回即可。 現(xiàn)在我們從多個(gè)維度看看這次交互的數(shù)據(jù)情況: 從傳輸事務(wù)的角度看:

從包的角度看:

從DATA內(nèi)容看: 主機(jī)發(fā)送數(shù)據(jù):80 06 00 01 00 00 40 00

從機(jī)回復(fù)數(shù)據(jù):

從D+、D-數(shù)據(jù)線電平變化的角度: 主機(jī)發(fā)送(建立階段):

從機(jī)回復(fù)(數(shù)據(jù)階段):

狀態(tài)階段:

現(xiàn)在把整個(gè)枚舉過(guò)程大概圖解一遍(其他請(qǐng)求交互的具體情況請(qǐng)看魚(yú)鷹提供的資料):

數(shù)據(jù)流截?。~(yú)鷹提供的《CDC設(shè)備完整數(shù)據(jù)通信.txt》):

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4832

    瀏覽量

    73715
  • CDC
    CDC
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    18568

原文標(biāo)題:【圖解USB】USB 之CDC 設(shè)備枚舉過(guò)程詳解

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CDC391時(shí)鐘驅(qū)動(dòng)器:特性、參數(shù)與應(yīng)用解析

    CDC391時(shí)鐘驅(qū)動(dòng)器:特性、參數(shù)與應(yīng)用解析 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘驅(qū)動(dòng)器是確保時(shí)鐘信號(hào)準(zhǔn)確、高效分配的關(guān)鍵組件。今天,我們就來(lái)深入了解一下德州儀器(Texas Instruments)的CDC
    的頭像 發(fā)表于 02-10 16:20 ?303次閱讀

    CDC340:高性能1線轉(zhuǎn)8線時(shí)鐘驅(qū)動(dòng)器的深度解析

    CDC340:高性能1線轉(zhuǎn)8線時(shí)鐘驅(qū)動(dòng)器的深度解析 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘驅(qū)動(dòng)器是確保系統(tǒng)時(shí)鐘信號(hào)準(zhǔn)確、穩(wěn)定分配的關(guān)鍵組件。今天,我們來(lái)深入探討德州儀器(Texas Instruments
    的頭像 發(fā)表于 02-10 15:50 ?292次閱讀

    Texas Instruments CDC351/CDC351I 時(shí)鐘驅(qū)動(dòng)器:特性、參數(shù)與應(yīng)用詳解

    Texas Instruments CDC351/CDC351I 時(shí)鐘驅(qū)動(dòng)器:特性、參數(shù)與應(yīng)用詳解 在電子設(shè)備的設(shè)計(jì)中,時(shí)鐘信號(hào)的穩(wěn)定和精準(zhǔn)分配至關(guān)重要。Texas Instruments(TI
    的頭像 發(fā)表于 02-10 14:55 ?146次閱讀

    CDC2516:高性能鎖相環(huán)時(shí)鐘驅(qū)動(dòng)器的深度解析

    CDC2516:高性能鎖相環(huán)時(shí)鐘驅(qū)動(dòng)器的深度解析 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘驅(qū)動(dòng)器是確保系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵組件之一。今天,我們就來(lái)詳細(xì)探討一款高性能的鎖相環(huán)時(shí)鐘驅(qū)動(dòng)器——CDC2516。 文件下載
    的頭像 發(fā)表于 02-10 14:50 ?116次閱讀

    高性能時(shí)鐘緩沖器 CDC318A:特性、參數(shù)與應(yīng)用解析

    高性能時(shí)鐘緩沖器 CDC318A:特性、參數(shù)與應(yīng)用解析 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘緩沖器對(duì)于確保系統(tǒng)時(shí)鐘信號(hào)的穩(wěn)定和準(zhǔn)確傳輸至關(guān)重要。今天,我們就來(lái)詳細(xì)探討一下德州儀器(Texas Instruments
    的頭像 發(fā)表于 02-10 14:40 ?213次閱讀

    深入解析 CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器

    深入解析 CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘發(fā)生器是確保系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵組件之一。今天,我們就來(lái)詳細(xì)探討 Texas Instruments 推出
    的頭像 發(fā)表于 02-09 16:10 ?150次閱讀

    深入解析 CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器

    深入解析 CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘發(fā)生器的性能對(duì)于整個(gè)系統(tǒng)的穩(wěn)定性和可靠性起著至關(guān)重要的作用。今天,我們就來(lái)深入了解一款由德州儀器(TI)推出的高性能低抖動(dòng)
    的頭像 發(fā)表于 02-09 16:05 ?129次閱讀

    TI CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器的深度解析

    TI CDC421Axxx:高性能低抖動(dòng)時(shí)鐘發(fā)生器的深度解析 在電子設(shè)備設(shè)計(jì)中,時(shí)鐘信號(hào)的穩(wěn)定性和準(zhǔn)確性對(duì)整個(gè)系統(tǒng)的性能起著至關(guān)重要的作用。今天,我們就來(lái)深入探討德州儀器(TI)推出的一款高性能
    的頭像 發(fā)表于 02-09 16:05 ?103次閱讀

    CDC6Cx:低功耗LVCMOS輸出BAW振蕩器的全方位解析

    CDC6Cx:低功耗LVCMOS輸出BAW振蕩器的全方位解析 在電子設(shè)計(jì)中,一款性能優(yōu)秀的振蕩器對(duì)于系統(tǒng)的穩(wěn)定運(yùn)行至關(guān)重要。今天我們就來(lái)深入了解一下德州儀器(TI)的CDC6Cx低功耗LVCMOS
    的頭像 發(fā)表于 02-06 14:55 ?281次閱讀

    CDC6Cx-Q1低功耗LVCMOS輸出BAW振蕩器:技術(shù)解析與應(yīng)用指南

    CDC6Cx-Q1低功耗LVCMOS輸出BAW振蕩器:技術(shù)解析與應(yīng)用指南 在電子設(shè)計(jì)領(lǐng)域,時(shí)鐘振蕩器作為關(guān)鍵組件,其性能直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。今天,我們要深入探討的是德州儀器(TI
    的頭像 發(fā)表于 02-06 11:35 ?214次閱讀

    使用nRF52840芯片的USB Host 功能參考例程

    Host 開(kāi)發(fā)的核心,需重點(diǎn)關(guān)注: USB Host 控制器初始化(nrf_usb.h 或 Zephyr 的 usb.h); 設(shè)備枚舉流程(設(shè)備連接檢測(cè)、描述符解析); 接口配置與端
    發(fā)表于 10-31 12:47

    Texas Instruments CDC6CEVM評(píng)估模塊數(shù)據(jù)手冊(cè)

    系統(tǒng)原型設(shè)計(jì)。板載邊緣裝接SMA端口可訪問(wèn)CDC6C的可配置時(shí)鐘輸出,因此該器件可以使用市售的同軸電纜、適配器或巴倫(不含)與測(cè)試設(shè)備和參考板連接。
    的頭像 發(fā)表于 07-09 14:33 ?822次閱讀
    Texas Instruments <b class='flag-5'>CDC</b>6CEVM評(píng)估模塊數(shù)據(jù)手冊(cè)

    如何重新啟動(dòng) FX3S 的枚舉過(guò)程?

    。 然而,我面臨的一個(gè)問(wèn)題是,如果 FX3S 最初沒(méi)有連接到 USB 3.0 電纜和 PC,它就不會(huì)重新啟動(dòng)枚舉過(guò)程。 在這種情況下,有人能指導(dǎo)我如何重新啟動(dòng) FX3S 的枚舉過(guò)程嗎? 或者如果 USB 速度不是超高速,如何在 10 秒后重新啟動(dòng)
    發(fā)表于 05-19 07:34

    2.0 USB集線器CYUSB2304-68LTXI在重新枚舉全速設(shè)備時(shí)出現(xiàn)錯(cuò)誤怎么解決?

    我剛剛構(gòu)建的設(shè)計(jì)中有幾個(gè) USB 2.0 集線器 (CYUSB2304-68LTXI)。 每個(gè)集線器都連接有多個(gè)全速藍(lán)牙設(shè)備。 當(dāng)我重新枚舉其中一個(gè)全速設(shè)備時(shí),每次重新枚舉都會(huì)得到超過(guò)
    發(fā)表于 05-19 07:32

    STM32 HID和CDC組合設(shè)備無(wú)法枚舉成功是哪里出了問(wèn)題?

    想用STM32F103C8T6最小系統(tǒng)板試驗(yàn)HID和CDC組合設(shè)備,單獨(dú)的HID和CDC都能枚舉成功,但是參考網(wǎng)上多篇大佬的組合設(shè)備的教程,
    發(fā)表于 03-10 07:27