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

STM32F4 USB枚举问题

[复制链接]
meixu 提问时间:2017-2-20 17:08 /
最近刚开始学习USB,参考的书籍是电脑圈圈,例程是网上找的原子的例程,开发板是stm32f4discovery。在进行usb设备枚举时通过串口打印信息得到如下:
80 06 00 01 00 00 40 00   
12 01 00 02 00 00 00 40
USB Device Library v1.1.0  [FS]
reset
00 05 1c 00 00 00 00 00  //设置地址
80 06 00 01 00 00 12 00   //设备描述符
12 01 00 02 00 00 00 40 83 04 20 57 00 02 01 02 03 01   
80 06 00 02 00 00 ff 00   //配置描述符
09 02 20 00 01 01 04 c0 32 09 04 00 00 02 08 06 50 05 07 05 81 02 40 00 00 07 05 01 02 40 00 00
80 06 03 03 09 04 ff 00   //字符串描述符(产品序列号)
1a 03 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 30 00 31 00 42 00   "00000000001B"
80 06 00 03 00 00 ff 00   //语言ID
04 03 09 04  "0x0409"
80 06 02 03 09 04 ff 00   //字符串描述符(产品字符串)
32 03 41 00 4c 00 49 00 45 00 4e 00 54 00 45 00 4b 00 20 00 55 00 53 00 42 00 20 00 43 00 61 00 72 00 64 00 20 00 52 00 65 00 61 00 64 00 65 00 72 00  "ALENTAKE ..."
80 06 00 06 00 00 0a 00  //设备限定符

在请求字符串描述符时发现有点问题:
问题1:请求语言ID在请求产品序列号之后(不过好像也没有太大关系,毕竟只是颠倒了位置);
问题2:没有请求厂商字符串;
问题3:为什么最后会有设备限定符请求啊,全速设备貌似没提到这个啊。

目前调试只是在USBD_StdDevReq()函数里进行,由于只是初学,问题比较多,对USB也是云里雾里,还希望有人能指点一下。另外如果有关于ST USB库好的学习资料也可推荐一下。(培训PPT和UM1021除外)


收藏 评论8 发布时间:2017-2-20 17:08

举报

8个回答
海迹天涯 回答时间:2017-2-20 21:11:08
给你顶起
流水源 回答时间:2017-2-21 08:52:52
本帖最后由 流水源 于 2017-2-21 08:58 编辑

配置描述符09 02 20 00,长度不对,还缺类描述符。
meixu 回答时间:2017-2-21 08:58:11
流水源 发表于 2017-2-21 08:52
配置描述符09 02 22 00,长度不对

对啊,9+9+7+7=32(0x20),不是22,你看错了吧
流水源 回答时间:2017-2-21 08:59:21
缺类描述符,还差9字节长度
meixu 回答时间:2017-2-21 15:38:05
流水源 发表于 2017-2-21 08:59
缺类描述符,还差9字节长度

哦哦,的确是。
meixu 回答时间:2017-2-21 16:41:02
meixu 发表于 2017-2-21 15:38
哦哦,的确是。

问一下您能给我提供一个适用于STM32F4DISCOVERY开发板的插入电脑就能识别的例程吗,我用的是STM32_USB-Host-Device_Lib_V2.1.0中的HID例程,但下载进去之后总是不能识别设备。
meixu 回答时间:2017-2-21 17:10:50
meixu 发表于 2017-2-21 16:41
问一下您能给我提供一个适用于STM32F4DISCOVERY开发板的插入电脑就能识别的例程吗,我用的是STM32_USB-Ho ...

我又回去仔细翻了一下书,大容量U盘枚举时应该有接口描述符就行了,没有向HID是的后边还跟了一个HID描述符。
meixu 回答时间:2017-3-13 21:34:47
这个帖子很尴尬,当时刚学习什么都不懂。这是大致调通以后自己对以上三个问题的理解:(1)应该是win10系统下枚举顺序就是这样,毕竟圈圈的系统肯定是以前的了。(2)始终没想明白。(3)确实请求设备限定符了,STM32库里应该是直接发了0数据包。之后就是接口描述符了,然而我并没有在处理函数里面打印字符串,所以后边就空了。额,先这样理解吧。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 结贴奖励

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版