USB superspeed peripherals Forum Discussions
I use the cyusb3kit-003 to connect FPGA with the fifoslave mode,I use the code that can be used in other people ,but I found that flag_a and flag_b is used to write data to cyusb3kit, they are useful,but the flag_c and flag_d is used to read data from cyusb3kit , they seems like not working, when i select the botton that Transfer Data-OUT ,i found that flag_c and flag_d was always be low, i also set the water maket, but they never change, they are in low forever,and then i Transfer Data-IN ,the writing process was broken too. I can't found the reason that flag_c and flag_d change to low and keep this forever.Show Less
I am trying to send 24bit PCM to the USB host using a composite UVC and UAC device. For testing purposes, we are sending 1 data sample through GPIF at a time with the data being left-justified to MSB. This means that we have 24 out of the 32 GPIF bus bits writing data while the other 8 are tied to zero. Reading through the documentation on UAC, it seems the only modifications I need to make to the sample UAC descriptors is to modify the bSubframeSize and bBitResolution fields to 0x04 and 0x18 respectfully.
However making these modifications prevents the USB device from working. I go to record a video (and thus enable the UAC application) and the camera freezes and then returns to the non-recording state. The UAC audio interface never sends any data. Can I have some guidance on why these two modifications would stop the USB device from working? I am using UAC 1.0 which should support these two modifications. I am using the Windows Camera application for testing so I am not sure if is just that that application doesnt support 4 byte / 24bit resolution audio.Show Less
I am streaming UAC audio from an FPGA to the USB host using the Windows Camera application and am experiencing backpressure I think is from the FX3 - USB host connection but am are unsure how to approach debugging.
The FPGA has an integrated FIFO with input audio which is then transferred to the FX3 FIFO through GPIF and then the FX3 uses an CY_U3P_DMA_TYPE_AUTO_SIGNAL DMA channel to transfer data to the USB host. The FX3's audio endpoint is sending data to the USB host but not at a fast enough rate, so the buffer flags we are using to control data flow from the FPGA get stuck asserted for upwards of 1000 cycles resulting in data loss due to the FPGA's buffer filling. We are streaming 2 channel, 16 bit PCM audio with a 48kHz sampling frequency.
The device also has a UVC BULK endpoint and this does not experience any issues with backpressure. We have checked bandwidth and load balancing for sending data through the FX3 and what we are trying should be possible . We are sending uncompressed UYVY 1080p30.
Looking online it seems that if not enough IN tokens are being sent then this can happen but I can not find any reference on how to approach this type of problem. How would I go about debugging this type of error?Show Less
I have been using ov7670 sensor with fx3 board but i am getting black screen on VLC i have followed AN75779 example and modify it according to my need:
My connections are :
PCLK : PCLK
XCLOCK :24 MHZ
SCL : SIOC
SDA : SIOD
There DMA buffer failure ...for that i have incresed DMA buffer time but no effect...i am getting frame count but not DMA buffer fill..My UART log i am attaching to it..after that read some thread and added Partial buffer and Cons and Pros events..kindly help me...
I am trying to use FX3 with OV7670 and following the instructions mentioned in AN75779 and on this Link Embedded Engineering : DIY USB 3.0 Camera: UVC Video Device Class VGA Camera Using Cypress FX3 (circuitvalley.com). So I have modified accordingly and enabled the various debug interfaces as mentioned in the troubleshooting the black screen section in AN75779. I have directly soldered the camera on the FX3 and providing the external XCLK using the secondary controller with 24MHZ as clock. the complete setup is powered by the FX3 usb connection only. I see only the Frame counter going up but no data is received in the buffers as per the debug log.
But OV7670 is sending the data as I have checked using the oscilloscope, Attaching those too.
Attaching the firmware used pls guide us in running this sensor.
NOTE: I am using VLC to see the output and also using wireshark to snoop the usb data no 16K byte data is received.
I am using FX3 SDK Eclipse IDE for my example project AN75779 and I want to debug my firmware using eclipse.
I tried to follow steps by Debug As > Local C/C++ Application , but it says no binary files present
I also tried Debug As > Debug Configurations and gave project directory as mentioned in the screenshot file but getting error "Failed to execute MI command" (screenshot for error is attached).
I am not sure which file path I should give here or I am doing any other thing wrong.
I write a fw for FX3 application.
But after programming firmware, the program menu of device is only show FX2 and disable FX3.
Meanwhile, I write a C# program to detect my firmware found device object will be asserted, because dev object will be set to null when I cast device to CyFx3Device(dev = usbDevices[DeviceName] as CyFX3Device).
I tried to copy Device Descriptor of SDK example UsbSpiDma, and my firmware is still recognized as FX3 Device.
Can anyone give suggestions to me, please?
I have some questions to ask about dma flags.
I write a verilog design to access FX3 DMA by GPIF II.
I build a DMA AUTO channel between GPIF II Thread 1 and Bulk In Endpoint,
and set Thread 1 flag as DMA_ready, initial as low, active dma flag.
After I programming my fw, thread 1 flag goes high.
But after a little while, this flag goes low without any P Port and USB transaction.
Since dma flag goes low, my verilog design cannot push any data into FX3 DMA.
Can somebody explain why dma flag goes low?
I used Verilog code that others can run smoothly in slavefifo mode, and then used their EZ USB SUITE software program, but strangely, I couldn't run read operationsShow Less
I found the description about I2C API as below,
The API will return when FX3 has transmitted the data.
The API will return when FX3 has received the data.
Does that mean these are blocking APIs that the API will be blocked until the transmission has completed and return the result of operation?