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

图解STM3210x系列USB固件库内核

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

usb.rar

下载

172.21 KB, 下载次数: 1146

收藏 评论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和一个自定义类设备的复合设备即可。  
 
得蜜 回答时间:2008-12-23 11:14:46

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

精之
wxjun-98906 回答时间:2009-3-5 10:21:11

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

谢谢指教
hoing 回答时间:2009-3-12 09:40:19

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

谢了!!!!!!!!!
mgdsun2000 回答时间:2009-3-22 15:33:08

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

谢谢
张志慧 回答时间:2009-3-23 22:11:14

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

呵呵不错收藏了
1234下一页

所属标签

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