打印
[STM32F4]

关于usb的上拉软断开功能

[复制链接]
2054|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KC_CEC|  楼主 | 2014-9-1 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 KC_CEC 于 2014-9-1 17:09 编辑

现在我用F4做MSC,但美中不足就是当在设备和电脑保持连接的时候复位设备,电脑就无法识别。

经过查看发现是因为复位后上拉电阻会使得电脑来枚举设备,但是设备此时还没有将USB初始化
完成,所以不会返回描述符导致枚举失败。

按照我的理解是,先将上拉断开,初始化好内部USB后再重新连接即可。

现在的问题是如何有效的断开和重连上拉?

按照F4手册说明:
<OTG_FS_DCTL>寄存器下的<SDIS>位可以软断开和重连。

那么我的步骤如下:
1、先断开上拉--------->DCD_DevDisconnect
2、再执行初始化------>USBD_Init
3、最后连接上拉------>DCD_DevConnect
事后进调试发现第一步没有成功断开<SDIS>位,应该是USB寄存器没有初始化所以无动作。

那么修改步骤如下:
1、先执行初始化------>USBD_Init
1、再断开上拉--------->DCD_DevDisconnect
3、最后连接上拉------>DCD_DevConnect
这次上拉可以断开并连接了,但是从电脑<设备管理器>观察到主机根本就没有觉察到设备被拔出

最后我直接进调试模式,让设备全速跑起来。然后手动的断开上拉,依然电脑没有发现断开设备。
并且奇怪的是,我手动断开然后再次连接以后,将USB拔插一次,主机便无法枚举了。

是不是我哪里理解错了,希望大家帮帮忙谢谢!
沙发
zh113214| | 2014-9-1 23:20 | 只看该作者
没有用过F4啊,希望高手能帮助你!!

使用特权

评论回复
板凳
KC_CEC|  楼主 | 2014-9-2 09:17 | 只看该作者
按理说这个应用很简单吧。怎么没有人解答啊

使用特权

评论回复
地板
悲伤流逝| | 2014-9-2 10:18 | 只看该作者
这个必须顶

使用特权

评论回复
5
KC_CEC|  楼主 | 2014-9-3 15:03 | 只看该作者
本帖最后由 KC_CEC 于 2014-9-3 15:10 编辑

找到解决办法了,其实不用那么复杂。只需要开机的时候将IO口配置成下拉方式即可,这样在初始化完成USB之前,主机是不能觉察设备插入的。
万万没想到,啦啦啦啦啦.............
那么结贴了.......

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
dong_abc + 6
6
小浣熊| | 2014-9-3 16:58 | 只看该作者
解决了就好,恭喜楼主。。

使用特权

评论回复
7
bjxdylzsts| | 2014-9-3 17:01 | 只看该作者
之后再 重新初始化 usb模块。

使用特权

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

本版积分规则

20

主题

169

帖子

1

粉丝