CYUSB3014 在 Bulk IN时总报错Error Code: 997

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
xixi_3447666
Level 1
Level 1
5 questions asked First question asked First reply posted

pastedImage_3.png

在如图架构中, 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工程。

0 点赞
1 解答

找到原因了。

在c#中,host在每次BULK IN时调用 XferData(ref buffer, ref bytes)后,都会修改bytes值,导致bytes值可能小于512。所以在调用XferData(ref buffer, ref bytes)之前,先让bytes=512就解决了

在原帖中查看解决方案

0 点赞
4 回复数