Can you please elaborate your process?
How did you implement the start - stream - stop functions?
Also, are using streamer application to stream the data?
If you were using streamer, did you click on Transfer Data-IN while the streamer application was running?
Please elaborate your procedure so that i can try and reproduce it on my end.
I used a translator, so the grammar can be weird.
I will explain my condition in detail.
1. I referenced the original post 'CX3_RAWData_Cypress Driver and Descriptors.zip' as it is without modification.
If '#define RAW' in the source code is not set, it is normally displayed as UVC.
2. RDK : Denebola board. (with OV5640)
SDK : fx3_1.3.4
camera initial config : sdk default library
3. When set to '#define RAW',
displayed as 'cypress FX3 USB StreamerExample Device' in 'usb control center'.
4. i test
\Cypress\EZ-USB FX3 SDK\1.3\application\cpp\streamer\x86\Release\Streamer.exe
but, NO Succcesses Only Failures.
IN usb control center,
'cypress FX3 USB StreamerExample Device'
bulk in endpoint(0x83) -> Transfer Data-in
Only error code : 997
I want to receive data in yuv format as the original post author said.
(Actually, I should receive the raw data)
Please tell me what to do.
Please let me know if I have anything to do.
I went through the code and found that the issue is with the resolution settings not being written to the MIPI bridge or the image sensor before starting the streaming.
So, in the 0x99 vendor command, you will have to configure (write) the resolution settings to the MIPI block and the image sensor ( this is done in the CyCx3UvcApplnUSBSetupCB() when CX3_USB_UVC_SET_CUR_REQ is sent) as follows:
1.) Firstly, confirm the resolution that you want to stream from the available list( 720p, 1080p, 5M for SS).
2.) Check for the CX3_USB_UVC_SET_CUR_REQ, and copy the respective write settings for the resolution selected (let's say 1080p) and add it as shown:
This will write the 1080p settings to the MIPI block and the image sensor before calling CyCx3UvcAppInStart() -- works with the current 24KB buffer size being used!!
720p with the 24KB buffer size being used in the firmware doesn't work since the frame size (1280x720x2 = 1843200) is exactly divisible by the DMA buffer size of 24KB (24576 Bytes) which makes the frame end in a full buffer (which is not recommended) and so the GPIF state machines gets struck.
To avoid this, you can either use 23KB or 26KB of buffer size and try streaming. Using these buffer sizes will make the frame end with a partial buffer and the state machine will work as expected.
Alternatively, if you want to be able to try using all the resolutions, you can try as follows:
1.) Add separate vendor commands for all the resolutions available (for ex, 0x98 for 1080p, 0x97 for 720p ... and so on).
2.) Call the respective vendor command to the resolution you want to use before calling 0x99 (which contains only the CyCx3UvcAppInStart() and others) to start the stream.
This will give you flexibility of selecting whichever resolution you want to use (using vendor commands) before calling the 0x99 to start the streaming.
The data could not be checked, but it is operating normally without any errors.
Thank you very much.
I will link this solution to the original post.