HID+CDC复合设备在WIN10的识别问题

发布者:纯真年代最新更新时间:2024-06-20 来源: elecfans关键字:HID  CDC  复合设备  WIN10  识别问题 手机看文章 扫描二维码
随时随地手机看文章

1 问题现象

有客户使用STM32F405并参照ST官方USB标准库下的HID+CDC的示例代码做产品,发现在WIN7上使用得好好的,可放到WIN10上,CDC第一次能够识别,再次拔插后就不能再识别,且此后无论插拔多少次都无法再识别,除非再次上电,又会重复上述现象,只有板子上电后第一次才能正确被识别,后续均不行。


2 问题分析

客户使用 ST官方示例代码STM32_USB-Host-Device_Lib_V2.2.0ProjectUSB_Device_ExamplesComposite_ExamplesCDC_HID_Composite当我尝试使用此示例代码重现客户所遇到的问题时,发现此代码在WIN7运行OK,但与客户不同的是,我测试到的情况是在WIN10下CDC一次都无法识别,HID却一直可以识别。

下面来分析下问题,既然WIN7下HID和CDC都能正常识别,放在WIN10上才不正常,那么初步可以判断,此问题可能与WIN10操作系统的USB主机驱动实现有关。

通过USB分析仪分析客户代码在WIN10下USB枚举异常的数据通讯:

Figure 1 第一次USB枚举过程

上图是客户代码第一次正常枚举的通讯数据,从图中可以看出,WIN10 USB主机在正常获取HID报告描述符后,紧接着会获取虚拟串口状态和设置波特率,这样就正常枚举结束了。我们再来看看采集到的异常USB枚举过程:

Figure 2 异常枚举过程

上图是WIN10下异常枚举过程。从图中可以看出,WIN10系统上USB主机在获取到设备描述符和配置描述符后直接将设备挂起了。很明显,WIN10系统的USB主机驱动实现对设备描述符或者配置描述符的内容并不认可,才会导致无法识别HID+CDC复合设备。

我们不妨检查下客户代码中的设备描述符:

Figure 3 获取的设备描述符

复合设备的class,subclass,protocol

必须为0xef,0x02,0x01,这里

VID=0x0483,PID=0x3256(Cube库下为0x5740,但这个不重要),接下来看配置描述符:

Figure 4 win10不能识别的配置描述符

由此可见,客户的描述符是HID interface + IAD + CDC interfaces结构。对于WIN7,这种结构可以识别,但对于WIN10,这种结构WIN10未必能够兼容,我们尝试在HID interface外部加上一层IAD结构,使其成为IAD1 + HID interface + IAD2 + CDC interfaces结构,此时客户的问题得以解决,在WIN10也可以正确识别了,修改后的描述符结构如下:

Figure 5 win10能够正确识别的配置描述符

结束本篇实战经验之前,让我们再次回顾IAD的概念:

IAD(Interface Association Descriptor),为USB设备定义了一个标准来表述捆绑在一个逻辑功能(比如这里的CDC虚拟串口)上的多个接口的聚合的方法。USB协会分配了一个设备级别的类编码(即图3中0xEF),使用IAD的设备必须使用它(如图3的设备描述符);这样可以很容易在设备枚举时就能识别出采用了IAD的设备。IAD描述符通常放在它所要捆绑的多个接口的接口描述符之前。


3 结论

在WIN10系统中,建议复合设备每个逻辑功能的接口描述符前都搭载一个IAD描述符,不论这个逻辑功能是单个接口描述符完成(比如这里的HID功能)还是要由多个接口描述符完成(比如这里的CDC功能)。


关键字:HID  CDC  复合设备  WIN10  识别问题 引用地址:HID+CDC复合设备在WIN10的识别问题

上一篇:一文知道串口通信的帧同步问题
下一篇:智能汽车监控系统电路设计

推荐阅读最新更新时间:2024-11-12 12:20

Win10 Mobile移动支付并非全部可用 新机型列表公布
    6月16日消息,此前曾报道过微软钱包2.0曝光,外媒成功测试Lumia950刷卡 麦当劳 的消息,预计将在Win10 Mobile一周年更新正式推送后支持。虽然此前很多Lumia手机支持NFC,但目前看来只有部分新机型才支持NFC移动支付。 XDA成员测试Lumia1520运行   Windows 10 Mobile年度更新14361,安装上微软钱包2.0应用,但并不能使用NFC移动支付功能,说明此前老机型硬件芯片不支持移动支付新功能,微软MVP Stanislav Z整理出支持Win10 Mobile移动支付的机型目前确认有7款:   ? Lumia 640 XL (非LTE机型)   ? Lumia 650
