
各位大神,小弟现在正在用STM32f205+PHY做一个高速usb的Device设备,需要使用两个端点,分别设置:端点2为OUT、端点6为IN的BULK模式。 正常逻辑应该是:枚举过程成功后,收到主机发送的SetConfig命令,STM32开始配置两个BULK端点。STM32接收到OUT端点主机发送的数据并做处理后通过IN端点发送至主机。 但是实际测试现象是:枚举过程结束后,STM32收到主机发送的SetConfig命令,并成功配置端点。OUT端点收到主机发送的数据并做处理后将待发送数据缓存在buf,等待IN令牌包到来后发送,但是IN端点一直发送不出去。 通过USB分析仪抓取到的数据发现主机发送IN令牌包后,从机无响应。 因为枚举过程数据正常,故怀疑是STM32配置BULK端点时出错,经过多次查找后发现,当配置端点2为OUT模式后,STM32寄存器会强制改写OTG_HS_DIEPCTL6、7寄存器的数值。配置端点的代码如下: /* Open EP2 OUT */ USBD_LL_OpenEP(pdev, EPIN2_OUT_ADDR, USBD_EP_TYPE_BULK, EPIN2_OUT_SIZE); pdev->ep_out[2].maxpacket = USB_HS_MAX_PACKET_SIZE; USBD_LL_PrepareReceive (pdev, EPIN2_OUT_ADDR, BulkRxBuf, USB_HS_MAX_PACKET_SIZE); USBD_LL_OpenEP(pdev, EPIN6_IN_ADDR, USBD_EP_TYPE_BULK, EPIN6_IN_SIZE); pdev->ep_in[6].maxpacket = USB_HS_MAX_PACKET_SIZE; 图片上寄存器值是在执行完 USBD_LL_OpenEP(pdev,EPIN2_OUT_ADDR,USBD_EP_TYPE_BULK,EPIN2_OUT_SIZE);尚未配置IN端点时就已经生成的。 很纳闷,为什么设置了端点2会改变端点6.7的DIEPCTL的数值。 如果两个openEP函数颠倒了顺序,则DIEPCTL6在执行完配置后仍然是0. 有没有哪位大哥做过相关的工作,能不能给小弟指点下迷津,谢谢。 |
stm32h743 usbh msc 读写 u盘 新购买的 u盘只能识别到但不能进行读写 ?
stm32哪个系列芯片支持2个USB,主设备,且usb可以支持标准的uvc协议,哪里可以下载usb开发库
新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
USBx配置有哪些小的需要注意的细节?
H743ZIT6 USB虚拟串口 CDC电脑无法识别(获取描述符失败)
STM32F407的高速USB,采用的是虚拟串口方式,VCP驱动有linux系统的吗
STM32H533的USB使用问题
stlink 串口驱动安装前面有叹号软件里无法找到
STM32 usb传输的时延和丢帧问题