ST意法半导体
直播中

李泳瑜

8年用户 1215经验值
私信 关注
[问答]

stm32g0b1 USB主机 (MSC) 闪存驱动器不工作怎么解决?

我在测试板上有一个STM32G0B1VET,并尝试使用其USB主机功能连接闪存驱动器。它只是停留在文件“usbh_msc_scsi.c”中的“USBH_MSC_SCSI_Inquiry”函数上。它不能通过以下状态:
案例 BOT_CMD_WAIT:
   错误 = USBH_MSC_BOT_Process(phost,lun);
其中错误返回“USBH_BUSY”。
  • 我试图将堆栈和堆增加到 0x2000。我尝试了几种不同的闪存驱动器(500MB 到 16GB)。同样的事情发生了。
  • 我测量了 48Mhz 信号,信号很好。
  • 我试过在 DP 和 DM 线上放置 30 欧姆电阻。
  • 我试过使用 GPIO 引脚来控制闪存驱动器的 5V 线。
  • 我试过对闪存驱动器使用 3.3V。
有人知道出了什么问题吗?有成功案例吗?谢谢。







回帖(1)

李婧

2022-12-8 11:09:48
您好,在类似主题上找到了适用于我的案例的解决方案。问题似乎出现在 usb_ctrlreq.c 的第 561 行,您可以将其替换为以下内容:
ep_descriptor->wMaxPacketSize |= MIN((uint16_t)(LE16(buf + 4) & 0x7FFU), (uint16_t)USBH_MAX_DATA_BUFFER);
作为新成员我不能分享链接,所以原来的主题是:FatFs_USBDisk example with USB_FS does not work。当连接 USB 记忆棒时,USBH_MSC_Process 永远不会比 MSC_READ_INQUIRY 更进一步
举报

更多回帖

发帖
×
20
完善资料,
赚取积分