打印

STM32F105RC USB ,一直在SOF这里中断。

[复制链接]
15071|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32F105RC USB 配置成Mass Storage Class,插上U盘,一直在SOF这里中断,请问是什么原因,谢谢!

使用特权

评论回复
沙发
Progrime|  楼主 | 2024-6-17 18:07 | 只看该作者
如图

微信图片_20240617180044.png (28.61 KB )

微信图片_20240617180044.png

微信图片_20240617180003.png (313.11 KB )

微信图片_20240617180003.png

使用特权

评论回复
板凳
cr315| | 2024-6-18 10:32 | 只看该作者
驱动程序不正确或未正确安装

使用特权

评论回复
地板
Progrime|  楼主 | 2024-6-18 11:00 | 只看该作者
cr315 发表于 2024-6-18 10:32
驱动程序不正确或未正确安装

CUBE自动生成的,库是STM32Cube FW_F1 V1.8.0
插入U盘时,第一个中断是USB_OTG_GINTSTS_HPRTINT,以后一直不断的进入SOF中断

使用特权

评论回复
5
玄德| | 2024-6-18 11:05 | 只看该作者
本帖最后由 玄德 于 2024-6-18 11:06 编辑


USB 机制,主机会定时查询子机。
想想看,U盘拔出来以后,电脑很快就知道了,为什么。
FS 模式每毫秒一次,HS 模式更频繁,125uS 。



使用特权

评论回复
评论
Progrime 2024-6-18 11:51 回复TA
U盘插入,检测不到,但是拨出,可以检测到 
6
Progrime|  楼主 | 2024-6-18 14:20 | 只看该作者
玄德 发表于 2024-6-18 11:05
USB 机制,主机会定时查询子机。
想想看,U盘拔出来以后,电脑很快就知道了,为什么。
FS 模式每毫秒一次 ...

终于搞定,谢谢大侠的正解,这个中断是必要,而且正常的。
解决过程如下,供后来者参考:
我的问题是:USBH_UserProcess函数中,插入U盘一直到不了case HOST_USER_CLASS_ACTIVE:
8M晶振换到20M的也不行,DN/DP加上接下拉也不行,开不开freeRTOS都不行,几乎cube相关配置都改过了,一如既往的不行。
于是cube打开调试模式,等级为3:All messages and internal debug messages are shown,插上U盘后,惊奇的发现串口打印USB Device Connected,于是在工程里搜索到打印USB Device Connected的地方(usbh_core.c),打印这句话后,phost->gState = HOST_DEV_WAIT_FOR_ATTACHMENT; 再定位到这句话下面几行处:case HOST_DEV_WAIT_FOR_ATTACHMENT: /* Wait for Port Enabled */
发现需要phost->device.PortEnabled==1,才能正确往下走,在工程里搜索phost->device.PortEnabled,发现它在其它地方都是被=0的,而在void USBH_LL_PortEnabled(USBH_HandleTypeDef *phost)函数里被置1,在此函数里打不了断点,说明没被使用(调用)过。
试图在void MX_USB_HOST_Init(void)函数的最后/* USER CODE BEGIN USB_HOST_Init_PostTreatment*/与/* USER CODE END USB_HOST_Init_PostTreatment */之间,加上USBH_LL_PortEnabled(&hUsbHostFS);
编译通过,下载仿真,插上U盘,终于可以运行到USBH_UserProcess函数里的case HOST_USER_CLASS_ACTIVE:处。
这样就可以正常操作U盘了。

使用特权

评论回复
7
Progrime|  楼主 | 2024-6-18 14:21 | 只看该作者
调试打印信息如下:
USB Device Connected
USB Device Reset Completed
PID: 1212h
VID: 14cdh
Address (#1) assigned.
Manufacturer : Generic
Product : Mass Storage Device
Serial Number : 121220160204
Enumeration done.
This device has only 1 configuration.
Default configuration set.
Switching to Interface (#0)
Class    : 8h
SubClass : 6h
Protocol : 50h
MSC class started.
Number of supported LUN: 1
LUN #0:
Inquiry Vendor  : Mass   
Inquiry Product : Storage Device  
Inquiry Version : 1.00
MSC Device ready
MSC Device capacity : 3046637056 Bytes
Block number : 31116287
Block Size   : 512

使用特权

评论回复
8
gyh974| | 2024-6-18 15:42 | 只看该作者
不都是CUBE自动生成的?基本上不用改的

使用特权

评论回复
9
一叶倾城wwq| | 2024-6-18 16:23 | 只看该作者
gyh974 发表于 2024-6-18 15:42
不都是CUBE自动生成的?基本上不用改的

搞到最后是他没有使能

使用特权

评论回复
10
EmmaTT| | 2024-6-18 19:54 | 只看该作者
cubemx不是自动初始化啊

使用特权

评论回复
11
两只袜子| | 2024-6-18 20:23 | 只看该作者
可能是硬件连接问题

使用特权

评论回复
12
laocuo1142| | 2024-6-18 21:00 | 只看该作者
固件/代码问题

使用特权

评论回复
13
flycamelaaa| | 2024-6-18 21:23 | 只看该作者
检查连接的USB主机(如计算机)是否支持USB Mass Storage Class,并确保其USB端口和驱动程序正常工作。

使用特权

评论回复
14
两只袜子| | 2024-6-19 10:00 | 只看该作者
可能是硬件连接问题

使用特权

评论回复
15
wang6623| | 2024-6-30 15:09 | 只看该作者
通常情况下,要使用外部晶体或者内部RC振荡器作为USB的时钟源,并且时钟频率需要符合USB规范要求。

使用特权

评论回复
16
雨果喝水| | 2024-8-29 13:04 | 只看该作者
如果有可能,尝试使用不同的USB电缆或连接端口。

使用特权

评论回复
17
星辰大海不退缩| | 2024-8-29 23:56 | 只看该作者
???这种问题确实会发生,但还是需要细心

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

306

帖子

2

粉丝