- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello!
We are using the FX3 and the AN75779 in a customer camera project.
For certain use cases we see the code executing gets stuck on the call to CyU3PGpifDisable(CyTrue).
It hangs until the watchdog expires and the processor is restarted.
We have noted this thread:
https://community.infineon.com/t5/USB-superspeed-peripherals/About-UVC-application-backflow-detect-p...
We have tried the various suggestions in that thread on temporarily disabling either all or specific interrupts, but it has no effect.
Is there a known solution to this problem?
This typically happens after a commit buffer failure when the streaming is first stopped an then restarted.
Regards,
Magnus
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the confirmation.
Please test this and let me know if it works
CyU3PPibRegisterCallback(CyFxUvcAppPibCallback,0); //disable the interrupt
CyU3PGpifDisable(CyTrue);
When GPIF is reloaded, enable the interrupts again
CyU3PGpifLoad(((CyU3PGpifConfig_t *) &CyFxGpifConfig)
CyU3PPibRegisterCallback (CyFxUvcAppPibCallback, CYU3P_PIB_INTR_ERROR);
CyU3PGpifSMSwitch(...)
Rashi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The thread and the KBA pointed in the thread refer to the case when CyU3PGpifDisable(CyFalse) is used.
From the description I understand, that you are using CyU3PGpifDisable(CyTrue) and then reloading the GPIF configuration again and starting the GPIF state machine when video streaming is resumed.
To understand the issue better, please let me know if you can try with CyU3PGpifDisable(CyFalse) and the workaround mentioned in FX3 FAQs - KBA224051 - Infineon Developer Community and check if the issue still persists
Rashi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi!
I'm reading the KBA224051 you refer to .... I can't find any other suggestion than the suggestions that we already have tested, ie to disable all (or selected) interrupts before the call to CyU3GpifDisable() and to reenable them directly after. That trick does not help. And I can't find anything else in that article referring to this issue ...
Yes, it is correct that we call CyU3PGpifDisable(CyTrue), beacuse we need to recofnigure the GPIF. We have two modes to chose from, a 8-bit and a 16-bit, so the state machine is configured rigth before streaming is started based on the selected mode.
Best Regards,
Magnus
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
Thank you for the confirmation.
Please test this and let me know if it works
CyU3PPibRegisterCallback(CyFxUvcAppPibCallback,0); //disable the interrupt
CyU3PGpifDisable(CyTrue);
When GPIF is reloaded, enable the interrupts again
CyU3PGpifLoad(((CyU3PGpifConfig_t *) &CyFxGpifConfig)
CyU3PPibRegisterCallback (CyFxUvcAppPibCallback, CYU3P_PIB_INTR_ERROR);
CyU3PGpifSMSwitch(...)
Rashi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have the same problem on cyusb3014,and it works for me, thanks a lot.