wling597074509 发表于 2023-8-8 10:15:15

H7的USB(USB3300方案)求助

最近在调试H7接SD卡,通过USB3300实现U盘功能,调试了很久,始终搞不定。


参考的是ST的官方例程:https://github.com/STMicroelectronics/STM32CubeH7里的STM32H743I-EVAL例程里的USB_Device

然后这段代码也不报错:

if (USBD_Init(&hUsbDeviceHS, &MSC_Desc, 0) != USBD_OK)
{
    Error_Handler(__FILE__, __LINE__);
}
if (USBD_RegisterClass(&hUsbDeviceHS, USBD_MSC_CLASS) != USBD_OK)
{
    Error_Handler(__FILE__, __LINE__);
}
if (USBD_MSC_RegisterStorage(&hUsbDeviceHS, &USBD_DISK_fops) != USBD_OK)
{
    Error_Handler(__FILE__, __LINE__);
}
if (USBD_Start(&hUsbDeviceHS) != USBD_OK)
{
    Error_Handler(__FILE__, __LINE__);
}

但是也不工作。。。

我的理解里,USBD_RegisterClass、USBD_MSC_RegisterStorage这两个函数应该会调用uint8_t USBD_MSC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx)和int8_t STORAGE_Init(uint8_t lun)函数吧,但是打断点发现,压根就没有调用,是哪里没配置对吗?

eric2013 发表于 2023-8-8 11:55:48

这个是做了个模拟U盘功能吧,这个功能我们也有制作,用的USB3300,你下载这个帖子的APP V1.X工程,里面就有个模拟U盘。
https://www.armbbs.cn/forum.php?mod=viewthread&tid=95468

wling597074509 发表于 2023-8-8 12:01:34

eric2013 发表于 2023-8-8 11:55
这个是做了个模拟U盘功能吧,这个功能我们也有制作,用的USB3300,你下载这个帖子的APP V1.X工程,里面就有 ...

硬汉兄,我也有参考过这个例程,结果也是一样的,就是不知道为什么这些初始化函数都没有调用,然后电脑上显示描述符请求失败

eric2013 发表于 2023-8-8 16:45:52

wling597074509 发表于 2023-8-8 12:01
硬汉兄,我也有参考过这个例程,结果也是一样的,就是不知道为什么这些初始化函数都没有调用,然后电脑上 ...

模拟U盘主要注意两个地方
1、USB时钟一定要设置对,48MHz
2、滴答定时器中断抢占优先级高于USB中断抢占优先级。

wling597074509 发表于 2023-8-8 17:22:48

eric2013 发表于 2023-8-8 16:45
模拟U盘主要注意两个地方
1、USB时钟一定要设置对,48MHz
2、滴答定时器中断抢占优先级高于USB中断抢占 ...

硬汉兄一句话,胜过自己调两天,修改了优先级后确实能调用函数了,设备管理器里能够看到“USB大容量存储设备”了,只是“我的电脑”里没显示盘符....

wling597074509 发表于 2023-8-8 17:28:44

eric2013 发表于 2023-8-8 16:45
模拟U盘主要注意两个地方
1、USB时钟一定要设置对,48MHz
2、滴答定时器中断抢占优先级高于USB中断抢占 ...

可以了,终于显示了,看来就是优先级的问题,感谢感谢:handshake
页: [1]
查看完整版本: H7的USB(USB3300方案)求助