USB superspeed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
Hi All,
I've been developing a camera interface using Madhu Sudhan's RAW data driver firmware (FX3 / CX3 Firmware for Streaming RAW Image Data using Cypress Driver ) and have been making some progress. I have the OV5647 sensor streaming 5Mp, 1080p and now 720p RAW10 data to a PC running an application I've written using CyAPI and OpenCV. The PC app collects the streaming data and converts it to RGB format for display. I believe I have a post describing this in more detail.
I have some questions I'm hoping you can help me answer. I'll provide some background.
Of these three resolutions, I am getting two different behaviors. At 5Mp, the system (firmware and PC app) runs for a random period of time before CyAPI reports error 0x1F (31). Once this error ocurrs, firmware must be reloaded before any more image data can be transferred. Transfers typically proceed many tens of minutes before there's an error, and there are only a few detected DMA timeouts (error 0x3E3/995) at the onset of streaming, until the stream is established. This thread discusses the issue in detail: Streaming RAW image data using Cypress Driver part 2 and I've accepted the probably cause that was proposed in the thread that the app isn't grabbing the data quickly enough at times.
For all resolutions there are DMA timeouts (995) when the stream starts, but for 1080p and 720p these errors continue after the stream starts and continue during streaming. The result is very confusing. For 1080p, there seems to be no effect, the frame rate nearly matches the theoretical range from the sensor. But for 720p, the frame rate is seriously degraded by the constant errors & firmware recovery. These errors got me to wonder is the frames the CX3 is receiving from the sensor are corrupted. Since it's very difficult to probe the sensor's MIPI signals I began monitoring the HSYNC test point to count the number of scan lines in each frame. Using a deep-memory scope, I can monitor the HSYNC test point for many tens or hundreds of frames and see the individual horizontal transfer pulses with enough resolution to count and verify their numbers over the course of tens or hundreds of frames. This has led me to the inconsistency I mentioned in the title.
Given the behavior of the system for different resolutions, I'd expect to see perfect frames at 5Mp (since there are no errors I expect 1944 lines/frame) while the stream is running. Conversely, for 1080p and 720p resolutions, maybe there are incorrect numbers of scanned lines for these resolutions causing firmware to get out of sync and timeout. Since 1080p is better than 720p I'd expect its horizontal transfer counts to deviate from 1080 less often than 720p deviates from 720. This isn't what I found.
At all three resolutions, I am measuring 10 to 30% of the frames contain wrong numbers of scanned lines. This makes me wonder about the integrity of this test point. Is it reporting the wrong numbers of lines in each frame? Does it not match what firmware "sees"? If this high of a percentage of scanned lines is wrong, why don't ALL resolutions continually trigger error 995?
Can anyone explain what's wrong with my reasoning for this apparent paradox?
Thanks,
Scott
Show LessHello Everyone,
I want to customize the FX3 Bootloader such that it downloads Firmware image from the SPI interface into I2C EEPROM and than Boot Fx3 from I2C EEPROM later.
So Is it possible to tweak the Bootloader code for above requirement?
can I get any help in this regards.
Thanks and regards,
Pranay.
Show LessHello, I am testing 16bit YUV2 output camera with fx3.
Now I have a problem with image sensor or fx3 or something else(I don't know what is the problem exactly...).
My camera output image on pc is abnormal.
I think my fx3 firmware is the problem but I don't know what should I do for this problem.
I fixed gpif design uvc 8bit to 16bit and fixed almost related firmware code I think...
But output image was not changed... image still abnormal like that image I uploaded.
I touched all possbility of this problem in my firmware... like dma channel, buffer count, buffer size and bits per sec, Max frame size etc.
I will upload example image and eclipse firmware code.
Somebody help me please ~ !!
Thanks to read my question.
Have a good day.
Show Less
Hello,
I need to implement two functions on one USB device:
- USB-UART bridge (i.e. FX3 SDK cyfxusbuart example)
- synchronous slave FIFO protocol over GPIF II (i.e. FX3 SDK slfifosync example)
Both these functions must be active at the same time. For example the device must be able to send commands over the USB-UART bridge while receiving/sending through the FIFO.
What would the USB descriptors look like for this? Is there a good online or textbook resource that would help get me going? I could not find an SDK example with this kind of configuration.
Thank you,
Iztok
Show Lesshow to control 2 fx3 usb to work in different thread? When I use two thread to read/write data using fx3 usb, it will crash random while call function (XferData).
Could you help to share me some detail codes?thank.
Show LessCustomer declares a local array of 512 bytes in function, and it results in stack overflow.
What is the local variable size limitation for FX3 SDK?
Regards,
Kyle
Show LessHello all,
I got the ECP5 VIP EVK that includes Cypress CYUSB3014 FX3 USB3.
The default firmware for the CYUSB3014 is pre-loaded and it works with the demo config of Latice.
I want to change the image resolution of the demo and I was able to do it for the FPGA side but not for the Cypress side.
I got the UVC_AN75779 project but I don't know how to change the frame size in it.
Does anyone has the source files of the ECP5 VIP Cypress demo? and how do I change the frame size?
Thanks,
Ofer.
Show LessHello,
I am writing p port data to s port by creating manual channel between them and debugging with segger.
dmaCfg.notification = CY_U3P_DMA_CB_PROD_EVENT |CY_U3P_DMA_CB_RECV_CPLT ;
while debugging, the value for dmaCfg.notification is 12.what does mean?is CY_U3P_DMA_CB_PROD_EVENT is called?
dmaCfg.cb = CyFxSlFifoPtoSDmaCallback;
the value for dmaCfg.cb is showing error reading variable(please look at attached image).
let me know the reason.
thank you.
Show LessWhat is the FX3 initial state of GPIO if FX3 has not been programmed? tristated?
What is the FX3 initial state of GPIO if FX3 has been programmed and not been assigned a high or low?
I use CY3014, recently I find GPIO45 output a high when my board is new and the FX3 has not been programmed. I connect the GPIO45 with a pull-down resistor of 1K ohm, but GPIO45 has not been pulled down.
Show Less