一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

HID+CDC復(fù)合設(shè)備在WIN10的識(shí)別問(wèn)題

STM32單片機(jī) ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-05-30 17:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 問(wèn)題現(xiàn)象

有客戶(hù)使用STM32F405并參照ST官方USB標(biāo)準(zhǔn)庫(kù)下的HID+CDC的示例代碼做產(chǎn)品,發(fā)現(xiàn)在WIN7上使用得好好的,可放到WIN10上,CDC第一次能夠識(shí)別,再次拔插后就不能再識(shí)別,且此后無(wú)論插拔多少次都無(wú)法再識(shí)別,除非再次上電,又會(huì)重復(fù)上述現(xiàn)象,只有板子上電后第一次才能正確被識(shí)別,后續(xù)均不行。

2 問(wèn)題分析

客戶(hù)使用 ST官方示例代碼STM32_USB-Host-Device_Lib_V2.2.0\Project\USB_Device_Examples\Composite_Examples\CDC_HID_Composite當(dāng)我嘗試使用此示例代碼重現(xiàn)客戶(hù)所遇到的問(wèn)題時(shí),發(fā)現(xiàn)此代碼在WIN7運(yùn)行OK,但與客戶(hù)不同的是,我測(cè)試到的情況是在WIN10下CDC一次都無(wú)法識(shí)別,HID卻一直可以識(shí)別。

下面來(lái)分析下問(wèn)題,既然WIN7下HID和CDC都能正常識(shí)別,放在WIN10上才不正常,那么初步可以判斷,此問(wèn)題可能與WIN10操作系統(tǒng)的USB主機(jī)驅(qū)動(dòng)實(shí)現(xiàn)有關(guān)。

通過(guò)USB分析儀分析客戶(hù)代碼在WIN10下USB枚舉異常的數(shù)據(jù)通訊:

Figure 1 第一次USB枚舉過(guò)程

上圖是客戶(hù)代碼第一次正常枚舉的通訊數(shù)據(jù),從圖中可以看出,WIN10 USB主機(jī)在正常獲取HID報(bào)告描述符后,緊接著會(huì)獲取虛擬串口狀態(tài)和設(shè)置波特率,這樣就正常枚舉結(jié)束了。我們?cè)賮?lái)看看采集到的異常USB枚舉過(guò)程:

Figure 2 異常枚舉過(guò)程

上圖是WIN10下異常枚舉過(guò)程。從圖中可以看出,WIN10系統(tǒng)上USB主機(jī)在獲取到設(shè)備描述符和配置描述符后直接將設(shè)備掛起了。很明顯,WIN10系統(tǒng)的USB主機(jī)驅(qū)動(dòng)實(shí)現(xiàn)對(duì)設(shè)備描述符或者配置描述符的內(nèi)容并不認(rèn)可,才會(huì)導(dǎo)致無(wú)法識(shí)別HID+CDC復(fù)合設(shè)備。

我們不妨檢查下客戶(hù)代碼中的設(shè)備描述符:

Figure 3 獲取的設(shè)備描述符

復(fù)合設(shè)備的class,subclass,protocol

必須為0xef,0x02,0x01,這里

VID=0x0483,PID=0x3256(Cube庫(kù)下為0x5740,但這個(gè)不重要),接下來(lái)看配置描述符:

Figure 4 win10不能識(shí)別的配置描述符

由此可見(jiàn),客戶(hù)的描述符是HID interface + IAD + CDC interfaces結(jié)構(gòu)。對(duì)于WIN7,這種結(jié)構(gòu)可以識(shí)別,但對(duì)于WIN10,這種結(jié)構(gòu)WIN10未必能夠兼容,我們嘗試在HID interface外部加上一層IAD結(jié)構(gòu),使其成為IAD1 + HID interface + IAD2 + CDC interfaces結(jié)構(gòu),此時(shí)客戶(hù)的問(wèn)題得以解決,在WIN10也可以正確識(shí)別了,修改后的描述符結(jié)構(gòu)如下:

Figure 5 win10能夠正確識(shí)別的配置描述符

