OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5640|回复: 8

关于usb的上拉软断开功能

[复制链接]

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
发表于 2014-9-1 17:45:04 | 显示全部楼层 |阅读模式
5金钱
现在我用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拔插一次,主机便无法枚举了。

是不是我哪里理解错了,希望大家帮帮忙谢谢!

最佳答案

查看完整内容[请看2#楼]

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

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-9-1 17:45:05 | 显示全部楼层

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

万万没想到,啦啦啦啦啦..........
那么结贴了.......

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2014-9-1 22:29:28 | 显示全部楼层
帮顶....
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-7 20:11:25 | 显示全部楼层
回复【3楼】KC_CEC:
---------------------------------
兄台,你出现过无法连接设备的情况么?
拿什么让你自己信服 自己
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-12-8 10:12:53 | 显示全部楼层
回复【4楼】真的好多巧合:
---------------------------------
USB 我目前只试过CDC和MSC 
没有发生无法连接设备的情况。
你看看你USB的上位机驱动和USB描述符是不是有问题
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-8 16:43:10 | 显示全部楼层
回复【5楼】KC_CEC:
---------------------------------
谢谢楼主,
我是刚接触USB,我想用F4移植ST的官方HID例程,只是加了些串口打印,其他改动不大,
现在可以枚举部分鼠标和键盘,最终想和游戏手柄通信,现在正在弄枚举,
枚举游戏手柄是不是需要修改一些描述符?
拿什么让你自己信服 自己
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-12-9 10:07:01 | 显示全部楼层
回复【6楼】真的好多巧合:
---------------------------------
你说的电脑枚举到鼠标和键盘,F4是用来做从机的。

你的意思是说你要用F4通过USB和手柄通信吗?
这样就要用到USB主机功能。

这部分涉及的知识点比较多,我不太懂的。
不好意思
回复

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2014-12-9 16:12:12 | 显示全部楼层
回复【7楼】KC_CEC:
---------------------------------
谢谢,
恩,是用usb作为主机的。。。
拿什么让你自己信服 自己
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2015-9-15
在线时间
18 小时
发表于 2016-9-21 11:20:34 | 显示全部楼层
KC_CEC 发表于 2014-9-1 17:45
找到解决办法了,其实不用那么复杂。只需要开机的时候将IO口配置成下拉方式即可,这样在初始化完成USB之 ...

我也遇到同样的问题,USB可以实现软断开,但是SDIS位重新置0,不会重新枚举,所以只要软断开了就再也连接不上,除非重新初始化;你说IO口配置为下拉方式,是指USB D+和USB D-这两个IO口吗?为什么设置成下来,还是能够察觉USB插入
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 17:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表