I am using the CYUSB3KIT-003 EZ-USB™ FX3 SuperSpeed Explorer Kit connected to an FPGA through the GPIF interface.
The transmission from FPGA to the FX3 works fine, whereas in the other direction I have some issues.
15 out of 32 data signals are driven high properly, i.e. they reach more or less the 3.3V value; the other 17 instead can only reach a value of 2V. In addition, there is a voltage drop on the 22-ohm series resistors of these 17 signals, meaning that there is a current flowing somewhere (about 20-30mA, but still I am wondering how is it possible, since it is connected to an FPGA pin, that is high Z).
Dually, the above 15 data signals are not driven down to 0V, as they reach 1V (and there is the same voltage drop across the series resistors), whereas the other 17 can go down to 0V. All 32 signals are connected to the same FPGA bank.
I have tried everything possible downstream of the FX3 pins, so it seems that the culprit of this cumbersome behavior is the FX3. The firmware code is taken from an example provided and slightly adapted. The GPIF designer was used to generate the .h file to include.
So my question is if I am missing a pin setting or something else in the configuration process. But the strange thing is that half of the pins behave in the opposite manner with respect to the other half.
Thank youShow Less
I want to configure the GPIF II interface of CYUSB3014 in 32-bit parallel bus + Slave FIFO mode (bidirectional).
This clock frequency is stated in the data sheet as a maximum of 100MHz, but is it variable if it is 100MHz or less?
I want to change to 50MHz / 66MHz / 80MHz.
Also, if I change the clock frequency, do I need to change the FW? If it is yes, where and how should I change it?
Hi, I am interfacing a qvga sensor to my FX3 board. configured it according to AN75779 reference doc. I traced the data on wireshark and as per the calculation, it shows me the buffer data more than the 1 frame size. What could be the reason?
where I should look into it?
I'm using fx3 to stream video rgb24, at 60fps i did the changes in the descriptor files, the gpif files and the uvc files of appl note an75779.
for resolution 640x480 at 60fps the video comes proper , see attached file --> 640img ( proper greyscale hv ramp)
but when i change the resolution to 800x600 at 60fps the video is stable, but the video has visible stripes in the hv ramp
see attached file -->800img (hv ramp video stable and locked, but stripes visible). Can anyone provide a solution to this.
I'm using cypress fx3 to stream a static test pattern as video to vlc, to check for sharpness and greyscales. The format is yuv 422, y:u:y:v (yuy2) as detected by vlc codec information tab, and res is 640x480 at 60fps.
The problem i face is as follows, the video displayed by the vlc is stable(not losing sync) but it is not sharp at the edges(ie. it lacks sharpness), but when i do a video->take snapshot in vlc, the image saved by vlc is same as the original test pattern sent.
Can any one please tell me what settings should i do in vlc to get video decoded properly. I have attached 3 images for ref, test_pattern_640 is the original image sent as video, snapshot the imgae obtained from vlc using vlc->take snapshot, snippet is the video screen captured using the snippet tool while video is playing on vlc.
I am working on a project which uses FX3 to implement video application. Basically the device works fine. But when it is connected to USB 2.0 port and run bulk-in (video data) and control-in (register read) simultaneously, both bulk-in and control-in will hang. If bulk-in and control-in are not run simultaneously, or they are run in USB 3.0, everything is fine.
My firmware SDK is ver 1.3.4
The problem is the same (or silimar) to those discussed in the following links:
Also I checked the following discussions:
Refering to the solutions in above links, I made changes in FX3 firmware code by the two methods as follows:
1. Use CyU3PUsbSetEpSuspDisableMask() to disable DMA channel suspend during EP0 transfer
2. Write another funcition CyU3PDmaChannelSendData() to replace CyU3PUsbSendEP0Data() for control-in data sending.
Both method is helpful on this issue. The bulk-in and control-in are not hang mostly. But sometimes the data on control-in are corrupted. And sometimes the data transfer (both bulk-in and control-in) still failed (but not frequenctly and can be recoveried by end point reset).
The SDK ver 1.3.4 implements DMA suspend when control-in data needs to be sent out, to workaround data corruption issue in USB 2.0. But based on my issues (and other ones' issues in above links) it seems the DMA suspend operation is not stable. The above two method roll-backs the DMA suspend, but this does'nt resolve the data corruption issue.
I did the following test:
1. Remove control-in code, so there is only bulk-in transfer.
2. Added some code (the code is similar to those in ver 1.3.4 SDK CyU3PUsbSendEP0Data() function) which suspends bulk-in DMA, and then resume DMA after some delays (from some ms to some seconds). I can also see the bulk-in transfer may hang. So it looks the DMA suspend operation is not safe for us to call.
Here are the questions:
1. Why the DMA suspend/resume operation makes the transfer hang?
2. Is there any way to workaround the data corruption and hang issue for simultaneous bulk-in and control-in transfer in USB 2.0? That is, is there anyway to get stable bulk-in/control-in transfer for USB 2.0?
USBBulkSOurceSink Streming example on CYUSB3KIT-003 stop blinking LED after reflash.
FriendlyName="Cypress FX3 USB StreamerExample Device"
BcdUSB="03 10"It enumerates as
And Streaming test still gives more than 4 MBps (4-5 Gbps).
And trying to modify blink rate according to example gives:
CONTROL OUT transfer
CONTROL OUT transfer failed with Error Code:997
I can still send and receive data on Bulk In and Out endpoint.
The example BootLedBlink - blinks the diode.
What can be the issue?Show Less
Hi, I have interfaced the camera sensor to FX3 board. The output data is in the YUV2 format (as default in AN75779). I want to display the data in RAW format. Does FX3 support sending RAW data through USB?
How can I do that and where I need to do changes accordingly.
I complete a UVC camera with FX3 CyUSB3014 with guide of AN75779, but it works well in stream mode, but it goes bad in trigger mode;
The cmos sensor works in streaming mode, and outpus raw data; the raw data is transfered to PC through FX3 on USB bus. After I set this CMOS sensor into trigger mode, and have the trigger pin in high level, no transfer continues. the firmware prints log: "UVC: Completed 0 frames and 0 buffers".
I check the output of cmos sensor, PCLK,FV,and LV works well. it seems that the GPIF hasn't generate event to firmware, I don't know the reseaon, because the timing is good. In the meatime, I find, when the cmos sensor is in standby mode with trigger pin low, no PCLK,FV, and LV are found.Show Less
We are seeing an issue with our design that is very similar to
however none of the above provides a definite answer.
Let me outline the test design, that is basically your slave FIFO example: we have an FPGA interfacing with the controller, and that FPGA pushes 4096x32 bits into the controller whenever a DMA buffer becomes available (both FLAGA and FLAGB high). The USB controller FW only has an additional IIC block, otherwise identical to the example files. Attached the modified .h and .c files. On the PC side we try to do continuous bulk IN transfers either with our c# software or your Streamer app.
What we see is the following:
In most cases (4 out of 5 or so) there are no issues and transfer progresses continuously at the expected 380 MBps or similar speed, for extended periods of time (tens of minutes).
In other cases the controller seems to initialize in a "strange" state. Not sure whether this is Windows10 or driver or FW or electronics issue, but the above bulk IN transfer fails after a few seconds or tens of seconds, stalling/freezing the controller. Soft reset temporarily resolves the issue and data transfer continues, but to fail again and again after short periods of time. What I found to resolve the problem is a hard reset of the controller (either pin C5 or CyU3PDeviceReset(CyFalse);) followed by a reprogram.
1. Could you please advise on what causes this issue and how to solve it without having to hard reset?
2. Am I right saying that reset via pin C5 and CyU3PDeviceReset(CyFalse); are *exactly* the same or are there any differences between these?
Many thanks in advance,