你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

图解STM3210x系列USB固件库内核

[复制链接]
乡村布拉德 发布时间:2008-12-23 10:54
 终于吧STM3210xUSB固件库源代码看完了!整理了一下笔记。希望给搞STM_USB开发的朋友一点帮助。
因为是第一版,也请大家来查错。
好像图片太大了。给个压缩包下载吧!
usb.gif

usb.rar

下载

172.21 KB, 下载次数: 1143

收藏 评论58 发布时间:2008-12-23 10:54

举报

58个回答
乡村布拉德 回答时间:2008-12-23 10:58:10

RE:图解STM3210x系列USB固件库内核

补充一句:是用Microsoft Visio画的。
乡村布拉德 回答时间:2008-12-23 11:06:04

RE:图解STM3210x系列USB固件库内核

COMPOSITE DEVICE应该就是有多个接口的设备。
我正在整理USB描述符的相关资料。敬请关注!
香水城 回答时间:2008-12-23 11:08:04

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提供的可以很容易地实现上述功能。
乡村布拉德 回答时间:2008-12-23 11:08:50

RE:图解STM3210x系列USB固件库内核

谢谢指教
乡村布拉德 回答时间:2008-12-23 11:10:52

RE:图解STM3210x系列USB固件库内核

我想实现一个COMPOSITE DEVICE,这个COMPOSITE DEVICE有两个设备,一个是HID,一个是音频,从USB的标准来看你认为是可以的吧?但从STM32来说不知道是否可行呢?因为有以下要求,主要是速度和带宽方面的考虑,
1. HID设备最快要达到300BYTES/SECOND
2. 音频设备是一个四道I2S输出,每通道48K采样,16bit精度。48000 x 16 x 4 = 3072000
请问如果我想选用STM32F103VC,是否有可能做出符合要求的设备?

谢谢!
乡村布拉德 回答时间:2008-12-23 11:12:49

RE:图解STM3210x系列USB固件库内核

。。
香水城 回答时间:2008-12-23 11:13:18

RE:图解STM3210x系列USB固件库内核

不错,用STM32可以实现你的要求,但这不表示Windows也可以支持这样的要求。
记得我曾经说过这个问题的关键是要看Windows上的驱动是否能够支持这样的需求,因为我曾经遇到过Windows的Composite设备驱动不支持某些组合的情况,但具体情况记不清了;不知道你得到的答复说最好用两个STM32,是否与这个Composite设备驱动有关;或者你还有什么其它具体的要求没有在这里说明,但在与STM32的技术支持沟通时他们看到了你的问题。
乡村布拉德 回答时间:2008-12-23 11:13:40

RE:图解STM3210x系列USB固件库内核

__STM32__,
其实我得到的答复是这样的,
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的。
香水城 回答时间:2008-12-23 11:14:05

RE:图解STM3210x系列USB固件库内核

你好,我已经问过深圳ST的FAE,他们也曾经问过我们上海的工程师,他们说没有提到过一定要用2片来处理。
估计大家有某些误解。FIFO不是问题,因为音频数据传输使用的是同步(Isochronous)模式,你的数据量只用48000 x 16 x 4 / 8 = 384000字节/秒,每ms只传送384字节,既每个数据包为384字节。根据USB协议,同步传输优先于所有其他传输,所以音频数据传输不会受突发的HID传输干扰。
我可以明确地说,你的这种需求使用一片STM32完全可以处理,响应时间也没有问题。如果音频的驱动是自己写,我前面谈的Windows端的驱动问题也不存在了,你只须实现一个由HID和一个自定义类设备的复合设备即可。  
 

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版