打印

请教USB的进入和退出

[复制链接]
972|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arm2009wzm|  楼主 | 2014-8-18 09:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用的ARM是S3C2440,有这样一个问题,就是仪器在开机时进入测量状体,可以通过按钮进行很多的人工操作,包括查看SD卡上的数据等。

此时插上USB,仪器应该进入专门和PC通讯的状态,禁止对SD卡的人工操作,仪器的LCD也进入特定的显示。

拔除USB线后,仪器恢复到以前的状态。

要怎样才能判断USB的插入于拔除?
(USB仪器被枚举成U盘,文件系统和USB通讯已做好,现在就是想要判断进入和退出的条件)

相关帖子

沙发
arm2009wzm|  楼主 | 2014-8-28 16:47 | 只看该作者
没有找到好办法,我自己使用了一个投机取巧的办法来解决了,原来是想通过 USB Device 的状态寄存器来解决。试了各种办法还是不行。
现在我使用一个标志位和一个时钟节拍计时器,每次 PC 和 S3C2440 通讯时,S3C2440进入中断程序(判断端点,并进行输入输出),此时我就设置标志位,并清除时钟节拍,然后在主程序中判断标志位,进行显示、屏蔽按钮等处理。

电脑不到1秒就会和S3C2440通讯,利用这一特性,如果拔出USB线,则不会进入中断程序,时钟节拍不会被清除,在主程序中判断时钟节拍超过一定时间就作为USB线已经拔出。

使用特权

评论回复
板凳
zzu65| | 2014-8-30 10:34 | 只看该作者
利用连接上USB每隔一秒的通讯命令当然可以实现检测,但需要一直进中断判断,且这种方法实时性不强,最坏的情况要等一秒才能反应过来,给人感觉很迟钝
首先看看芯片有没有提供USB插拔中断,有的话那就最好不过了,直接用插拔中断替换你的中断,这只有在插拔动作的时候才会产生中断
如果没有,就自己做一个,将USB的VBUS通过电阻分压产生一个与MCU匹配的电平,连接至MCU的一个外部中断,上升沿表明USB插入,下降沿表明USB拔出,在该中断中处理相关任务

使用特权

评论回复
地板
arm2009wzm|  楼主 | 2014-9-3 16:16 | 只看该作者
zzu65,你的第二个方案(外部中断)思路很好。
不过我暂时不改了,用我凑合的方法使用,稍微有点迟钝,感觉还好!
谢谢!分给你!

使用特权

评论回复
5
凤凰息梧桐123| | 2014-9-13 15:54 | 只看该作者
顶一下3楼的

使用特权

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

本版积分规则

10

主题

29

帖子

0

粉丝