1. Home
  2. Docs
  3. Camera breakout board
  4. 5MP MT9P031
  5. Software Guide

Software Guide


This page describle the basic control over the sensor registers using Arducam camera breakout board, it might not be able to cover all the detail register operations, but give you an insight how to adjust these settings.

Sensor I2C Slave Address

The MT9P031 camera I2C 8-bit slave address is fixed to 0x90. With 8bit regsiter address, and 16bit register value.

There is a ” model_id ” register (0x00) which can help diagnose if the I2C bus is accessable and distinguish the camera models.

Camera Modelmodel_id register ( 0x00 )

Sensor Initialization

You need a basic settings to bring up the sensor and make it working in normal streaming mode. Here is the sample config for the Window GUI.

Camera Sample Config
MT9P031_2592*1944 ( Color ) MT9P031_2592x1944.cfg

Manual Exposure Control

The nominal exposure time, t EXP, is the effective shutter time in ERS modes, and is defined by the shutter width, SW, and the shutter overhead, SO, which includes the effect of Shutter_Delay. Exposure time for other modes is defined relative to this time. Increasing Shutter_Delay (SD) decreases the exposure time. Exposure times are typically specified in units of row time, although it is possible to fine-tune exposures in units of t ACLKs (where t ACLK is 2 * t PIXCLK).

t EXP = SW × t ROW – SO × 2 × t PIXCLK


SW = max(1, (2 * 16 × Shutter_Width_Upper) + Shutter_Width_Lower)

SO = 208 × (Row_Bin + 1) + 98 + min(SD, SDmax) – 94

SD = Shutter_Delay + 1

SDmax = 1232; if SW < 3 1504,

otherwise The exposure time is calculated by determining the reset time of each pixel row (with time 0 being the start of the first row time), and subtracting it from the sample time. Under normal conditions in ERS modes, every pixel should end up with the same exposure time. In global shutter release modes, or in row binning modes, the exposure times of individual pixels can vary.

Register Bit Description
R0x00815:0Shutter Width Upper (RW)
The most significant bits of the shutter width, which are combined with Shutter_Width_Lower (R9).
R0x00915:0Shutter Width Lower (RW)
The least significant bits of the shutter width. This is combined with Shutter_Width_Upper and Shutter_Delay
for the effective shutter width. If set to zero, a value of “1” will be used.

RegAddr = 0x009, Value = 0x0E5

RegAddr = 0x009, Value = 0x1E5

RegAddr = 0x009, Value = 0x2E5

Manual Gain Control

Gain settings are like the ISO settings in most digital cameras. The gain is divided into analog and digital gain, and there are separate gain settings for four color-specific gains. There is also global gain setting to change all the four color-specific gains.

RegisterBit Description
R0x03515:0Global Gain (WO)

Here we demonstrate how to change the gain through the Global Gain register (0x035).

RegAddr = 0x035, Value = 0x0018

RegAddr = 0x035, Value = 0x1018

RegAddr = 0x035, Value = 0x2018

White Balance Control

The MT9P031 sensor output is RAW bayer format, each RGB channel gain is controlled by corresponding gain regsiter.

There are 5 registers related to color gain settings which can be used for control white balance.

RegisterBit Description
R0x02B15:0Green1 Gain (RW)
R0x02C15:0Blue Gain (RW)
R0x02D15:0Red Gain (RW)
R0x02E15:0Green2 Gain (RW)
R0x03515:0Global Gain (WO)

The global gain is used to set all color gain value at one time. The other 4 registers control GR, R, B, GB respectively.

Tips: GR, GB should be set equally, and Red, Blue gain can be set higher than GR/GB gain to get better color represent. Automatic software whtie balance is also possible with proper AWB algorithm to set these gain settings automatically.

Was this article helpful to you? Yes No

How can we help?