結(jié)束本篇實(shí)戰(zhàn)經(jīng)驗(yàn)之前,讓我們?cè)俅位仡橧AD的概念:

IAD(Interface Association Descriptor),為USB設(shè)備定義了一個(gè)標(biāo)準(zhǔn)來(lái)表述捆綁在一個(gè)邏輯功能(比如這里的CDC虛擬串口)上的多個(gè)接口的聚合的方法。USB協(xié)會(huì)分配了一個(gè)設(shè)備級(jí)別的類(lèi)編碼(即圖3中0xEF),使用IAD的設(shè)備必須使用它(如圖3的設(shè)備描述符);這樣可以很容易在設(shè)備枚舉時(shí)就能識(shí)別出采用了IAD的設(shè)備。IAD描述符通常放在它所要捆綁的多個(gè)接口的接口描述符之前。

3 結(jié)論

在WIN10系統(tǒng)中,建議復(fù)合設(shè)備每個(gè)邏輯功能的接口描述符前都搭載一個(gè)IAD描述符,不論這個(gè)邏輯功能是單個(gè)接口描述符完成(比如這里的HID功能)還是要由多個(gè)接口描述符完成(比如這里的CDC功能)。

聲明:本文內(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)投訴
  • HID
    HID
    +關(guān)注

    關(guān)注

    2

    文章

    135

    瀏覽量

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

    關(guān)注

    0

    文章

    57

    瀏覽量

    18210
  • Win10
    +關(guān)注

    關(guān)注

    2

    文章

    710

    瀏覽量

    41143