[手机便携]
完成stm32上HID的应用
这个是公司的项目,以前基于usb的虚拟串口来做上下位机通信,由于usb平时也就刷参数和调试之用,也不很常用,外面反应usb有时会连不上stm32控制器,心里一直认为不是大问题,后来反应的多了,就重视这个事情了,虽然usb平时不用,但是用的时候只要出现异常掉线,就再也连不上去了,特别影响用户对我们产品的信心。 在网上找了很多资料,到现在也只能隐约确定是stm32官方的虚拟串口库有问题,我发现不同的电源板都会影响到usb虚拟串口的枚举,于是下定决心使用其他方式来做上下位机的连接,排除了usb虚拟串口,眼前的选择只有两个 1)usblib,这个是针对usb的上位机库,可以玩很多的花样,但是需要开发者稍稍熟悉usb协议,而且这个需要在
[单片机]
高通与联想达成新合作 开发骁龙版Win10移动PC
  据报道, 高通 公司今天宣布,已经与华硕、 联想 、惠普达成了一项新合作,开发由骁龙835处理器家族驱动的新系列移动PC。下面就随嵌入式小编一起来了解一下相关内容吧。    高通 周三在台北电脑展上宣布了这项协议。根据协议,华硕、 联想 和惠普将成为首批原始设备制造商(OEM),开发由骁龙835驱动的移动PC。 高通 骁龙835移动PC平台电路板   骁龙835的一个可能会吸引企业的亮点在于它集成了X16 LTE调制解调器,旨在处理千兆网速,几乎是第一代4G LTE设备速度的10倍。骁龙835是骁龙820的升级版,它更小、更轻,和骁龙820相比性价比更高。   高通称,骁龙835的面积效率提高30%,性能最多提高27
[嵌入式]
HiDM(德淮)引领旗舰级“微光快拍”体验下沉13MP主流手机
2017年以来,三星旗舰机S8系列、VIVO旗舰机Xplay6、X20等众多旗舰型手机开始流行Dual Pixel相位对焦功能 ,提升暗态环境下的对焦速度,由于大幅改善了用户直接体验而广受好评。今天,HiDM在全面获得了ON Semi的手机CIS技术和专利并成功消化后,推出了其“微光快拍”技术系列的第一款产品AR1337,第一次在13MP像素CIS(影像传感器)产品上实现了20 Lux左右快速、稳定的相位对焦这一旗舰机功能,由此开启主流手机快速对焦体验的全面升级。据了解,目前市场上尚未找到能接近AR1337“微光快拍”性能的13MP产品 。 和旗舰产品不同,以合理的成本在主流中高端CIS产品上实现这一重要体验,考验的是一家公司
[半导体设计/制造]
惠普新款Win10 Mobile手机曝光:Elite x3继任者
据德国媒体Dr Windows报道,他们收到消息表示惠普正在研发一款新的Win10 Mobile手机,作为惠普Elite X3的继任者,不同的是这次主要面向普通消费者市场。 ▲惠普Elite x3   新的Win10手机的研发来自惠普和微软的密切合作,新款惠普Win10手机也将用上之前Lumia手机的一些特色功能,比如ClearBlack屏幕、屏幕概览等等。   目前还没有详细信息披露,不过Dr Windows称,微软内部打算在2017年2月份宣布一款新的Windows Phone手机,可能就是惠普这一款。当然2月份正值MWC世界移动通信大会,惠普Elite x3也是在MWC上发布的。   消费者也愿意购买高端的Win10
[手机便携]
骁龙芯片Win10 PC将支持移动/电信4G:联通无缘
在Wintel生态的PC产品已经难有新意的时候,ARM突然和微软又走到了一起。这一次,雷德蒙德巨头痛改Windows RT的前非,支持在ARM架构的CPU下运行Win32 exe程序。 截止目前,市面上已经有惠普Envy X2、联想Miix 630、华硕Nova Go在内的三款骁龙835平台的Windows 10 S笔记本产品。 厂商表示,这些设备主打“Always Connected(全时连接)”,即在4G网络下保持20小时以上的续航。 不过,承载4G通讯基带是必须,但也得得到运营商的支持才行。 在宣布首批5家(含中国电信)后,高通公布了第二批支持Always Connected PC产品运营商名单:
[半导体设计/制造]
Win10旗舰机惠普Elite X3在美降价促销
    Windows Phone 8.1系统已经寿终正寝,Windows 10 Mobile系统也是让人看不到什么希望,微软似乎都战略性放弃了,Lumia手机都陆陆续续下线不见了,第三方厂商更没理由坚持下去。   如果你还想对Windows 10手机留个最后的念想,不妨来看看惠普的Elite X3,这可是第一款配备骁龙820处理器的旗舰级Windows手机,配置没得挑,表现也很抢眼,只可惜……   目前在微软美国官方商城内,在售的Windows手机已经只剩下五款,惠普Elite X3就是其中之一,还启动了超大幅度的降价促销,原价799美元,现在只需499美元,等于一下子就便宜了2000多元人民币。   除了骁龙820,惠普El
[手机便携]
串口转HID键盘鼠标芯片沁恒CH9329特点与引脚图
概述 沁恒CH9329 是一款串口转标准 USB HID 设备(键盘、鼠标、自定义 HID)芯片,根据不同的工作模式, 在电脑上可被识别为标准的 USB 键盘设备、USB 鼠标设备或自定义 HID 类设备。该芯片接收客户端发送过来的串口数据,并按照 HID 类设备规范,将数据先进行打包再通过 USB 口上传给计算机。通过提供的上位机软件,用户也可自行配置芯片工作模式、串口通信模式、串口通信波特率、多种超时时间、VID、PID,以及各种 USB 字符串描述符。下图为其一般应用框图。 特点 支持 12Mbps 全速 USB 传输,兼容 USBV2.0,内置晶振。 默认串口通信波特率为 9600bps,支持各种常见波特率。 支
[嵌入式]
串口转<font color='red'>HID</font>键盘鼠标芯片沁恒CH9329特点与引脚图
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved