User Tools

This is an old revision of the document!


Preface

SUB2r camera is built on a Cypress FX3 chipset that facilitates the Super-Speed USB 3.0+ communication between the device and a host system. Every component of the camera, be it an FPGA or an image sensor, receives user commands via that Cypress FX3.

On Windows the device is registered with a GUID {36FC9E60-C465-11CF-8056-444553540000} and if you are not planning on using the SUB2r-lib for your development - that would be the GUID to search for to properly connect to the command channel.

Whether you use SUB2r-lib or not you need to install the provided driver for the OS to properly configure the device in order to be able to connect to its control endpoints.


FX3 Host Vendor Command Reference

The following tables provide information on how to access the camera's functionality for FX3 Host Vendor Command Interface. The address space is split into smaller chunks, grouped by common functionality:

0x00-0x9F

Name Offset wIndex wValue Access type Byte length Return buffer bits Notes
Reserved0x00-0x9F

0xA0-0xA7

Name Offset wIndex wValue Access type Byte length Return buffer bits Notes
Bootloader check0xA0 R/W Check if a bootloader is running, the result is in the command's status code (success/failure interpreted as true/false)
Reserved0xA1
Run DPC calibration0xA2 DPC ThresholdW/O Start the dynamic DPC calibration with the given DPC Threshold in range [0..255]
Reconfig FGPA0xA3 W/O Writing anything into this register causes the FPGA to reconfigure itself from SPI Flash
FPGA I²C Bridge0xA4FPGA register offsetFPGA data (write)W/O0 or 17:0 - FPGA dataFPGA write returns 0 byte buffer, FPGA read returns 1 byte buffer. Read/write is requested via control endpoint's direction attribute being set to DIR_FROM_DEVICE/DIR_TO_DEVICE. For more details refer to FPGA I²C bridge
Reserved0xA5-0xA7

0xA8-0xAF - versioning and reprogramming

Name Offset wIndex wValue Access type Byte length Return buffer bits Notes
Reserved0xA8-0xA9
Erase SPI Flash0xAA W/O Any write to this location invalidates the FX3 SPI Flash and causes the FX3 to reset itself to a bootloader mode for reprogramming
FX3 version0xAB R/O431:29 Vendor ID
28:24 HW_CFG_ID
23:16 Product ID
15:11 Release type
10:0 Build number
Get detailed version information of the FX3, for more details refer to FX3 Version Info
FPGA version0xAC R/O431:29 Vendor ID
28:24 HW_CFG_ID
23:16 Product ID
15:11 Release type
10:0 Build number
Get detailed version information of the FPGA, for more details refer to FPGA Version Info
FPGA config. ctrl.0xAD W/O Any write to this location will put the FPGA into configuration mode
FPGA config. status - SPI codes0xAE R/O2 Retrieve detailed status of the FPGA configuration operation
15 Program SwitchWord OK
14 Verify OK
13 Program OK
12 Erase OK
11 Erase SwitchWord OK
10 Check ID OK
9 Initialize OK
8 Config started
7 CRC error
6 Timeout error
5 Program error
4 Erase error
3 IdCode error
2 Config error
1 Config done
0 Config not busySet to 1 while the config is not busy
SPI Flash write enable0xAF W/O Reconfigure the FX3 IOMatrix to disable GPIF and enable SPI

FPGA config status - SPI codes

Bit name Description
15 Program SwitchWord OK
14 Verify OK
13 Program OK
12 Erase OK
11 Erase SwitchWord OK
10 Check ID OK
9 Initialize OK
8 Config started
7 CRC error
6 Timeout error
5 Program error
4 Erase error
3 IdCode error
2 Config error
1 Config done
0 Config not busySet to 1 while the config is not busy

0xB0-0xCF

Name Offset wIndex wValue Access type Byte length Return buffer bits Notes
Reserved0xB0-0xCF

0xD0-0xFF

