注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
lvxn的个人空间 https://home.eeworld.com.cn/space-uid-346773.html [收藏] [复制] [分享] [RSS]
日志

STM32的USB组合设备:HID与Audio不能共存?

已有 5520 次阅读2011-10-10 18:38

大家好,我试图在STM32USB平台上建立一个USB Composite device(组合设备)的应用。该组合设备是HID+Audio device。我的软件平台是STUSBUM0424V2.2.0)。在该库提供的例程Audio Speaker的程序中添加HID的应用。

       现在我已经在Audio Speaker这个例程中修改好了描述符,并使得它在XP系统下枚举成功了,如下图所示。

    图中两个USB人体学设备中的一个就是添加进去的HID类设备,USB Audio device就是USB库原本有的音频设备,但是我修改成了USB MIC的应用(原有的库是USB Speaker的功能)。我现在HID的功能就是该USB库中提供的JoystickMouse的功能,实现鼠标的移动的功能。

       现在我遇到的情况是,我插入设备以后,设备枚举成功提示硬件已安装并可以使用后,我首先不打开PC中的录音设备,首先测试HID的功能,拨动我的开发板上的摇杆,鼠标的箭头能够正常移动。但是一旦我打开PC中的录音设备,Joystick的鼠标的功能就工作不正常了,但是这个时候MIC的音频流传输是正常的。鼠标的工作不正常体现在PC收到的HID report数据是混乱的,与我的摇杆按键毫无关系,以至于鼠标会有很多误操作。

       我也试图去自己解决这个问题,刚开始的时候我以为是USBIsochronous传输打断了USBInterrupt传输,因为Isochronous传输的中断优先级要高于Interrupter的传输的中断,所以我就把两个传输的中断优先级设成一样,然而我得到的结果是一样的。

       后来我怀疑音频的Isochronous传输端点的FIFOHIDInterrupter传输端点的FIFO有重叠,我计算了我在程序中设置的两个端点的缓冲区PMA地址与大小,我设置的地址确实没有重叠。并且ST提供的STM32F10xxx的参考手册上说,设置好了缓冲区地址与大小的端点,在IN传输和OUT传输的过程中是不会影响别的端点的缓冲区的内容的。

       我现在已经想不到解决办法了,我已经被这个问题卡了三天了。请大家帮帮我吧,我这个课题比较紧,没几天就得交工了。谢谢了!

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章