在如图架构中, fireware用的是cypress提供的SlaveFifoSync.img,把cypress的control center工具略作修改,在PC机上不断进行BULK IN 传输测试,总是报BULK IN transfer failed with Error Code:997. 然后再也收不到任何数据,CYUSB3014的FLAG标志FLAGA=0、FLAGB=1。
易发生错误时的情况是:
1、当FPGA里fifo变空时必报;
2、上电后,FPGA里fifo有数据,刚开始BULKL IN测试偶尔报,
3、当出错是,示波器观察发现总是BULK IN 3次后停止,但PC机未收到任何成功的数据
文档AN65974里说添加CyU3PUsbLPMDisable()函数,但SlaveFifoSync固件工程里已经添加这个函数了。
文档FX3_SDK_TroubleShooting_Guide.pdf的2.3的II建议添加CyU3PDmaChannelResume (chHandle, CyFalse, CyTrue)和
CyU3PDmaChannelSetSuspend (chHandle,CY_U3P_DMA_SCK_SUSP_NONE, CY_U3P_DMA_SCK_SUSP_EOP),添加后也没有效果,不知添加的位置是否正确。
请问这是什么原因呢?Error Code的含义是什么?在哪里能查到?谢谢
附件是SlaveFifoSync工程。
已解决! 转到解答。
找到原因了。
在c#中,host在每次BULK IN时调用 XferData(ref buffer, ref bytes)后,都会修改bytes值,导致bytes值可能小于512。所以在调用XferData(ref buffer, ref bytes)之前,先让bytes=512就解决了