打印
[STM32F4]

407 USB问题(香主请进)

[复制链接]
3245|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bjxdylzsts|  楼主 | 2014-2-28 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
你好,我们现在在用407的USB模块。  

代码是根据 官网例程里的 cdc 改的,有两个问题请教一下:

问题1
官网例子中,USB的处理是在OTG_FS_IRQHandler中断里处理的。

我们的使用场合对时间的要求比较高,所以 不希望 usb在中断里处理。

现在 将 usb 处理函数直接放到 1ms的定时器中去,枚举和数据传输可以,但丢数据比较频繁。 用的是176字节每10ms;

请问有没有  不在中断中处理usb功能 的  可靠的软件 方案或者例程?

问题2
关于 端点缓冲长度的配置。
我现在用了端点的配置时这样的,

现在发送管道2没ms发送176字节的数据可以, 如果发送大的数据,不如352字节,
开始 能正常运行一段时间, 但  之后  用电脑 busbond工具 监控提示 stall pid,之后 那个管道就停止工作了。
我想可能 和 这个配置有关系。

有没有 配置的建议 或者   是不是  这种模式下 每次 发送的 数据就 不能太大?
沙发
bjxdylzsts|  楼主 | 2014-4-16 13:32 | 只看该作者

使用特权

评论回复
板凳
huangqi412| | 2014-4-16 13:40 | 只看该作者
官网例子中,USB的处理是在OTG_FS_IRQHandler中断里处理的。
我们的使用场合对时间的要求比较高,所以 不希望 usb在中断里处理。
现在 将 usb 处理函数直接放到 1ms的定时器中去,

好脑残的想法。。。

使用特权

评论回复
地板
bjxdylzsts|  楼主 | 2014-4-17 09:27 | 只看该作者
huangqi412 发表于 2014-4-16 13:40
官网例子中,USB的处理是在OTG_FS_IRQHandler中断里处理的。
我们的使用场合对时间的要求比较高,所以 不希 ...

现在 放到 125us 中断 可以了。其实 1ms中断里也可以,就是可能会漏数据

使用特权

评论回复
5
icecut| | 2014-4-17 09:44 | 只看该作者
huangqi412 发表于 2014-4-16 13:40
官网例子中,USB的处理是在OTG_FS_IRQHandler中断里处理的。
我们的使用场合对时间的要求比较高,所以 不希 ...

1.放在1ms中断应该比usb中断更差....看不起usb的,必将被usb坑了..
2.176,352,这种长度你们是怎么得出来的呢.牛X的一塌糊涂....

使用特权

评论回复
6
icecut| | 2014-4-17 09:45 | 只看该作者
bjxdylzsts 发表于 2014-4-17 09:27
现在 放到 125us 中断 可以了。其实 1ms中断里也可以,就是可能会漏数据

407是fs 的usb,用125us只能让他们的系统更烂.

使用特权

评论回复
7
bjxdylzsts|  楼主 | 2014-4-17 12:36 | 只看该作者
icecut 发表于 2014-4-17 09:45
407是fs 的usb,用125us只能让他们的系统更烂.

为啥?高手分析分析

使用特权

评论回复
8
bjxdylzsts|  楼主 | 2014-4-17 12:38 | 只看该作者
icecut 发表于 2014-4-17 09:45
407是fs 的usb,用125us只能让他们的系统更烂.

用407控制电机的,125us是电机控制的周期,usb不能用中断,会影响电机运转的。usb是用来传输数据上位机监控的。

使用特权

评论回复
9
icecut| | 2014-4-17 13:31 | 只看该作者
bjxdylzsts 发表于 2014-4-17 12:36
为啥?高手分析分析

125us中断可以完成hs usb的传输查询...fs 1ms就够了.

使用特权

评论回复
10
icecut| | 2014-4-17 13:32 | 只看该作者
bjxdylzsts 发表于 2014-4-17 12:38
用407控制电机的,125us是电机控制的周期,usb不能用中断,会影响电机运转的。usb是用来传输数据上位机监 ...

你8次电机控制中,其中一次处理usb就好...
如果usb用dma.只需要处理dma中断,会更加少...

使用特权

