打印
[STM32F4]

新的stm32f4 usb dcd库使用

[复制链接]
12839|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
浏览一下论坛里关于 usb的帖子,基本都是 usb fs 老版本的库,有人使用新版本的库么?使用过程中有啥问题没有?有的话 大家分享一下 以后也少走弯路。

起个头

usb_dcd_ini.c  DCD_WriteEmptyTxFifo函数有个bug,会导致经常死讯混,导致usb库耗时过长。应该如下修改:
沙发
bjxdylzsts|  楼主 | 2014-4-22 11:51 | 只看该作者
有人用f4 的新的库的么,顶起来,沙发我占了~

使用特权

评论回复
板凳
玄德| | 2014-4-22 13:30 | 只看该作者
也用这个库,遇到类似问题,有时会死机。

怎么改,lz能说清楚点吗?

使用特权

评论回复
地板
bjxdylzsts|  楼主 | 2014-4-22 13:48 | 只看该作者
玄德 发表于 2014-4-22 13:30
也用这个库,遇到类似问题,有时会死机。

怎么改,lz能说清楚点吗?

那个函数加图上红色部分就ok了啊

使用特权

评论回复
5
玄德| | 2014-4-22 13:59 | 只看该作者

明白了,回头试一试。

多谢了。


使用特权

评论回复
6
zcl143| | 2014-4-22 15:39 | 只看该作者
感谢楼主分享

使用特权

评论回复
7
jialaolian| | 2014-5-8 19:24 | 只看该作者
我也碰到了在这个地方死机,我是一直进入中断,不能退出,晚上回去试下看看,谢谢楼主啦

使用特权

评论回复
8
aoty| | 2014-5-15 10:45 | 只看该作者
楼主,你好!我最近也在调试USB,但是调出来的效果不是很令人满意的!
感觉USB对时间的要求比较严格,我使用的是F4的OTG功能,枚举大部分还是可以的,复位大约20-30次出现那么一次不成功,但是上电是没问题的!
还有一个问题就是USB设备会死机,大约使用100多次就会死机一次!立即复位一下就好了!
顺便补充一句的就是我可能官方的例程改的太多了,LCD显示改成了打印,还加了CAN的配置!

使用特权

评论回复
9
bjxdylzsts|  楼主 | 2014-5-15 12:28 | 只看该作者
aoty 发表于 2014-5-15 10:45
楼主,你好!我最近也在调试USB,但是调出来的效果不是很令人满意的!
感觉USB对时间的要求比较严格,我使 ...

是不是你的can的中断影响了usb的处理,把 usb中断优先级改的比can高试试。

使用特权

评论回复
10
aoty| | 2014-5-15 16:14 | 只看该作者
bjxdylzsts 发表于 2014-5-15 12:28
是不是你的can的中断影响了usb的处理,把 usb中断优先级改的比can高试试。

哥,不是的!我的CAN发送是查询发送的!!

还有一个恶心的地方就是USB不可以随便的加一些自己的东西,比如我多加一句打印,枚举的成功率就会降低!

不知道你有这方面的经验么、

使用特权

评论回复
11
bjxdylzsts|  楼主 | 2014-5-16 09:16 | 只看该作者
aoty 发表于 2014-5-15 16:14
哥,不是的!我的CAN发送是查询发送的!!

还有一个恶心的地方就是USB不可以随便的加一些自己的东西,比 ...

这个没经验,要不呼叫版主吧

使用特权

评论回复
12
xush1101| | 2014-8-1 22:06 | 只看该作者
楼主这个问题我也有发现,可是改了以后出现了in端点停掉了,怎么都恢复不了,这是个什么情况啊?楼主有碰到没有?

使用特权

评论回复
13
bjxdylzsts|  楼主 | 2014-8-5 09:23 | 只看该作者
xush1101 发表于 2014-8-1 22:06
楼主这个问题我也有发现,可是改了以后出现了in端点停掉了,怎么都恢复不了,这是个什么情况啊?楼主有碰到 ...

我改了后 一般情况下 是正常的, 但在 干扰严重的情况下,或者in 管道数据负载比较重的情况下,主机读到三次in错误后,会把该管道 stall掉,此时必须重新初始化usb模块才可以重新启用改管道。 我还不确定 这种情况下 到底是哪块引起的,是不是这块我也不知道。 干扰影响一般是 in管道挂掉,out管道还正常,很纳闷。

使用特权

评论回复
14
yan2005| | 2014-8-11 15:04 | 只看该作者
bjxdylzsts 发表于 2014-8-5 09:23
我改了后 一般情况下 是正常的, 但在 干扰严重的情况下,或者in 管道数据负载比较重的情况下,主机读到 ...

"干扰严重的情况下,或者in 管道数据负载比较重的情况下",  这句话具体是指什么呢? 请楼主详细解答下吧。

使用特权

评论回复
15
bjxdylzsts|  楼主 | 2014-8-11 15:22 | 只看该作者
yan2005 发表于 2014-8-11 15:04
"干扰严重的情况下,或者in 管道数据负载比较重的情况下",  这句话具体是指什么呢? 请楼主详细解答下吧。 ...

跑电机的时候。电流波动比较大的时候。电磁干扰

使用特权

评论回复
16
yan2005| | 2014-8-12 08:25 | 只看该作者
bjxdylzsts 发表于 2014-8-11 15:22
跑电机的时候。电流波动比较大的时候。电磁干扰

那就放心了,我的板子上不使用电机。多谢!

使用特权

评论回复
17
玄德| | 2014-8-12 09:58 | 只看该作者
LZ无私,再顶一次。

使用特权

评论回复
18
yan2005| | 2014-8-21 12:49 | 只看该作者
bjxdylzsts 发表于 2014-8-5 09:23
我改了后 一般情况下 是正常的, 但在 干扰严重的情况下,或者in 管道数据负载比较重的情况下,主机读到 ...

"主机读到三次in错误后,会把该管道 stall掉,此时必须重新初始化usb模块才可以重新启用改管道。 我还不确定 这种情况下 到底是哪块引起的,是不是这块我也不知道。"

麻烦楼主介绍下"重新初始化usb模块才可以重新启用该管道具体是怎么做的"。按照楼主改法之后,我现在碰到了类似的问题了。多谢!

使用特权

评论回复
19
bjxdylzsts|  楼主 | 2014-8-21 14:25 | 只看该作者


先让 上拉电阻断开, 然后 复位usb内核(时钟),然后 usb模块重新初始化。

上位机这  做成    发现设备重新枚举 即自动重新连接即可。

错误的判断, 一段时间内未收到 本应该 发送下来的请求。

使用特权

评论回复
20
yan2005| | 2014-8-21 17:07 | 只看该作者
楼主热心人啊,感谢回答。
1. 设备检测到了stall的发生之后,就开始复位重新初始化吧?
2. 这样做对速度的影响大吗? 晚上试下。

另外我这里刚才重新用bus hound看了下,是出现了xact error,查了手册,应该是发送了超过max packet size的数据,或者设备反应太慢所导致的。目前还不清楚到底是什么原因导致的。在bus hound最后的地方就是出现了reset pipe,应该也是pipe挂起了,和你的现象类似。我想用楼主上面的办法应该也有用。我PC那一侧的现象是ReadFile()读到的数据量为0,即一直读不到数据。我用的是High speed模式。

使用特权

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

本版积分规则

10

主题

129

帖子

0

粉丝