[技术问答] NUC505 USB Host如何判断U盘是否拔出?

[复制链接]
 楼主| 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 中断,并设置中断处理函数
wamed 发表于 2024-9-23 16:01 | 显示全部楼层
在 USB 中断处理函数中,通过检查 USBD_INTSTS 寄存器的值,可以判断 U 盘是否插入或拔出
tiakon 发表于 2024-9-23 17:06 | 显示全部楼层
USBD_INTSTS_DETECT_ATTACH:表示 U 盘插入。USBD_INTSTS_DETECT_DETACH:表示 U 盘拔出
pe66ak 发表于 2024-9-23 18:15 | 显示全部楼层
在处理完中断事件后,需要清除中断状态,以便接收新的中断事件。可以通过向 USBD_INTSTS 寄存器写入相应的值来清除中断状态
清芯芯清 发表于 2024-9-23 19:20 | 显示全部楼层
USBD_Open:初始化 USB Host 模式。NVIC_EnableIRQ:使能 USB 中断。USB_IRQHandler:USB 中断处理函数,用于检测 U 盘插入和拔出事件
nuan11nuan 发表于 2024-9-24 08:30 | 显示全部楼层
通过配置 USB 中断并处理中断事件,可以有效地检测 NUC505 芯片上 U 盘的插入和拔出状态。这种方法依赖于硬件中断,能够实时响应 U 盘的状态变化。
twinkhahale 发表于 2024-9-24 10:05 | 显示全部楼层
不是有个枚举吗,可以判断枚举是否存在,标识设备是否插拔
一切D都好 发表于 2024-9-24 12:25 | 显示全部楼层
应该有个插拔标记吧,我记得,可以玩玩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1636

主题

5575

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

1636

主题

5575

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部