使用usbd_core.c检测何时断开USB设备

时间:2015-06-18 08:57:59

标签: c embedded usb

因此,在嵌入式系统上工作时,我有一个USB驱动器,用于为设备充电以及读取一些数据。

使用usbd_core.c我可以查看状态,

  • 当没有任何关联时,状态为4USBD_STATE_SUSPENDED)。
  • 只要我连接某些内容,状态就会更改为1USBD_STATE_DEFAULT)。
  • 但是当我断开连接时状态不会改变,它仍然是1USBD_STATE_DEFAULT)。

它应该是这样还是我遗失了什么?

我还尝试了USBD_Stop()USBD_Start(),看看它是否有所不同,但当我断开连接时状态仍然没有改变。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

USB规范定义了六种USB设备状态:

  • 已附加:设备已连接至USB,但未通过USB供电。

  • 已加电:设备已连接至USB并已通电,但尚未收到任何重置请求。

  • 默认:设备已连接到USB。它已通电并重置,但没有为其分配唯一的地址。

  • 地址:设备已连接到USB,已启动并重置,并且已为其分配了唯一的地址。

  • 已配置:设备已处于地址状态并已配置。它没有处于暂停状态。

  • 已暂停:已连接并配置设备,但至少3毫秒未在总线上检测到任何活动。

正如您所看到的,暂停需要附加和配置的设备,但是请注意,这些状态的所有都需要连接的设备,并且显然不能用于暗示物理分离设备。

断开连接是来自USB控制器的低级事件 - 您的API可能会为此类事件提供回调。