OpenEdv-开源电子网

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

USB设备枚举不成功

[复制链接]

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2017-4-14 14:51:35 | 显示全部楼层 |阅读模式
15金钱
      我设计了一款基于stm32f4的audio 设备能够同时录音和放音。产品已经小批量试产了,现在测试同事发现,多次插拔usb设备的时候会出现usb的设备无法识别,变成usb audio device。即使卸载了设备也不行。必须电脑断电重新插拔才行。
      我的基本驱动是按照原子的usb声卡的例子修改的,只是加了一个录音的功能。usb库是标准库v1.1版本。后来我拿原子开发板给我同事测试发现也存在这个问题。
      这个比较着急,论坛的朋友有没有思路。我觉得是有的时候usb描述符枚举没有成功,但是不知道怎么改进。

最佳答案

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

可能和usb的外围电路也有关系,我的D+、D-两个角是直接连接到USB设备上的。找了FAE提供了一个电路上有一个保护电路,这个可以保证D+、D-的电平稳定。不过我后来还加了一些其他的操作,就是上电的头5秒中把音频数据的发送和接收停止了。好像这些操作都会使得usb枚举稳定。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-4-14 14:51:36 | 显示全部楼层
myxiaoniao 发表于 2017-4-28 12:56
如果是usb全速,可以试试用最便宜的usbee来抓包,usbee是个入门逻辑分析仪,网上的盗版版本只要几十块钱, ...

可能和usb的外围电路也有关系,我的D+、D-两个角是直接连接到USB设备上的。找了FAE提供了一个电路上有一个保护电路,这个可以保证D+、D-的电平稳定。不过我后来还加了一些其他的操作,就是上电的头5秒中把音频数据的发送和接收停止了。好像这些操作都会使得usb枚举稳定。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-4-14 18:50:50 | 显示全部楼层
每次插拔,MCU有没有断电?
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-4-25 11:15:18 | 显示全部楼层
正点原子 发表于 2017-4-14 18:50
每次插拔,MCU有没有断电?

我们是usb供电每次插拔都是断电的,我又重新把原子的板子和st官方的discovery板子对比做了实验,发现官方的板子没有出现过一次不识别的现象。但是原子的板子也会有我上面描述的现象。
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-4-27 09:29:27 | 显示全部楼层
正点原子 发表于 2017-4-14 18:50
每次插拔,MCU有没有断电?

我这两天用官方的板子对比试验了,每次进行插拔100次,试验了5组官方的板子。没有发现出现设备不能识别的现象。我们的产品和原子的开发板还是会出现,原子的实验了500次出现了13次,我们的实验了200次出现了8次。
每次插拔都断电了。
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
发表于 2017-4-27 10:48:05 | 显示全部楼层
关注~帮顶
回复

使用道具 举报

9

主题

209

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1358
金钱
1358
注册时间
2015-12-19
在线时间
108 小时
发表于 2017-4-27 11:29:42 | 显示全部楼层
为什么要电脑断电   而且电脑断电可以解决问题   和电脑USB驱动有关系吗
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-4-27 11:51:41 | 显示全部楼层
yangkefeng 发表于 2017-4-27 11:29
为什么要电脑断电   而且电脑断电可以解决问题   和电脑USB驱动有关系吗

产品需要,用户那边是不能断电的。必须即插即用每次都识别。
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-4-27 14:28:44 | 显示全部楼层
将USB枚举过程DUMP出来,就知道哪里出问题了
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-4-27 14:35:09 | 显示全部楼层
zmingwang 发表于 2017-4-27 14:28
将USB枚举过程DUMP出来,就知道哪里出问题了

你好,请问一下你们用什么usb trace工具。我现在用的只能读出来usb的状态信息,只能看是否枚举成功了,枚举的流程看不出来。能不能发给我一份trace工具。
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-4-28 11:06:34 | 显示全部楼层
czdspeed 发表于 2017-4-27 14:35
你好,请问一下你们用什么usb trace工具。我现在用的只能读出来usb的状态信息,只能看是否枚举成功了,枚 ...

电脑上可以用Bus Hound,可抓出USB描述符交换的报文
设备端就简单了,将发送到USB总线的数据和从USB总线接收的数据全部打印出来看.要注意的是STM32设备库中处理数据是在USB中断里面进行的,如果用串口打印,最好用DMA的方式.
回复

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2017-4-28 12:56:51 | 显示全部楼层
如果是usb全速,可以试试用最便宜的usbee来抓包,usbee是个入门逻辑分析仪,网上的盗版版本只要几十块钱,比jlink还便宜
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-5-4 14:53:52 | 显示全部楼层
myxiaoniao 发表于 2017-4-28 12:56
如果是usb全速,可以试试用最便宜的usbee来抓包,usbee是个入门逻辑分析仪,网上的盗版版本只要几十块钱, ...

谢谢,我这边用用官方的std usbV1.1做驱动修改了,发现这个不识别的问题减轻了很多。我这两天反复试验只出现了几次。之前出问题的是usbv1.2 还不清楚这两个库哪里有问题。
回复

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2017-7-10 09:56:12 | 显示全部楼层
一般的话应该是新库更好啊,之前我说的那个usbee,协议分析能力很强大,它可以把usb按照事务展开,而不仅仅是简单的一个个hex值
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-7-10 10:22:45 | 显示全部楼层
myxiaoniao 发表于 2017-7-10 09:56
一般的话应该是新库更好啊,之前我说的那个usbee,协议分析能力很强大,它可以把usb按照事务展开,而不仅仅 ...

确实缺一个好的工具的话,很多情况要靠蒙才行。我们usb暂时还是用原来的标准库算了。
回复

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2017-7-10 10:24:58 | 显示全部楼层
czdspeed 发表于 2017-7-10 10:22
确实缺一个好的工具的话,很多情况要靠蒙才行。我们usb暂时还是用原来的标准库算了。

调试工具还是需要的,我说的那个才20,30块钱左右,谁用谁知道
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
 楼主| 发表于 2017-7-10 12:06:52 | 显示全部楼层
myxiaoniao 发表于 2017-7-10 10:24
调试工具还是需要的,我说的那个才20,30块钱左右,谁用谁知道

确实很便宜,我们之前借用过一个国外的要1000多刀,没想到国内的这么便宜。
回复

使用道具 举报

3

主题

197

帖子

0

精华

高级会员

Rank: 4

积分
538
金钱
538
注册时间
2012-7-19
在线时间
63 小时
发表于 2017-7-11 08:45:37 | 显示全部楼层
czdspeed 发表于 2017-7-10 12:06
确实很便宜,我们之前借用过一个国外的要1000多刀,没想到国内的这么便宜。

当然,我说的这个是盗版了,如果可以的话还是支持正版吧
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-4-2
在线时间
4 小时
发表于 2020-9-26 13:37:37 | 显示全部楼层
老哥,为什么我将usbd_audio_core.c替换成你的还是枚举不成功
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2015-4-2
在线时间
4 小时
发表于 2020-9-26 13:38:44 | 显示全部楼层
@令狐冲 发表于 2020-9-26 13:37
老哥,为什么我将usbd_audio_core.c替换成你的还是枚举不成功

是不是还需要修改其它文件,现在是设备都识别不了,我用的是HAL库
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-17 04:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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