最近刚开始学习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除外)
一周热门 更多>