阅读:1349回复:0
关于D12丢包问题
上次有位网友提到D12使用中丢包的问题,这里把我知道的说一下。
首先,我碰到的问题是用通道2(64 BYTES)时每次丢最后一个包,有一个帖子中提到只能收一个包,这我没碰到。 可以确定一点,这和D12的double buffer有关,在bulk out的情况下,当第一个bulk包传到D12,引发INT0下降沿,在MCU未将INT0重置为高时,因为double buffer的原因,第二个bulk包也能传到D12。这就引起INTO下降沿缺少一次(我用示波器看过),也就是说少进一次中断,自然会引起丢包。 至于解决办法 1:使MCU足够快,在第二个bulk包来之前将INT0重置为高。(我用的是AT89C52,24K。可能WINBAND的可以) 2:大家可以看一下PHILIPS的例程,在ISR.C中,有一个专处理double buffer的子程序,有一个命令0X84可判断buffer中是否有数剩余(注意,此命令在D12的文挡中没有,是在D11中才有,我问过PHILIPS的FAE,他说可以通用) 其实,我因为项目很急,也没时间去一个个试,上面的方法都只是我的推断。好在我不需要很高的速度,所以就用了通道1,反正也可编程为bulk,16byte也够用了。哪位兄弟有时间试,一定把答案share一下哦。 有driverdevelop上的网友问我这个问题,我元旦在江西婺源玩,一直没上网,见谅。这一并说了。 有问题欢迎一起讨论。 tony.fu@sinowealth.com.cn 对了,PHILIP的FAE的联系方式:潘小雷, xiaolei.pan@philips.com 0755-5185311*8205 他人很好,很热情,有问题可以找他。 (希望不要把他的电话打爆,呵呵) |
|
|