USB从机如何检测usb拔出。

22 篇文章 3 订阅 ¥9.90 ¥99.00

USB从机如何检测usb拔出。

A:没办法。usb协议没有规定从机对于usb拔出的检测。

最简单的方法就是判断USB的5V电源,连接到一个中断io口,使用中断方式,如果使用轮询的话比较占用CPU资源。

中断方式是,加2个电阻分压,使用一个外部中断口的下降沿产生中断,很容易实现。

用电阻分压有两个目的:

1)产生3.3V的电平;

2)更重要的是在USB 5V消失后外部中断口被下拉到地,不至于浮空,保证稳定的输入电平。

额外:
有一种方法也可以,那就是usb拔出时,会执行suspend中断。但这个方法有点问题,就是真正的suspend事件发生时,会误认为是usb拔出。

使用Suspend中断检测USB设备拔出的副作用是:
当主机进入休眠时,USB总线会进入Suspend状态,这时STM32将产生Suspend中断;如果你只用Suspend中断检测USB设备是否拔出,你的程序将不知道这个中断是因为设备拔出还是主机休眠,造成判断错误。

即使主机不进入休眠状态,有些USB Hub为了省电也可能进入休眠状态,此时与该Hub相连的STM32设备也将产生Suspend中断。。

何时进入suspend状态:
进入suspend的条件是,“总线上3ms没有数据传输”。但即使总线上没有客户之间的数据传输,总线每1ms(假设是全速设备)也会固定发送一个帧开始包,这可以防止设备进入suspend状态。
所以虽然拔出usb,会因为3ms没有接收到数据而进入suspend状态,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Erickson_qq_

写作不易,需要各位大佬打赏鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值