阅读:749回复:0
曾问过的:把EP6端点的数据读上来。jinhuiren老大指导过
我用EZ-USB自带的一个例子bulksrc,用自带的控制面板download到USB的RAM,在着个例子的初始部分,就把一些递增数据储存到EP6FIFOBUF里。
******************************************** jinhuiren老大给出了提示: 如果你用的是例子代码并且没有修改过的话,说明你没有弄明白例子的意思! BULKSRC的主要流程是先把主机通过EP2或着EP4传到设备的数据存储到哪个64K的RAM里,然后当主机通过EP6或者EP8读取数据的时候再把数据从RAM里读出来回传给主机! 但是你贴出来的那一段程序显然用的是EP4和EP8,直接REARM EP2和EP6,你读EP6当然没有数据了,也有可能读到的是随机数。 你这样做,先写一批数据到EP4,然后再用EP8读回去试试! **************************************************** 我认为BULKSRC的主要流程是这样的: 1、初始化,向EP6端点写512个数字。 2、检查EP2是否空,如果非空,就arm EP2。 检查EP6是否满,如果非满,就arm EP6。(在下面的检查中并没有用到EP2和EP4,不知道为什么还要arm他们?) 检查EP4是否空,如果非空,就把EP4里面的数据传输给myBuffer。 检查EP8是否满,如果非满,就把myBuffer里的数据传输给EP8。 由上可看出,EP6没有参与数据传输,既然EP6里已经写了512个数据存储在里面了,为什么就读不出来呢?偶就纳了闷了! bulkControl.pipeNum = 2; bResult = DeviceIoControl (hDeviceFX2, IOCTL_EZUSB_BULK_READ, &bulkControl, sizeof(bulkControl), &inBuffer[dwTotalBytes], 512, &nBytes, NULL); } [编辑 - 11/7/03 by fengzhongzhige] |
|
|