打印

STM32的USB设备拔出时,能否产生一个中断?

[复制链接]
7399|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jtingwang|  楼主 | 2008-10-8 19:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32的USB设备拔出时,能否产生一个中断?
评分
参与人数 1威望 +1 收起 理由
henry_wu001 + 1
沙发
平常人| | 2008-10-8 19:37 | 只看该作者

任何芯片都可以,只要用USB +5V产生中断

USB设备拔出时,USB +5V会同时消失。

使用特权

评论回复
板凳
jtingwang|  楼主 | 2008-10-8 19:42 | 只看该作者

不好意思,我没说清楚,不是这个意思

谢谢!

我的意思是,STM32作为usb设备,PC作为usb主机,当STM32 usb设备和PC断开连接时,STM32能否产生一个中断?
就类似,STM32 usb设备和PC连接时,STM32方面可以产生一个 reset中断一样。

使用特权

评论回复
地板
zusen| | 2008-10-9 09:03 | 只看该作者

PC的USB是有正5V的

你检测这个正5V就行啦,当和PC断开后,这个正5V肯定是消失的

使用特权

评论回复
5
香水城| | 2008-10-9 10:35 | 只看该作者

USB设备拔出时产生中断:2楼和4楼的方法是最简单和最直接的

STM32没有为检测设备拔出而直接设置的中断源,但是如果你对USB协议很熟,可以考虑尝试使用以下2种方法:

1 - 使用Suspend中断得知设备拔出
2 - 使用SOF或ESOF中断间接地得知设备拔出

由于种种原因,我们没有试过这么做,这2种方法有可能不可靠;如果方法1能够实现,则这是一个不错的选择。


需要强调的是,最好使用监视USB电源的方法,因为这是最简单和最可靠的方法,更重要的是USB D+的上拉电压也需要通过检测USB电源来控制。

使用特权

评论回复
6
jtingwang|  楼主 | 2008-10-9 14:20 | 只看该作者

使用Suspend中断得知设备拔出

谢谢!
已验证:设备拔出时,可以产生suspend中断。

使用特权

评论回复
7
香水城| | 2008-10-9 14:24 | 只看该作者

请注意:真正的Suspend条件也会产生Suspend中断

我又考虑了一下:5楼的2种变通方法都会有副作用,最好的方法还是检测USB电源!

使用特权

评论回复
8
simon87155| | 2008-10-9 14:55 | 只看该作者

STM32你的好帮手

我们是ST的代理,已与多家STM32客人在合作,经验丰富,可以提供你需要的帮助,需要在STM32上了解的请与我联系,谢谢!

邓世宏 
Simon Deng
  文晔集团/庆成企业有限公司
*************************************************************************************
地址:深圳南山区科技园**区南区南一道创维大厦C区3楼
TEL:0755-2674 3880 转6139   FAX:0755-2674 4053
M/P:13602587155
E-mail: simon.deng@wtmec.com
Http: www.qce.co.hk    www.wtmec.com
MSN: Sac87155@hotmail.com
Skype: pcicsz

使用特权

评论回复
9
jtingwang|  楼主 | 2008-10-9 21:31 | 只看该作者

有什么副作用呢?

会有什么副作用啊?

另:“真正的Suspend条件也会产生Suspend中断”,按照手册介绍,3ms没有收到数据,就会suspend,但是现在我这里只是在设备拔出时产生suspend中断。

使用特权

评论回复
10
香水城| | 2008-10-9 21:48 | 只看该作者

真正的Suspend条件是:3ms中没有检测到总线上有信号变化

你的理解不准确,总线上没有数据时并不一定没有信号变化,SOF是最基本的总线活动。

使用Suspend中断检测USB设备拔出的副作用是:当主机进入休眠时,USB总线会进入Suspend状态,这时STM32将产生Suspend中断;如果你只用Suspend中断检测USB设备是否拔出,你的程序将不知道这个中断是因为设备拔出还是主机休眠,造成判断错误。即使主机不进入休眠状态,有些USB Hub为了省电也可能进入休眠状态,此时与该Hub相连的STM32设备也将产生Suspend中断。

还是那句话,最好的方法还是检测USB电源!不要因为偷懒为你的产品留下隐患!!

使用特权

评论回复
11
jtingwang|  楼主 | 2008-10-10 11:04 | 只看该作者

是,suspend的条件应该是总线上没有信号,而不是没有数据

是,suspend的条件应该是总线上没有信号,而不是没有数据

检测5V USB电源,要轮询查询该电源是否有效,会比较浪费CPU资源

使用特权

评论回复
12
香水城| | 2008-10-10 11:10 | 只看该作者

检测5V USB电源,不需要轮询查询,使用一个外部中断口即可

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

用电阻分压有两个目的:1)产生3.3V的电平;2)更重要的是在USB 5V消失后外部中断口被下拉到地,不至于浮空,保证稳定的输入电平。

使用特权

评论回复
13
linliangqiu| | 2013-10-24 17:41 | 只看该作者
jtingwang 发表于 2008-10-9 14:20
谢谢!已验证:设备拔出时,可以产生suspend中断。

也验证过了,确实可以产生中断。不过一旦真正的suspend中断来了怎么办呢?

使用特权

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

本版积分规则

67

主题

171

帖子

1

粉丝