你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
usb.rar
2014-10-22 16:32 上传
点击文件名下载附件
172.21 KB, 下载次数: 1146
举报
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
我正在整理USB描述符的相关资料。敬请关注!
RE:图解STM3210x系列USB固件库内核
请注意:除非你发现ST提供的USB库中有BUG,请不要修改任何库中的文件:usb_core.c, usb_int.c, usb_init.c, usb_mem.c, usb_regs.c,所有的USB设备功能都能够通过设置的回调函数处理。
不建议修改库中任何文件的理由有二,一是ST的这个USB库已经通过了USB-IF的认证,擅自修改可能对你的产品以后的认证造成麻烦;二是在以后发现BUG后,ST会更新库文件,客户只需把新文件拷贝进自己的项目中即可,如果自己修改了库文件将为已有的更新造成困难。
COMPOSITE DEVICE与普通的设备没有什么本质区别,要实现COMPOSITE DEVICE只需注意2件事即可:
1)在配置描述符(Configuration Descriptor)中描述多个Interface,如在PC端希望识别出两个设备,就需要有2个Interface的描述。
2)在接到USB主机来的命令后,通过USBwIndex0识别是哪个Interface的请求,再做相应处理。
使用ST提供的可以很容易地实现上述功能。
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
1. HID设备最快要达到300BYTES/SECOND
2. 音频设备是一个四道I2S输出,每通道48K采样,16bit精度。48000 x 16 x 4 = 3072000
请问如果我想选用STM32F103VC,是否有可能做出符合要求的设备?
谢谢!
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
记得我曾经说过这个问题的关键是要看Windows上的驱动是否能够支持这样的需求,因为我曾经遇到过Windows的Composite设备驱动不支持某些组合的情况,但具体情况记不清了;不知道你得到的答复说最好用两个STM32,是否与这个Composite设备驱动有关;或者你还有什么其它具体的要求没有在这里说明,但在与STM32的技术支持沟通时他们看到了你的问题。
RE:图解STM3210x系列USB固件库内核
其实我得到的答复是这样的,
1. 对于COMPOSITE DEVICE ST是不支持的,而HID和AUDIO DEVICE都能分别支持,所以最好用两个来实现。
2. 支持的技术人员说速度有可能跟不上,我说USB2.0的12M速度在我的设备上应该只用了3072000,他说这只是纯数据的速度,还有一些USB的控制数据还没包括在内,另外还有一个原因就是STM32上USB的FIFO只有512,说这个也是一个限制。他没有说过关于windows驱动方面的原因。
对于第一点原因我是明白的,但对于第二个原因就不太明白。音频部分需要传输的速度是3072000,HID部分需要2400,这样加起来大概就是12M的1/4,USB的控制数据要占到剩下的部分吗?
我也注意到STM32提供的USB例子AUDIOSPEAKER插到WindowsXP上也认作是一个COMPOSITE DEVICE的。
RE:图解STM3210x系列USB固件库内核
估计大家有某些误解。FIFO不是问题,因为音频数据传输使用的是同步(Isochronous)模式,你的数据量只用48000 x 16 x 4 / 8 = 384000字节/秒,每ms只传送384字节,既每个数据包为384字节。根据USB协议,同步传输优先于所有其他传输,所以音频数据传输不会受突发的HID传输干扰。
我可以明确地说,你的这种需求使用一片STM32完全可以处理,响应时间也没有问题。如果音频的驱动是自己写,我前面谈的Windows端的驱动问题也不存在了,你只须实现一个由HID和一个自定义类设备的复合设备即可。
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核
RE:图解STM3210x系列USB固件库内核