Name Offset wIndex wValue Access type Byte length Return buffer bits Notes
AE Setpoint0xD0 AE SetpointR/W0 or 1 7:0 AE SetpointTarget Auto Exposure Luminance Setpoint [0-255] Default: 105
AE Hysteresis0xD1 AE HysteresisR/W0 or 2 15:0 AE HysteresisAuto Exposure Hysteresis Value UFIX 8.8 Default 3.0
AE Error Tolerance0xD2 AE Err TolR/W0 or 2 15:0 AE Err TolAuto Exposure Error Tolerance Value UFIX 8.8 Default 1.0
AE Exposure Scaling0xD3 AE Exp ScaleR/W0 or 2 15:0 AE Exp ScaleAuto Exposure Exposure Scaling Value UFIX 8.8 Default 100.0
AE C Gain Divisor0xD4 AE C Gain DivisorR/W0 or 2 15:0 AE C Gain DivisorAuto Exposure C Gain Divisor Value UFIX 8.8 Default 4.0
Reserved0xD5-0xD7
AWB Setpoint0xD8 AWB SetpointR/W0 or 2 15:0 AWB SetpointAuto White Balance G Gain Setpoint [0-2047] Default 1024
AWB Hysteresis0xD9 AWB HysteresisR/W0 or 2 15:0 AWB HysteresisAuto White Balance Hysteresis Value UFIX 8.8 Default 3.0
AWB Error Tolerance0xDA AWB Err TolR/W0 or 2 15:0 AWB Err TolAuto White Balance Error Tolerance Value UFIX 8.8 Default 1.0
AWB Adjustment Scaling0xDB AWB Adj ScaleR/W0 or 2 15:0 AWB Adj ScaleAuto White Balance Adjustment Scaling Value UFIX 8.8 Default 4.0
Reserved0xDC-0xDE
Auto Update Period0xDF Auto Update PeriodR/W0 or 2 15:0 Auto Update PeriodAuto Update Period [0-65535]) Default 3000
FX3 reset0xE0 R/W Cypress vendor command to soft reset FX3
Reserved0xE1-0xFF

FPGA I²C bridge

The following tables provide information on how to access the camera's functionality for an FPGA I²C bridge. The address space is broken down into smaller chunks, grouped by common functionality:

0x00-0x07 - FPGA general access

Name Offset Access Bit mapping Notes
FPGA Version #00x00R/O7:5 Vendor ID
4:0 HW_CFG_ID
FPGA Version #10x01R/O7:0 Product ID
FPGA Version #20x02R/O7:3 Release type
2:0 Build number MSB
Build number is split into 2 MSB and 8 LSB for a combined total width of 10 bits
FPGA Version #30x03R/O7:0 Build number LSB
FPGA config status #0 - SPI codes0x04R/O LSB of the FPGA config status
7 CRC error
6 Timeout error
5 Program error
4 Erase error
3 IdCode error
2 Config error
1 Config done
0 Config not busy
FPGA config status #1 - SPI codes0x05R/O MSB of the FPGA config status
7 Program SwitchWord OK
6 Verify OK
5 Program OK
4 Erase OK
3 Erase SwitchWord OK
2 Check ID OK
1 Initialize OK
0 Config started
FPGA control0x06R/W Global control of the FPGA's functionality
7 FPGA config enableIf bit 7 is set the GPIF becomes read only and waits for an update bitstream
6:4 Reserved
3 DPC enableSetting bit 3 along with bit 0x06::0 will perform a DPC correction
2 HSUB enableBit 2 is to enable/disable Horisontal Subsampling
1 Audio enableBit 1 is to enable/disable on-board microphones
0 Video enableBit 0 enables/disables video streaming
Reserved0x07

0x08-0x0F - LED

Name Offset Access Bit mapping Notes
LED_RED_L0x08R/W7:0 Red LEDLSB of LED's red intensity in range [0..255]
LED_RED_H0x09R/WReserved
LED_GREEN_L0x0AR/W7:0 Green LEDLSB of LED's green intensity in range [0..255]
LED_GREEN_H0x0BR/WReserved
LED_BLUE_L0x0CR/W7:0 Blue LEDLSB of LED's blue intensity in range [0..255]
LED_BLUE_H0x0DR/WReserved
Reserved0x0E-0x0F

0x10-0x1F - Basic UVC controls

Name Offset Access Bit mapping Notes
Brightness_L0x10R/W7:0 LSB16 bits of brightness are split into 8 bits of LSB and MSB
Brightness_H0x11R/W7:0 MSB
Contrast_L0x12R/W7:0 LSB16 bits of contrast are split into 8 bits of LSB and MSB
Contrast_H0x13R/W7:0 MSB
Saturation_L0x14R/W7:0 LSB16 bits of saturation are split into 8 bits of LSB and MSB
Saturation_H0x15R/W7:0 MSB
Sharpness_L0x16R/W7:0 LSB16 bits of sharpness are split into 8 bits of LSB and MSB
Sharpness_H0x17R/W7:0 MSB
Gamma_L0x18R/W7:0 LSB16 bits of gamma are split into 8 bits of LSB and MSB
Gamma_H0x19R/W7:0 MSB
Hue_L0x1AR/W7:0 LSB16 bits of hue are split into 8 bits of LSB and MSB
Hue_H0x1BR/W7:0 MSB
Reserved0x1C-0x1F

