阅读:1633回复:4
有谁知道如何让D12的BULK管道处理完一个命令后重新生效可以接收下一个HOST发来的数据?
.........
//发送select endpoint命令,选中bulk out * cregister = 0x04; context = * dregister; //批管道在空闲态时如果发现其缓冲区满,则进入CBW处理 if (context & FULLEMPTY) { TPBulk_CBWHandler(); } ......... 以上是我的查询方式的主循环中的一段代码,主要是通过select endpoint命令来判断D12的BULK OUT缓冲区有没有收到主机的数据(是否为满)来作为进入CBW命令块处理过程的条件。然后我让固件程序跑起来,用BUS BOUND捕捉IN和OUT的数据,发现第一个CBW被正确处理过后,发来第二个CBW命令块时难以满足缓冲区为满的条件,结果得不到处理。 请问各位大虾:如何在一个命令处理成功后将缓冲区清空以便接受主机发来的下面的数据? |
|
最新喜欢:![]() |
沙发#
发布于:2004-02-26 11:05
请问csw和cbw是什么dd??
两位大哥能否解释一下!!!! 我也正在做这个 |
|
板凳#
发布于:2002-07-10 16:29
我不太清楚你的意思,想CSW表现为错误的话,host会自动重新发一遍CBW的,这也是这种协议保持数据正确的一种方式,缓冲区如果你把数据读了之后最好每次都清掉
|
|
地板#
发布于:2002-07-10 10:43
那要是收到的CSW的状态为01(FAILED),还要不要清除缓冲区呢?
|
|
地下室#
发布于:2002-07-09 16:13
D12有一条命令可以清楚缓冲区的啊,如果你收到的CBW正确的话,你可以用这条命令的。
|
|