I am a very new at hardware programming.
I try to solve next task.
Some board continuously generates a 16-bit data and clock. Signal data must be transferred to the PC via USB. This board doesn't have any control signals, any adresses and any flags. Only 16-bit data and clock. I use CyUSB3KIT-003 to connect my board with PC. The board is already connected to CyUSB3KIT-003 via GPIO 0-15 (for data) and GPIO 16 (for clock). It needs set up CyUSB3KIT-003 for transfer data to to the PC via USB.
I think I can use "The synchronous Slave FIFO interface of EZ-USB® FX3™ " example described at AN65974 document to solve my task. But I'm not sure.
Help me please understand next points. First, should I use GPIF in my case or not? Maybe there is some other easier way? And, secondly, If it needs use GPIF, is there some fixed sequence for creating interface?
Also I will be grateful for any advice for solving this task.Show Less
AMCAP application unable to display any data on its screen. On PC side we are able to see data through USB analyser but not on the AMCAP application.
Image sensor: AR1335
AR1335 configured with : RAW8 , 640*480 @ 2FPS and CSI clock-160MHz
CX3 MIPI Configurations :
INPUT video format : RAW8
OUTPUT video format : 24bit
640*480 @ 6FPS and CSI clock-160
CyU3PMipicsiDataFormat_t dataFormat : CY_U3P_CSI_DF_YUV422_8_2 (also tried CY_U3P_CSI_DF_RGB888 , CY_U3P_CSI_DF_RGB565_2 )
Number of bits per pixel: 16 (8 bit also tried )
Width in pixel: 320 (640 also tried)
0x59, 0x55, 0x59, 0x32, /*MEDIASUBTYPE_YUY2 GUID: 32595559-0000-0010-8000-00AA00389B71 */
0x00,0x00,0xe1,0x00, Min bit rate (bits/s):14745600=640*480*8*6
0x00,0x00,0xe1,0x00, Max bit rate (bits/s):14745600=640*480*8*6
0x00,0xb0,0x04,0x00, Maximum video or still frame size in bytes(Deprecated) 640*380
CX3- log :
TimeDiff = 10686 ms FPS = 2
Prod = 18 Cons = 18 Prtl_Sz = 28512 Frm_Cnt = 31 Frm_Sz = 691200 B
Prod = 18 Cons = 18 Prtl_Sz = 28512 Frm_Cnt = 32 Frm_Sz = 691200 B
Prod = 18 Cons = 18 Prtl_Sz = 28512 Frm_Cnt = 33 Frm_Sz = 691200 B
Prod = 18 Cons = 18 Prtl_Sz = 28512 Frm_Cnt = 34 Frm_Sz = 691200 B
we have ported the working UVC application (AN75779) from the "EZ-USB ®FX3 SuperSpeed Explorer Kit" to our target board. We have dapted the schematic nearly exactly from the FX3 kit. We changed the USB connector to a C-type version. The software runs properly on the FX3-kit.
After loading the software into RAM of the device of our target board, host does not recognize the FX3 device. When the bootloader device disappears in the device manager list, no other device appears.
We have tried to debug to get to the cause of the problem using the "CyU3PDebugPrint" call. Unfortunately, the CyU3PDebugPrint() is not very helpful in our case. The console gets only the output of the first "CyU3ODebugPrint" call. A second print instruction even directly after the previous one will not be seen.
We know that ThreadX may take over the execution of others threads in-between but at some time the second print should be reached and also executed.
For our target debug interface we connected the UART at GPIO53..GPIO56 und used an external TTL-USB converter: CY7C65213.
Does anyone know what could be the cause of this strange behaviour?
I can't speak English well.
In the FX3 SlaveFIFOSync 5Bit example, we want to use 6 ENDPOINTs.
endpoints 0x1, 0x2, 0x3 works well.
But endpoints 0x81, 0x82, 0x83
BULK IN transfer
BULK IN transfer failed with Error Code:997 occurs.
I checked the 5bit FIFO ADDR
From 0 to 31, the flag of the INPUT endpoint did not occur.
Only output endpoint 0x1~0x3 operates.
If you change the positions of CY_U3P_PIB_SOCKET_0 and CY_U3P_PIB_SOCKET_4, this time they all change to INPUT and OUTPUT does not work.
Can you explain what the problem is?
I want to use all 6 ENDPOINTs
Thank you.Show Less
I am facing an issue with SDK 1.3.4 while using multi thread. I have ported a project source to SDK 1.3.4 that I already used in SDK 1.3.1. I have not changed anything in my source code, I just build the source with 1.3.4.
In firmware we are just getting commands from HID call back, once I received command in HID call back I will set a event and in another thread I will wait for that event once I received the event I will perform my things. This simple concept is not working if I build my project in SDK 1.3.3 or SDK 1.3.4. Please help us to solve this issue at earliest.
Thanks and Regards,
Vignesh Kumar R.
I am very new to the FX3 and I am trying to stream data from a 32 bit bus sampled at 10MHz to the computer. Data is sampled on the GPIF using two alternating threads. A program written on linux using libusb and cython simply reads 2MB of data (for now) and dumps it to the disk.
Currently, I have a testbench set up to generate a 16-bit binary counter to be sampled. However, looking at the dumped data returned, there are (seemingly random) gaps in the data where the counter will jump values. I cant seem to find any consistency as to where the data drops and how much will be lost.
Is there any way to figure out how to avoid packet loss?
Hi, I'am new to the CX3 environment and started to build a application for converting 1928*1088 @ 60FPS RAW10 MIPI to USB 3.0 UVC , we are using the CX3-RDK board from E-CON systems and we are designing our own daughter board. When using the configuration tool iam getting certain errors so need a bit of clarification on it. (Attached screenshots for your reference). In Image sensor configuration the CSI Clock is it referring the MIPI PIXEL Clock coming from the sensor? in that case our sensor gives 90Mhz but providing that value the tool is expecting a minimum value around 316Mhz. Our sensor has speed of 720Mbps per lane and we are using 2 lanes so i guess the output video format can be 16bit output
After giving these settings in image sensor configuration going on to CX3 receiver configuration following errors were occurred
Also tried to change the CSI Clock to the minimum expected value and changed output configuration to 24bit which eliminated the Parallel output error (Explanation on this problem would be great), but still cant achieve output pixel clock properly.
Is my configuration is proper? if not what iam missing?
I'm trying to use the AN75779 project as a baseline to set up my MT9P031 as a UVC camera.
Here's what I did:
Modify GPIF state machine: changed to 16 bit wide bus with one clock per pixel, changed LD_ADDR_COUNT and LD_DATA_COUNT limits to 8183 to account for this. Changed the active clock edge to falling.
In order to fake the YUY2 I tied data 15 high and 14:8 low so the upper byte would be 0x80. Then I just attached my most significant 8 bits of my camera bus to data lines 7:0.
Overhaul to the I2C in sensor.c code. The MT9M114 uses two bytes of register addresses in its protocol while the MT9P031 only has one so I had to get rid of the upper address byte in all the functions. I got rid of all of the configuration for MT9M114 and only wrote in commands to set my sensor up to run 720p at whatever rate it runs. I figured initially setting the sensor up to do 720p to match the existing project would be the path of least resistance.
I have a 24MHz clock and the datasheet suggests it would get 60fps with 96MHz so I assume it's actually going to give 15fps instead of 30.
In the UVC Descriptor C file, I've tried just leaving everything alone, as well as increasing the frame time to double or four times the original (so 0xA2C2A or 0x145854) to account for a lower FPS but nothing is helping.
The result is that Windows recognizes the device as a camera and I'm able to select it with the Windows camera app, and I see some response on the debug serial port when I do select or de-select it.
With the additional debug print enabled, I see "UVC: Completed (n) frames and 0 buffers."
Ultimately though I just get a black screen.
Do I need to use the PLL to increase my clock rate to actually achieve 30fps? Or do I need to adjust the minimum bitrate in the descriptor to reflect what the camera actually puts through?
Or am I missing something else?
Thanks in advance!Show Less
We use CYUSB3KIT-001 to connect to TypeC HUB and encounter FX3 streaming media transmission failure problem.
A few transfers were successfully transferred at first, and then the transfer continued to fail.
Once the transmission fails, the transmission cannot be continued.
The same problem occurs bulk in and bulk out.
But using USB storage for transfer is successful.
We want to ask:
1. The reason for the transmission failure?
2. Is there any way to solve this problem?
3. What is the difference between Streamer and Storage transmission?