原文標(biāo)題:HID+CDC復(fù)合設(shè)備在WIN10的識(shí)別問(wèn)題

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    求助,關(guān)于USB復(fù)合設(shè)備HID+CDC串口問(wèn)題求解

    分別寫(xiě)了CustomHID的鍵鼠代碼、CDC代碼測(cè)試均無(wú)問(wèn)題,整合到一起后,插上電腦有時(shí)識(shí)別串口,有時(shí)識(shí)別HID,最終過(guò)不了幾秒HID
    發(fā)表于 03-07 06:11

    蘋(píng)果筆記本WIN10下面USB連接出錯(cuò)的原因?

    STM32L151CBU6的單片機(jī)碰到一個(gè)問(wèn)題,蘋(píng)果筆記本WIN10上STM32的HID識(shí)別識(shí)別
    發(fā)表于 04-22 08:21

    基于win10系統(tǒng)的HID I2C設(shè)備開(kāi)發(fā)

    基于win10系統(tǒng)的HID I2C設(shè)備開(kāi)發(fā),目前在網(wǎng)上很難找到實(shí)例,想做一個(gè)設(shè)備,類(lèi)似鼠標(biāo)可以win1
    發(fā)表于 10-23 15:50

    USB HID示例適用于WIN10

    我試著UVC上添加HID作為一個(gè)聯(lián)機(jī)設(shè)備,但是Wi10USB 3.0接口上,HID
    發(fā)表于 01-04 14:24

    基于stm32f107+CubeMx+Keil如何去實(shí)現(xiàn)HID+CDC組合設(shè)備

    ruhe使用stm32 cubemx配置生成CDCHID工程呢?基于stm32f107+CubeMx+Keil如何去實(shí)現(xiàn)HID+CDC組合設(shè)備呢?
    發(fā)表于 10-28 08:51

    怎么解決Win10系統(tǒng)無(wú)法識(shí)別USB設(shè)備的問(wèn)題?

    怎么解決Win10系統(tǒng)無(wú)法識(shí)別USB設(shè)備的問(wèn)題?
    發(fā)表于 11-01 07:42

    STM32F4使用USB復(fù)合設(shè)備HID+BULK+MSC無(wú)法啟動(dòng)是什么問(wèn)題

    rtthread使用usb復(fù)合設(shè)備生成HID+BULK+MSC后,win10電腦端MSC無(wú)法啟動(dòng),且根據(jù)MCU端點(diǎn)池分析端點(diǎn)也是夠用的,想知道這個(gè)是RTT代碼框架問(wèn)題還是什么問(wèn)題。
    發(fā)表于 10-27 10:59

    HIDCDC項(xiàng)目并到復(fù)合USB設(shè)備上時(shí)無(wú)法正常工作咋辦

    我有兩個(gè)獨(dú)立的項(xiàng)目 HIDCDC 可以正常工作。但是當(dāng)我想將兩個(gè)項(xiàng)目合并到復(fù)合 USB 設(shè)備上時(shí),HID 無(wú)法正常工作,卡住。只有
    發(fā)表于 12-28 10:19

    USB設(shè)備同時(shí)用作CDCHID時(shí)無(wú)法正常枚舉怎么解決?

    使用RT thread stdio的時(shí)候,USB配置成了復(fù)合設(shè)備CDCHID設(shè)備)無(wú)法正常枚舉設(shè)備
    發(fā)表于 08-20 16:41

    Win10 激活工具

    win10/win8激活工具
    發(fā)表于 02-07 16:14 ?56次下載

    win10電腦無(wú)法識(shí)別U盤(pán)應(yīng)該如何解決

    解決win10電腦無(wú)法識(shí)別U盤(pán)的方法我們需要對(duì)癥下藥,導(dǎo)致win10無(wú)法識(shí)別U盤(pán)的原因有很多,U盤(pán)本身問(wèn)題,電腦設(shè)置問(wèn)題,BIOS設(shè)置問(wèn)題,系統(tǒng)問(wèn)題等等。下面,我就告訴大家
    的頭像 發(fā)表于 12-07 11:55 ?1.4w次閱讀

    如何關(guān)閉win10的網(wǎng)絡(luò)搜索功能

    我們知道微軟Win10中,特別加強(qiáng)了系統(tǒng)的搜索功能,但Win10的搜索的確很難稱(chēng)得上好用。
    的頭像 發(fā)表于 12-29 15:40 ?3779次閱讀
    如何關(guān)閉<b class='flag-5'>win10</b>的網(wǎng)絡(luò)搜索功能

    HID_CDC復(fù)合設(shè)備WIN10識(shí)別問(wèn)

    HID_CDC復(fù)合設(shè)備WIN10識(shí)別問(wèn)題(電源技術(shù)發(fā)展綜述)-本文以STM32F405為例,
    發(fā)表于 08-04 18:23 ?20次下載
    <b class='flag-5'>HID_CDC</b><b class='flag-5'>復(fù)合</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>在</b><b class='flag-5'>WIN10</b>的<b class='flag-5'>識(shí)別問(wèn)</b>題

    PICKIT3 WIN10無(wú)法識(shí)別問(wèn)

    通過(guò)網(wǎng)上修改注冊(cè)表的方式?jīng)]有一點(diǎn)效果,后來(lái)發(fā)現(xiàn)跟系統(tǒng)可能有關(guān)系,換了一個(gè)新的WIN10系統(tǒng)就解決了解決方法:換新的win10操作系統(tǒng),測(cè)試版本:win10專(zhuān)業(yè)版64位(10.0 19042),在運(yùn)行輸入dxdiag可以查看版本.
    發(fā)表于 11-16 20:36 ?4次下載
    PICKIT3 <b class='flag-5'>WIN10</b>無(wú)法<b class='flag-5'>識(shí)別問(wèn)</b>題

    KT1404A語(yǔ)音芯片USB連電腦,win7正常識(shí)別WIN10無(wú)法識(shí)別USB設(shè)備

    KT1404A語(yǔ)音芯片畫(huà)的板子,USB連接電腦,win7可以正常識(shí)別到U盤(pán),WIN10提示無(wú)法識(shí)別USB設(shè)備(獲取
    的頭像 發(fā)表于 06-10 18:13 ?1207次閱讀
    KT1404A語(yǔ)音芯片USB連電腦,<b class='flag-5'>win</b>7正常<b class='flag-5'>識(shí)別</b><b class='flag-5'>WIN10</b>無(wú)法<b class='flag-5'>識(shí)別</b>USB<b class='flag-5'>設(shè)備</b>