OpenEdv-开源电子网

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

USB虚拟串口,断点设在中断函数里,导致PC识别不到USB?

[复制链接]

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-9-26 10:41:17 | 显示全部楼层 |阅读模式
 如果程序全速运行,PC可正常识别。但是运行前我在中断函数中设置了一个断点,第一次进中断函数是因为USB复位,然后我把断点取消,再全速一次,PC就识别不到USB了,显示为“UNKNOW DEVICE”,请问是什么原因呢?是不是有什么严格的时间内必须初始化整个过程?
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2012-8-13
在线时间
32 小时
发表于 2013-9-26 11:02:30 | 显示全部楼层
在USB枚举过程中是不能停止的,会引起超时导致枚举失败。
个人小店,弄了些大人玩具,希望各位老小玩童们喜欢。 http://autocute.taobao.com/
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-26 11:26:23 | 显示全部楼层
回复【2楼】lura2:
---------------------------------
这样,那请问我如何知道它枚举结束?我把断点设在初始化函数的后面,也一样识别不到。枚举需要的时间有点久了吧?
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-26 11:35:35 | 显示全部楼层
回复【2楼】lura2:
---------------------------------
我发现程序会陆续进入复位中断、SOF中断、正常通信中断。是否这三个陆续进入以后才算枚举正常。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

3

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2012-8-13
在线时间
32 小时
发表于 2013-9-26 14:14:58 | 显示全部楼层
回复【3楼】feilusia:

回复【2楼】lura2:
---------------------------------
这样,那请问我如何知道它枚举结束?我把断点设在初始化函数的后面,也一样识别不到。枚举需要的时间有点久了吧?

---------------------------------
一般USB配置完成基本就算是枚举结束了,也就是可以开始应用层通信时为结束。时间不会太长,1~2秒吧,看程序的实现了。
个人小店,弄了些大人玩具,希望各位老小玩童们喜欢。 http://autocute.taobao.com/
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-26 14:33:12 | 显示全部楼层
回复【5楼】lura2:
---------------------------------
1~2秒,好久!整个过程我还不是太了解,我再看看资料,谢谢你的回答!
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-26 17:18:17 | 显示全部楼层
回复【5楼】lura2:
---------------------------------
我看了一遍《圈圈教你玩USB》中的枚举过程,稍微整理了下。我想问一下枚举的过程是否就到分配地址?再后面的一些就应该算是传输数据了吧?不知道我理解的对不对。
USB枚举过程:
(1) USB主机检测到USB设备插入后,对设备复位。
(2) USB主机对设备发送获取设备描述符的标准请求。
(3) 设备收到该请求后,在数据过程将设备描述符返回给主机。
(4) 主机在成功获取到一个数据包的设备描述符后并且确认无错误后,返回一个0长度的状态数据包给设备。
(5) 主机再对设备复位一下,接下来进入到设置地址阶段。
(6) USB主机发出一个设置地址的请求,地址包含在建立包中。
(7) USB设备在收到地址后,返回0长度的状态包。
(8) 主机收到0长度的状态包之后,返回一个ACK。
(9) 设备在收到这个ACK之后,就可以启用新的地址了。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

3

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2012-8-13
在线时间
32 小时
发表于 2013-9-26 18:34:07 | 显示全部楼层
回复【7楼】feilusia:
---------------------------------
恭喜!你答对了,加十分!
个人小店,弄了些大人玩具,希望各位老小玩童们喜欢。 http://autocute.taobao.com/
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
 楼主| 发表于 2013-9-26 18:43:37 | 显示全部楼层
回复【8楼】lura2:
---------------------------------
谢谢你的十分,哈哈
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

10

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2012-12-27
在线时间
0 小时
发表于 2013-10-28 09:33:19 | 显示全部楼层
回复【9楼】feilusia:
---------------------------------
请问一下,怎么样才能让USB连续发送呢,也就是我有很多数据,而这USB一次只能64字节,我这发完一次之后就不能接着发了,是不是发送完64字节中断了呢?请教一下
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 20:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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