HK32F103x/C/D/E是深圳市航顺芯片威廉希尔官方网站 研发有限公司推出的中大容量的32位MCU芯片,内部集成丰富且强大的外设,如SPI/IIC/UART/USB/FSMC/SDIO等。
有客户在快速替换使用过程中,遇到过使用HAL库的USB枚举失败的情况:VID/PID值等设备描述符内容不正确。使用bus hound捕获USB包,观察设备描述符内容,如下红色箭头所指IN包数据部分,大多数时候是不对的,即不是预期值,偶发是对的。
通过分析客户代码,且使用逻辑分析仪+DSview跟踪USB通信数据,发现是在枚举过程中,第三次获取设备描述符的时候出错,如下:
进一步分析发现并确认(根本原因):
USB设备在收到STALL之后的下一条SETUP的情况下,硬件会设置Tx状态为Valid,这导致接下来IN包来了之后,USB直接就把还未准备好的数据发送给主机,即发送的数据不是预设值/乱码,例如一部分为本次要发送的数据,另外一部分为上一次的数据。
解决方案:
屏蔽掉软件设置STALL的代码,例如在HAL库的HID类,屏蔽下图处。
来源:航顺芯片
审核编辑:汤梓红
-
mcu
+关注
关注
146文章
17090浏览量
350780 -
usb
+关注
关注
60文章
7927浏览量
264338 -
HAL库
+关注
关注
1文章
121浏览量
6207 -
航顺芯片
+关注
关注
1文章
105浏览量
22794 -
HK32MCU
+关注
关注
0文章
30浏览量
201
发布评论请先 登录
相关推荐
评论