Where can I find the CX3 firmware source code for example projects?
You can find the CX3 firmware example projects as part of the FX3 SDK 1.3.1 or later release. These projects are in the following folder when FX3 SDK is installed in the default path:
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\<SDK Version>\firmware\cx3_examples.
These example firmware projects support OmniVision® OV5640 and Aptina® AS0260 image sensors. Contact the respective image sensor manufacturers to get access to image sensor datasheet, register description, and configuration data.
What are the color formats supported by CX3?
CX3 can support all the image data formats supported by Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI)-2 specifications that is up to 24-bit wide. For example, the RAW, YUV, and RGB data formats are supported. For a custom format stream like JPEG or NV12, 16-bit wide streams can be transported on the 16-bit format and 24-bit streams can be transported by treating them as a RGB888 format.
Can CX3 convert RAW images to RGB or YUV formats?
No. CX3 cannot do any image format conversion. To convert image formats, an Image Signal Processor (ISP) or FPGA is required. CX3 does not have a built-in ISP. You should use an external ISP to convert or compress image data.
Can CX3 take audio inputs over the I2S port?
CX3 does not have an I2S input port; however, it has a serial peripheral interface (SPI) master. Therefore, by using an external I2S-to-SPI bridge (for example, an FPGA), an audio input device that has an I2S port can be interfaced with CX3. CX3 also has an I2S output port to connect an audio output device with the I2S port
Does CX3 support boundary scan using the JTAG port?
No. CX3 does not support the boundary scan feature using the JTAG port. Therefore, no boundary scan description language (BSDL) model files are available for CX3. The JTAG port is provided only for debugging the ARM® processor code in CX3. The JTAG port of CX3 should not be connected to the JTAG chain in your board.
What is the maximum resolution supported by CX3?
CX3 can support up to 2.4 Gbps (300 MBps) throughput. You should make sure that the throughput does not exceed 2.4 Gbps. The throughput can be determined by the formula given below. Image throughput = bits per pixel × (Horizontal resolution + Horizontal blanking) × (Vertical resolution + vertical blanking) × frames per second
For example, some of the resolution, frame rate, and color formats supported by CX3 are given below:
- 1920 × 1080 (FHD) , 30fps,60fps in YUV422 format
- 1280 × 720p (HD), 60fps, 120fps in YUV422 format
- 3840 × 2160 (uHD, 4k x 2k), 16fps in YUV422 format, 30fps in JPEG format with MJPEG 6:1 compression
- 4096 × 2160 (4k native), 30fps in RAW8 format
- 13MP, 10fps YUV422 format
- 8MP, 16 fps YUV422 format
Contact Cypress technical support if you have more questions on color format and frame rate support.
How do I build the CX3 RDK firmware example project supplied with the FX3 SDK?
1. Download the FX3 SDK 1.3.1 or later from the cypress.com webpage for FX3 SDK (http://www.cypress.com/?rID=57990) and install it.
2. Open the Eclipse-based editor (EZ-USB® Suite). Click Start > All Programs > Cypress > EZ-USB FX3 SDK > Eclipse > EZ USB Suite.
3. When prompted, create a new workspace, and assign it a workspace name.
4. Within Eclipse, import the SDK project for CX3 into the current workspace as follows:
a. Select File > Import.
b. Select General > Existing Projects into Workspace and click Next.
c. Set the Root Directory to the following values:
§ On 32-bit Windows: C:\Program Files\Cypress\EZ-USB FX3 SDK\<SDK Version>\firmware\cx3_examples
§ On 64-bit Windows: C:\Program Files(x86)\Cypress\EZ-USB FX3 SDK\<SDK Version>\firmware\cx3_examples
d. From the projects listed in the Projects list, select the cycx3_uvc_ov5640 project, and select the option “Copy projects into workspace”. The project will be copied into the workspace and available in Eclipse.
5. Set the build mode for the project as Release.
6. Build the project by selecting the arrow to the right of the Build icon (which looks like a hammer) in the toolbar and selecting
After the project is built, the img file for download to the CX3 RDK will be available in the Release folder in the project in the Project Explorer.
How do I program the CX3 firmware image to the SPI or I2C Flash / EEPROM in CX3 RDK?
1. Set the Boot Mode selection switch SW5 (located between the Power switch and the Reset button) to USB Boot: This means that SW5.1 is ON, SW5.2 is ON, and SW5.3 is OFF.
2. Open Control Center from All Programs > Cypress > Cypress USB Suite > Control Center (Please note that .NET framework 3.5 or above needs to be installed in the system. Otherwise control center utility may not work)
3. Reset the CX3 RDK. It is listed in the Control Center window.
4. Click Program > FX3, and then select the SPI flash or I2C E2PROM option to download the firmware to the SPI flash or I2C EEPROM on the RDK.
A boot programmer firmware gets downloaded to the FX3 and it re-enumerates and opens a window allowing you to select the IMG file you want to download to the SPI flash or I2C EEPROM.
5. Browse to the location of the img file and select it. Once the FW img is downloaded, a message is displayed at the bottom of the Control Center tool indicating that the operation was successful.
6. Set the Boot Mode Selection switch (SW5 as in step 1) to SPI Boot or I2C Boot based on to where you downloaded the FW.
§ For SPI Boot, set switches to 1 to ON, 2 to OFF, 3 to ON.
§ For I2C EEPROM boot set to 1 to OFF, 2 to ON, 3 to OFF.
7. Reset CX3 to make it boot from the flash.
See the CX3 RDK Quick Start Guide for the switch location. Refer to the CX3 RDK schematic for the switch settings.
What is the boot up time of CX3 when the firmware is stored in the SPI flash?
The boot up time is approximately 115 ms when CX3 boots from the SPI flash
How do I stream a RAW format image using CX3?
You can select the format as “RAW” (RAW8/RAW10/RAW12/RAW14) in the CX3 configuration tool and you can use the UVC player to display the RAW data in YUV format. However, the image will look green in color. This can be used for firmware development and testing.
For final product, you will need to write your own viewer that does de-mosaicing (RAW to RGB conversion) of the Bayer stream and then display it.
Depending on how you want to do this, you have a few options:
1. Use UVC and write your own viewer on top of Microsoft's APIs. Here, you will transport a Bayer stream as a YUV/RGB stream.
2. Use the Cypress driver (cyusb3.sys) and then write your viewer using the Cypress-provided APIs. This will need vendorspecific descriptors.
Contact Cypress Technical Support to get an example firmware.
Do you have an example project to stream the MJPEG video stream from image senor using CX3?
Yes. The MJPEG example firmware is available as part of FX3 SDK. Once you install the FX3 SDK, you can find the example project at the following directory:
- On 32-bit Windows: C:\Program Files Cypress\EZ-USB FX3 SDK\<SDK Version>\firmware\uvc_examples
- On 64-bit Windows: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\<SDK Version>\firmware\uvc_examples
If you are looking for a MJPEG firmware example with the OV5640 sensor, you should sign NDA with OmniVision and create a Technical Support case.
Can CX3 support standard and extended UVC video controls?
Yes. CX3 can support standard as well as extended UVC controls.
For standard UVC video controls, see the CX3 RDK firmware. The UVC extension unit can be added in the CX3 firmware to support extended UVC controls such as getting firmware version and erasing flash. A host application is needed to communicate with the extension unit. The host application and the extension unit descriptor in the CX3 firmware must have a unique GUID.
Contact Cypress Technical Support to get more details on the UVC extension unit.
What is the maximum CSI clock frequency that should be used per lane in the CX3 configuration utility?
CX3 supports up to 1 Gbps of data rate on each MIPI data lane, but the overall throughput is limited to 2.4 Gbps because of the 24-bit GPIF interface in CX3, which is capable of 100 MHz per lane of GPIF interface.
The CSI clock setting in the CX3 configuration utility works in DDR mode, so, data is sampled on both the clock edges.
Table 1 lists the maximum allowed CSI clock frequency based on the number of data lanes being used.
Number of Data Lanes
Maximum Data Rate per Lane
Maximum CSI Clock Frequency Allowed
Note: The maximum supported bit rate for CX3 (CSI clock x number of mipi lanes) calculated using CSI clock include the blanking time also.