QCC3040 USB Composite Device: Audio+HID+CDC/虚拟串口

    笔记一下USB IAD的用途, 真实体验到了什么叫概念不清,误入歧途. 首先声明一下,笔者没有系统性了解过USB协议,只是按照实际情况,提出需求,发现问题,解决问题. 笔者记录一下在高通QCC3040芯片上做USB Composite Device的过程和心得.

   首先在QCC3040的ADK上已经具有Audio+HID的完整功能. 客户提出能否采用CDC ACM来取代HID实现上位机的控制功能,同时使用windows系统自带的usbser.sys驱动,不能额外增加PC驱动的工作量. 接到这个需求的时候, 心想, 这个简单, 在原始ADK的基础上增加CDC相关的Descriptor就是.

    但是这是不够的,电脑不能正常枚举USB设备.连本身具有的Audio和HID都同时会报错.

    这个实际涉及到USB IAD扩展的实际含义, 但是在度娘和CSDN上其实看不到可以说清楚IAD(即Interface Association Descriptor)的真正含义和使用方法的文章, 可能高手认为这个太简单了,不愿意提.

    做USB Composite Device离不开IAD,因为IAD就是用于对于不同Interface进行分组用的. 说明那些Interface是一个组别.

    对于只需要一个interface就可以实现的功能, 不需要IAD; 只有需要多个interface的功能才可能使用IAD来说明. 比如HID就不需要, MSC也不需要;但是CDC/ACM一定需要, CDC/ACM需要两个Interface, 一个是control interface, 一个是data interface, 在增加CDC本身的descriptor之前,要先提供相应的IAD descriptor. 同时Audio 即(UAC)部分也要增加IAD分组, 这样才不会出错.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值