首页|资源下载
登录|注册

您现在的位置是:首页 > 技术阅读 >  【图解USB】USB 之CDC 设备枚举过程详解(2)

【图解USB】USB 之CDC 设备枚举过程详解(2)

时间:2022-09-29

来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

ID   :emOsprey



虽然鱼鹰提供的资料已经把图解资料分享出来了(Osprey文件夹),但因为这个系列就是图解系列,所以还是把 CDC 枚举过程中涉及到的所有标准请求和描述符都展现一下好了。在鱼鹰提供的例程资料中,标准请求通过一个结构体体现:以下是CDC枚举过程涉及到的所有标准请求和对应的描述符:获取设备描述符:设置地址这次事务从机不需要回复或接收数据,所以没有数据阶段,只有状态阶段。获取配置描述符:这个描述符最长,如果只是单纯的获取配置描述符的话,其实没有多少,但实际上,主机大部分情况下会一次性要求返回包括配置描述符、接口描述符、端点描述等描述符。这样主机才能根据当前的配置描述符确定接口和端点信息。因为接口和端点描述符依赖配置描述符的信息,所以从机需要把所有信息一次提供给主机,这样可以保证数据的完整性(否则可能在交互时该配置下的描述符和别的配置下描述符错乱,毕竟 USB 可是支持多种配置的)。这里面比较难理解的是Union相关描述符,简单理解就是,因为CDC有两个接口,而主机一般会把每一个接口当做一种设备功能,所以为了让主机知道这里面的两个接口其实是一个设备功能,所以使用Union 等描述符来告诉主机两个接口属于同一个功能,可以使用一个驱动程序驱动。
字符串描述符,主机显示用:获取语言ID



关于字符串,鱼鹰提供的例程并不能在【设备管理器】中正确显示,可能就是因为语言ID 返回 0x0409, 表示ASCII编码,但是实际上却是 Unicode 编码,这可能就是为什么设备可以正常使用,但字符串显示不对的原因了。


推荐阅读:






-THE END-


如果对你有帮助,记得转发分享哦


微信公众号「鱼鹰谈单片机

每周一更单片机知识

长按后前往图中包含的公众号关注


鱼鹰,一个被嵌入式耽误的畅销书作家

个人微信「EmbeddedOsprey

长按后打开对方的名片关注