评论回复
11
bjxdylzsts|  楼主 | 2014-4-17 14:52 | 只看该作者
icecut 发表于 2014-4-17 13:32
你8次电机控制中,其中一次处理usb就好...
如果usb用dma.只需要处理dma中断,会更加少... ...

全速 不能用dma啊,手册上写了  高速才能用dma,高速要用phy。

使用特权

评论回复
12
bjxdylzsts|  楼主 | 2014-4-17 14:54 | 只看该作者
icecut 发表于 2014-4-17 13:31
125us中断可以完成hs usb的传输查询...fs 1ms就够了.

usb中断时间占用不长,所以就放到125us最后 空闲的时间,这样丢数据的几率小点· 高手 批量传输bulk in 一段时间后 stall pid  之后 就怎么也进不去 usb bulk in 中断了,怎么穿不出去数据,这种情况遇到过么?

使用特权

评论回复
13
icecut| | 2014-4-17 18:13 | 只看该作者
死掉之后dump一下寄存器吧.估计把硬件状态搞坏了吧

使用特权

评论回复
14
huangqi412| | 2014-4-18 14:22 | 只看该作者
icecut 发表于 2014-4-17 13:31
125us中断可以完成hs usb的传输查询...fs 1ms就够了.

你错了。。。
如果只是这两个东西没其他
首先楼主的电机控制节奏8K挺高的,不知道用来干嘛。算了每次进去控制要干多少事情,占多少时间没?CM4上百M速度很快,但还是快进快出好。
其次1MS中断处理USB丢数据频繁,显然是幁长度大于64字节。  12M USB端点大小最大64字节,超过64字节切开发送,1MS内不止1次发送完成中断。具体USB协议细节忘记了,但你这么拖拉HOST早发飙啦。
所以,8K定时中断优先级高,别弄太久,快男的干活。USB优先级低,同样别在中断里婆婆妈妈占时间。

使用特权

评论回复
15
icecut| | 2014-4-18 14:55 | 只看该作者
huangqi412 发表于 2014-4-18 14:22
你错了。。。
如果只是这两个东西没其他
首先楼主的电机控制节奏8K挺高的,不知道用来干嘛。算了每次进去 ...

bulk也是64???
也可能我搞hs和ss习惯了.只记得有512和1024了...
usb可以nak的,这样会拖慢usb总线.而不会出错.

使用特权

评论回复
16
huangqi412| | 2014-4-18 15:25 | 只看该作者
icecut 发表于 2014-4-18 14:55
bulk也是64???
也可能我搞hs和ss习惯了.只记得有512和1024了...
usb可以nak的,这样会拖慢usb总线.而不会 ...

12M是64

使用特权

评论回复
17
huangqi412| | 2014-4-18 15:40 | 只看该作者
icecut 发表于 2014-4-18 14:55
bulk也是64???
也可能我搞hs和ss习惯了.只记得有512和1024了...
usb可以nak的,这样会拖慢usb总线.而不会 ...

USB确实可以一直NAK,HOST有脾气也不会发飙。
他现在问题是:假设一幁100字节, 第一次切出64字节发送,HOST收到了,继续向他要,他不给,HOST暂时不要了,过1MS他自己发现自己没给剩下36个,又主动给,HOST此时不收就丢了,从机是不能主动给HOST送东西的。  再混乱点,端点都要挂起了。

使用特权

评论回复
18
icecut| | 2014-4-18 16:57 | 只看该作者
huangqi412 发表于 2014-4-18 15:40
USB确实可以一直NAK,HOST有脾气也不会发飙。
他现在问题是:假设一幁100字节, 第一次切出64字节发送,H ...

看你这么写,我想起来了.这usb ip要使用饥饿写.不要提前写fifo,收到nak中断再写...否则,肯定死翘翘...
我这可是看的官方提供的驱动....是synopsys提供的

使用特权

评论回复
19
zhangyan8600| | 2017-7-27 12:25 | 只看该作者
icecut 发表于 2014-4-17 09:45
407是fs 的usb,用125us只能让他们的系统更烂.

你好,大咖,我有个usb的问题想请教下你,我qq122400827,麻烦了谢谢哦,

使用特权

评论回复
20
zhuotuzi| | 2018-6-7 09:41 | 只看该作者
有解决吗

使用特权

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

本版积分规则

10

主题

129

帖子

0

粉丝