CyU3PDmaChannelGetBuffer () function returns the error 69 at super speed

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

cross mob
Anonymous
Not applicable

Below code works well at High speed, but return error 69 at super speed:

   

   dmaCfg1.size = 64;
   dmaCfg1.count = 2;
   dmaCfg1.prodSckId = CY_U3P_CPU_SOCKET_PROD;
   dmaCfg1.consSckId = CY_U3P_UIB_SOCKET_CONS_5;
   dmaCfg1.dmaMode = CY_U3P_DMA_MODE_BYTE;
   dmaCfg1.notification = CY_U3P_DMA_CB_CONS_EVENT;   
   dmaCfg1.cb = CyFxHIDDmaCallback;
   dmaCfg1.prodHeader = 0;
   dmaCfg1.prodFooter = 0;
   dmaCfg1.consHeader = 0;
   dmaCfg1.prodAvailCount = 0;   

   

   CyU3PDmaChannelCreate (&glChHandleHID, CY_U3P_DMA_TYPE_MANUAL_OUT, &dmaCfg1);    
   CyU3PDmaChannelSetXfer (&glChHandleHID, 0);
    ......

   

   status = CyU3PDmaChannelGetBuffer (&glChHandleHID, &buf_p, 2000);

   


    Why this happen? How can I make it work well at supper speed?

0 Likes
1 Reply
Anonymous
Not applicable

Hi,

   

Error 69 (0x45) is the timeout error which means the API is not able to get an empty buffer within the timeout duration (2000 mS).

   

Does this error occur the first time you call the API or does it happen somewhere in between after few successful transfers?

   

Please make sure that there is empty bufffers in the DMA Channel and all the previously filled buffers have been consumed by the USB (Computer)

   

Regards,

   

- Madhu Sudhan

0 Likes