发新帖我要提问
12
返回列表
打印

离奇的bulk in传输,求高人指点

[复制链接]
楼主: dayplover
手机看帖
扫描二维码
随时随地手机跟帖
21
dayplover|  楼主 | 2012-5-8 17:07 | 只看该作者 回帖奖励 |倒序浏览
报告一下,解决了,条件还是if((_GetENDPOINT(ENDP1) & EPTX_STAT) == EP_TX_NAK),只是因为BUS Hound显示的时候,对于完全相同的数组,会议repeat方式显示,开始一直没注意到,还以为只收到了一次。。。
但是,通过测试,发现了使用中断方式传输的话,每次最多只能传63个字节,也就是速率限制在63KB/S。
这个我的理解是:当发送超过64字节的数据时,需要两次以上的定时中断,假设每次定时中断是100μs的话,那么这一帧数据两个包之间就有100μ的间隔,主机收到第一个数据包之后,不会等待100μ,而是认为数据错误,就不应答了。

使用特权

评论回复
22
vigia| | 2012-5-10 11:00 | 只看该作者
报告一下,解决了,条件还是if((_GetENDPOINT(ENDP1) & EPTX_STAT) == EP_TX_NAK),只是因为BUS Hound显示的时候,对于完全相同的数组,会议repeat方式显示,开始一直没注意到,还以为只收到了一次。。。
但是,通过 ...
dayplover 发表于 2012-5-8 17:07

晕,不知道你在做什么

为什么不用中断回调函数?为什么你要自己去找判断条件?你的条件很不成熟啊

在中断回调函数中置位一个你自己的软件标志位,到你需要检查的中断函数里去检查这个标志位,不比你的方法好?

真是不知道怎么说了。。。

使用特权

评论回复
23
dayplover|  楼主 | 2012-5-10 11:49 | 只看该作者
感觉差不多啊,而且自设标志位的话,会调用一次EPND3的回调函数,这个浪费了些许时间。。。其实理想情况是,禁止EPND3的中断,仅仅使用查询的方式,正在向这个方向努力。。。

使用特权

评论回复
24
redcar| | 2012-5-18 20:25 | 只看该作者
真是奇怪,没碰到

使用特权

评论回复
25
yuanfke| | 2013-1-24 16:16 | 只看该作者
香水城 发表于 2012-5-6 22:06
对于全速USB,每个Token所能传送的最大包是64字节,大于64字节就要分开传送,正好64字节时就要多发一个0字 ...

想问一下香版主,如果我发送一个包是513个字节,是不是前面都是64字节发出去,这时上位机是收不到数据,只有到最后一个包只有一个字节发出时就一下子可以连全面的512个数据都收到?是这样子吗?

使用特权

评论回复
26
chentie| | 2014-9-20 09:50 | 只看该作者
dayplover 发表于 2012-5-5 16:04
多谢各位关心,问题已解决,将实验2中的传输64个字节改小即可。。。同时实验1中如果是64也不行。好吧,至少 ...

我也遇到这个问题,改小就好多了,为啥

使用特权

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

本版积分规则