0x20-0x27 - Defective pixel cancellation

Name Offset Access Bit mapping Notes
DPC Threshold LSB0x20R/W7:0 LSB 16 bit of DPC (defective pixel cancellation) Threshold are split into 8 bits of LSB and MSB
DPC Threshold MSB0x21R/W7:0 MSB
DPC count LSB0x22R/O7:0 LSBOnce the DPC calibration is done the 16-bit value is stored in these 2 registers
DPC count MSB0x23R/O7:0 MSB
Reserved0x24-0x27

0x28-0x2F - General image statistics

Name Offset Access Bit mapping Notes
Y average0x28R/O7:0 value
U average0x29R/O
V average0x2AR/O
R average0x29R/O7:0 valuean average RGB value
G average0x2AR/O7:0 value
B average0x2BR/O7:0 value
Reserved0x2C-0x2F

0x30-0x3F - GPIO

Name Offset Access Bit mapping Notes
CAM_GPIO_L0x30R/Wreserved
CAM_GPIO_H0x31R/Wreserved
CAM_GPIO_DIR_L0x32R/Wreserved
CAM_GPIO_DIR_H0x33R/Wreserved
CAM_GPIO_OE_L0x34R/Wreserved
CAM_GPIO_OE_H0x35R/Wreserved
Reserved0x36-0x3F

0x40-0x7F - On-board compression

Name Offset Access Bit mapping Notes
H.264 QP0x40R/W7:6 reserved
5:0 value
Valid range for the H.264 QP value is [0..51]
Reserved0x41-0x7F

0x80-0x8F - Green Screen enhancer

“Green screen”, a.k.a. “Chroma Key” on-board optimization is designed to replace a range of colors with a single solid one

Name Offset Access Bit mapping Notes
CK control0x80R/W7:1 reserved
0 enable
enable/disable Chroma Key control
CK status0x81 reserved
CK saturation LSB0x82R/W7:0 LSBonly the LSB 8 bits are used right now for the range [0..255] to specify the minimum saturation threshold
CK saturation MSB0x83R/Wreserved
CK luma LSB0x84R/Wreserved
CK luma MSB0x85R/Wreserved
CK hue LSB0x86R/W7:0 hue LSB14 bits of a signed hue value are split into 8 LSB and 6 MSB, its [-8K..+8K] range is mapped into [-180°..+180°]
CK hue MSB0x87R/W7:6 reserved
5:0 hue MSB
CK tolerance LSB0x88R/W7:0 tolerance LSB13 bits of an unsigned hue tolerance value are split into 8 LSB and 5 MSB, valid range is [0..8K], which is mapped into [0°..180°].
That value specifies how far to stretch the CK hue value both ways (symmetrically). If the CK tolerance is above 90° the covered color space is over 50% of values
CK tolerance MSB0x89R/W7:5 reserved
4:0 tolerance MSB
CK red LSB0x8AR/W7:0 red LSB
CK red MSB0x8BR/Wreserved
CK green LSB0x8CR/W7:0 green LSB
CK green MSB0x8DR/Wreserved
CK blue LSB0x8ER/W7:0 blue LSB
CK blue MSB0x8FR/Wreserved

FX3 Version Info

Vendor ID

Code Value
1Cypress

Hardware ID

Code Value
1FX3

Product ID

Code Value
1reserved for Gen 1 camera, a.k.a. “Moon landing”
2reserved for Gen 2 camera, a.k.a. “Piggy”
3Gen 3 camera, ak.k.a. “Frankie”

Release type

Code Value
1Alpha
2Beta
3Evaluation/Tech preview
4Release candidate
5Release
6Backport
7Emergency bug fix

Build number

Code Value
#Increments on each build

FPGA Version Info

Vendor ID

Code Value
1Xilinx

Hardware ID

Code Value
1Artix 100T
2Artix 200T

Product ID

Code Value
1reserved
2reserved
3Gen 3 camera, ak.k.a. “Frankie”

Release type

Code Value
1Alpha
2Beta
3Eval/Tech preview
4Release candidate
5Release
6Backport
7Emergency bug fix

Build number

Code Value
#Increments on each build

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information