Datasheet
Table Of Contents
- 1/3.2-Inch System-On-A-Chip (SOC) CMOS Digital Image Sensor
- Features
- Applications
- Ordering Information
- General Description
- Feature Overview
- Typical Connection
- Ballout and Interface
- Architecture Overview
- Registers and Variables
- Registers
- Registers
- IFP Registers, Page 1
- IFP Registers, Page 2
- JPEG Indirect Registers
- Table 8: JPEG Indirect Registers (See Registers 30 and 31, Page 2)
- Firmware Driver Variables
- Table 9: Drivers IDs
- Table 10: Driver Variables-Monitor Driver (ID = 0)
- Table 11: Driver Variables-Sequencer Driver (ID = 1)
- Table 12: Driver Variables-Auto Exposure Driver (ID = 2)
- Table 13: Driver Variables-Auto White Balance (ID = 3)
- Table 14: Driver Variables-Flicker Detection Driver (ID = 4)
- Table 15: Driver Variables-Auto Focus Driver (ID = 5)
- Table 16: Driver Variables-Auto Focus Mechanics Driver (ID = 6)
- Table 17: Driver Variables-Mode/Context Driver (ID = 7)
- Table 18: Driver Variables-JPEG Driver (ID = 9)
- Table 19: Driver Variables-Histogram Driver (ID = 11)
- MCU Register List and Memory Map
- JPEG Indirect Registers
- Output Format and Timing
- Sensor Core
- Feature Description
- PLL Generated Master Clock
- PLL Setup
- Window Control
- Pixel Border
- Readout Modes
- Figure 20: 6 Pixels in Normal and Column Mirror Readout Modes
- Figure 21: 6 Rows in Normal and Row Mirror Readout Modes
- Table 30: Skip Values
- Figure 22: 8 Pixels in Normal and Column Skip 2x Readout Modes
- Figure 23: 16 Pixels in Normal and Column Skip 4x Readout Modes
- Figure 24: 32 Pixels in Normal and Column Skip 8x Readout Modes
- Figure 25: 64 Pixels in Normal and Column Skip 16x Readout Modes
- Table 31: Row Addressing
- Table 32: Column Addressing
- Frame Rate Control
- Context Switching
- Integration Time
- Flash STROBE
- Global Reset
- Analog Signal Path
- Analog Inputs AIN1-AIN3
- Firmware
- Firmware
- Start-Up and Usage
- General Purpose I/O
- Introduction
- GPIO Output Control Overview
- Waveform Programming
- Notification Signals
- Digital and Analog Inputs
- GPIO Software Drivers
- Auto Focus
- Figure 42: Search for Best Focus
- Figure 43: Scene with Two Potential Focus Targets at Different Distances from Camera
- Figure 44: Dependence of Luminance-Normalized Local Sharpness Scores on Lens Position
- Figure 45: Example of Position Weight Histogram Created by AF Driver
- Figure 46: Auto Focus Windows
- Figure 47: Computation of Sharpness Scores and Luminance Average for an AF Window
- Table 41: Examples of AF Filters that can be Programmed into the MT9D111
- Spectral Characteristics
- Electrical Specifications
- Packaging
- Appendix A: Two-Wire Serial Register Interface
- Protocol
- Sequence
- Bus Idle State
- Start Bit
- Stop Bit
- Slave Address
- Data Bit Transfer
- Acknowledge Bit
- No-Acknowledge Bit
- Page Register
- Sample Write and Read Sequences
- Figure 52: WRITE Timing to R0x09:0-Value 0x0284
- Figure 53: READ Timing from R0x09:0; Returned Value 0x0284
- Figure 54: WRITE Timing to R0x09:0-Value 0x0284
- Figure 55: READ Timing from R0x09:0; Returned Value 0x0284
- Figure 56: Two-Wire Serial Bus Timing Parameters
- Table 46: Two-wire Serial Bus Characteristics
- Revision History
PDF: 09005aef8202ec2e/Source: 09005aef8202ebf7 Micron Technology, Inc., reserves the right to change products or specifications without notice.
MT9D111__6_REV5.fm - Rev. B 2/06 EN
121 ©2004 Micron Technology, Inc. All rights reserved.
MT9D111 - 1/3.2-Inch 2-Megapixel SOC Digital Image Sensor
Sensor Core
Micron Confidential and Proprietary
Registers
Table 5, "Sensor Register Description," on page 29 provides a detailed description of the
registers. Bit fields that are not identified in the table are read only.
Double-Buffered Registers
Some sensor settings cannot be changed during frame readout. For example, changing
row width R0x03:0 part way through frame readout results in inconsistent LINE_VALID
behavior. To avoid this, the sensor core double buffers many registers by implementing a
“pending” and a “live” version. READs and WRITEs access the pending register. The live
register controls the sensor operation.
The value in the pending register is transferred to a live register at a fixed point in the
frame timing, called “frame start.” Frame start is defined as the point at which the first
dark row is read out. By default, this occurs 10 row times before FRAME_VALID goes
HIGH. R0x22:0 enables the dark rows to be shown in the image, but this has no effect on
the position of frame start.
To determine which registers or register fields are double-buffered in this way, see
Table 5, "Sensor Register Description," on page 29, the “sync’d-to-frame-start” column.
R0x0D:0[15] can be used to inhibit transfers from the pending to the live registers. This
control bit should be used when making many register changes that must take effect
simultaneously.
Bad Frames
A bad frame is a frame where all rows do not have the same integration time, or where
offsets to the pixel values changed during the frame.
Many changes to the sensor register settings can cause a bad frame. For example, when
row width R0x03:0 is changed, the new register value does not affect sensor behavior
until the next frame start. However, the frame that would be read out at that frame-start
has been integrated using the old row width. Consequently, reading it out using the new
row width results in a frame with an incorrect integration time.
By default, most bad frames are masked: LINE_VALID and FRAME_VALID are inhibited
for these frames so that the vertical blanking time between frames is extended by the
frame time.
To determine which register or register field changes can produce a bad frame, see
Table 5, "Sensor Register Description," on page 29, the “bad frame” column, and these
notations:
• N—No. Changing the register value does not produce a bad frame
• Y—Yes. Changing the register value might produce a bad frame
• YM—Yes; but the bad frame is masked out unless the “show bad frames” feature
(R0x0D:0[8]) is enabled
Changes to Integration Time
If the integration time (R0x09:0) is changed while FRAME_VALID is asserted for frame n;
the first frame output using the new integration time is frame (n + 2). The sequence is as
follows:
1. During frame n, the new integration time is held in the R0x09:0 pending register.
2. At the start of frame (n +1), the new integration time is transferred to the R0x09:0 live
register.










