日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

USB枚举

發(fā)布時(shí)間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB枚举 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

標(biāo)準(zhǔn)請(qǐng)求

標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求命令共有11個(gè),大小都是8個(gè)字節(jié),具有相同的結(jié)構(gòu)

ID請(qǐng)求碼說(shuō)明
0GET_STATUS用來(lái)返回特定接收者的狀態(tài)
1CLEAR_FEATURE用來(lái)清除或禁止接收者的某些特性
3SET_FEATURE用來(lái)啟用或激活命令接收者的某些特性
5SET_ADDRESS用來(lái)給設(shè)備分配地址
6GET_DESCRIPTOR用于主機(jī)獲取設(shè)備的特定描述符
7SET_DESCRIPTOR修改設(shè)備中有關(guān)的描述符,或者增加新的描述符
8GET_CONFIGURATION用于主機(jī)獲取設(shè)備當(dāng)前設(shè)備的配置值(注同上面的不同)
9SET_CONFIGURATION用于主機(jī)指示設(shè)備采用的要求的配置
10GET_INTERFACE用于獲取當(dāng)前某個(gè)接口描述符編號(hào)
11SET_INTERFACE用于主機(jī)要求設(shè)備用某個(gè)描述符來(lái)描述接口
12SYNCH_FRAME用于設(shè)備設(shè)置和報(bào)告一個(gè)端點(diǎn)的同步幀

?

?

枚舉過(guò)程

USB設(shè)備枚舉一般會(huì)經(jīng)過(guò)插入、供電、初始化、分配地址,配置,獲取設(shè)備描述符、獲取配置描述符、獲取字符串描述符和配去置設(shè)備這么幾個(gè)過(guò)程。

?

從下圖可以看出,兩次復(fù)位的過(guò)程。

?

在兩次復(fù)位中間,紅圈畫(huà)出的是多個(gè)同步幀。藍(lán)圈內(nèi)有密集的數(shù)據(jù)交互,可以推斷出這里是獲取設(shè)備描述符前8字節(jié)階段,是一次控制傳輸。

先看該控制傳輸?shù)慕⑦^(guò)程,這是一次獲取設(shè)備描述符的請(qǐng)求,由于不知道設(shè)備描述符長(zhǎng)度,請(qǐng)求長(zhǎng)度為0x40。


該控制傳輸?shù)臄?shù)據(jù)過(guò)程,返回設(shè)備描述符的內(nèi)容。

?

第二次復(fù)位之后,首先設(shè)置地址:0x0C

?

由于已經(jīng)設(shè)置完地址,所以開(kāi)始使用新地址,再次獲取設(shè)備描述符。第一次獲取設(shè)備描述之后已經(jīng)得知設(shè)備描述符長(zhǎng)度,可以發(fā)現(xiàn)本次獲取長(zhǎng)度變?yōu)?x12。

?

獲取配置描述符

?

獲取字符串描述符

?

獲取設(shè)備限定描述符

同時(shí)支持全速與高速的設(shè)備,必須有一個(gè)設(shè)備限定描述符。我的設(shè)備不支持高速模式,對(duì)該指令響應(yīng)掛起。

?

然后又重新獲取了設(shè)備描述符和配置描述符

?

設(shè)置配置號(hào)

?

我的設(shè)備是虛擬串口,下面開(kāi)始CDC類(lèi)相關(guān)操作

?

緊接著又重新獲取了字符串描述符

?

總結(jié)

以上是生活随笔為你收集整理的USB枚举的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。