打印
[技术问答]

NUC505 USB Host如何判断U盘是否拔出?

[复制链接]
999|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2024-9-18 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用NUC505 的U盘例子,可以识别U盘并读出扇区等,但不知道如何判断U盘已经拔出?
我做了下列尝试:


1. 使用下列断点办法判断USB设备拔出,但是没有效果:
   该断点却可以感应到USB设备插入
    for (;;)
    {
        if (USBH_ProcessHubEvents())
        {
            put_rc(f_mount( FatFs[0], "", 0));  //设置断点
        }
    }   
2. 观察NUC505的相关寄存器来判断USB设备拔出,也无效果
  寄存器:Host Controller Root Hub Port Status
  此寄存器有一个 CSC 标志位 Connect Status Change
3. 拦截USBH的中断,无效果
  在此设置断点 void USBH_IRQHandler(void)

使用特权

评论回复
沙发
suiziq| | 2024-9-23 12:38 | 只看该作者
在 NUC505 芯片上,USB Host 模式下判断 U 盘是否拔出通常涉及使用 USB 中断

使用特权

评论回复
板凳
gra22ce| | 2024-9-23 13:42 | 只看该作者
NUC505 芯片支持 USB 中断,当 U 盘插入或拔出时,会产生相应的中断信号。通过处理这些中断,可以检测到 U 盘的状态变化

使用特权

评论回复
地板
hhdhy| | 2024-9-23 14:49 | 只看该作者
需要在代码中配置 USB 中断,并设置中断处理函数

使用特权

评论回复
5
wamed| | 2024-9-23 16:01 | 只看该作者
在 USB 中断处理函数中,通过检查 USBD_INTSTS 寄存器的值,可以判断 U 盘是否插入或拔出

使用特权

评论回复
6
tiakon| | 2024-9-23 17:06 | 只看该作者
USBD_INTSTS_DETECT_ATTACH:表示 U 盘插入。USBD_INTSTS_DETECT_DETACH:表示 U 盘拔出

使用特权

评论回复
7
pe66ak| | 2024-9-23 18:15 | 只看该作者
在处理完中断事件后,需要清除中断状态,以便接收新的中断事件。可以通过向 USBD_INTSTS 寄存器写入相应的值来清除中断状态

使用特权

评论回复
8
清芯芯清| | 2024-9-23 19:20 | 只看该作者
USBD_Open:初始化 USB Host 模式。NVIC_EnableIRQ:使能 USB 中断。USB_IRQHandler:USB 中断处理函数,用于检测 U 盘插入和拔出事件

使用特权

评论回复
9
nuan11nuan| | 2024-9-24 08:30 | 只看该作者
通过配置 USB 中断并处理中断事件,可以有效地检测 NUC505 芯片上 U 盘的插入和拔出状态。这种方法依赖于硬件中断,能够实时响应 U 盘的状态变化。

使用特权

评论回复
10
twinkhahale| | 2024-9-24 10:05 | 只看该作者
不是有个枚举吗,可以判断枚举是否存在,标识设备是否插拔

使用特权

评论回复
11
一切D都好| | 2024-9-24 12:25 | 只看该作者
应该有个插拔标记吧,我记得,可以玩玩

使用特权

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

本版积分规则

1506

主题

4536

帖子

6

粉丝