USB Data Transfer Failures when added new Interrupt endpoint.

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

cross mob
ankitvats846
Level 2
Level 2
10 questions asked 25 sign-ins 10 replies posted

Hi, 

FPGA is connected to FX3 with GPIF 32 interface. And initially two endpoint are created e.g. 0x01 and 0x81 .

So, Host pc can directly communicate the FPGA though DMA channel and its work fine.

But when a "Interrupt Endpoint (0x82)" was added for sending the GPIO interrupt info to Host pc , Communication between Host pc to FPGA stopped working ? 

CyU3PDebugInit() ; Function is use to create the DMA channel for interrupt.  

 

Sending the data on Interrupt endpoint

 

ankitvats846_0-1669618990569.png

Configuration on Interrupt endpoint 

ankitvats846_1-1669619448025.png

 

0 Likes
1 Solution
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello,

Please confirm if the host is reading the interrupt endpoint continuously as CyU3PDebugPrint will get stuck if the DMA buffer overflows (i.e. data not read by the host) or please call CyU3PDebugPrint only when host starts reading data

Regards,
Rashi

View solution in original post

0 Likes
3 Replies
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello,

Please confirm if the host is reading the interrupt endpoint continuously as CyU3PDebugPrint will get stuck if the DMA buffer overflows (i.e. data not read by the host) or please call CyU3PDebugPrint only when host starts reading data

Regards,
Rashi
0 Likes
lock attach
Attachments are accessible only for community members.

Hello,

I try Two things on Fx3 Firmware  

1)  Disable the interrupt End point  ( Gpio interrupt Call back function is Enable). The data Transfer                    between Host  to FPGA is stable thought DMA Channel created in Auto mode is stable.

2) Comment the  CyU3PDebugPrint() function  call from everywhere in the Firmware.                    

      Interrupt endpoint and Gpio Interrupt Call back function is Enable but the ongoing data transfer get failed ??

 I saw the Section 2.3 in Infineon-TroubleshootingGuide.pdf.  Is this helpful for us?

0 Likes

Hello,

From the thread description, I understand that the Interrupt endpoint is used for sending the debug prints to the USB host. Is my understanding correct?

If yes, please note that CyU3PDebugInit creates a MANUAL OUT DMA channel with the socket that is passed as first parameter to the API. So, when CyU3PDebugPrint is called the data is sent to USB host over the DMA channel. If the host application, doesn't read the data on interrupt endpoint then DMA overflow will happen and CyU3PDebugPrint will get stuck. So, we recommend not to call CyU3PDebugPrint before the Host application is ready to read the data from FX3.

 Interrupt endpoint and Gpio Interrupt Call back function is Enable but the ongoing data transfer get failed ??

>> I understand that interrupt endpoint is used for getting the debug prints. Is my understanding correct?  Please let us know if any APIs fail when interrupt endpoint and GPIO interrupt callback is enabled. Also, let me know to which point of section 2.3 are you referring.

Please share the code snippet of GPIO interrupt callback for us to understand the issue better

 

Regards,
Rashi
0 Likes