MI48x4 Datasheet v4.0.5
MI48x4 Datasheet v4.0.5
Data sheet
Contents
1. DESCRIPTION ...................................................................................................................................... 4
1. DESCRIPTION
Meridian Innovation’s MI48Dx is a specialised integrated circuit (IC) that is a companion to
the MI0802 camera module featuring SenXorTM long-wave infrared (LWIR) imaging sensor.
The MI48Dx handles the low-level control signalling necessary to capture raw sensor data
from the thermal imaging array. It also provides standard interfaces for communication
with a host controller.
The MI48Dx supports two different interfaces to the host system. One way to interface the
host MCU is by the Inter-Integrated Circuit (I2C) bus – for conveying commands to the
MI48Dx and obtaining status from it, and serial peripheral interface (SPI) – for readout of
thermal data. The alternative way is to interface the MI48Dx is by USB interface for
communicating both control/status and thermal data. The communication protocol that
must be used by the host application layer to exchange command-acknowledge type of
messages is specified elsewhere.
Fig. 1 shows conceptual diagrams of systems that embed the SenXorTM camera module and
the MI48Dx with I2C and SPI interfaces, or alternatively, with USB interface.
a)
b)
The MI48Dx also performs low-level processing of the data read out from the camera
modules. Specifically, it handles the per-pixel calibration, performs bad pixel correction
(BPC), converts the raw camera data to temperature, and suppresses the noise inherent to
the signals coming from the pixels. In this way it greatly facilitates the development of
applications embedding the SenXorTM thermal imaging sensor.
The MI48Dx is housed in a 5 mm by 5 mm, 32-pin leadless package featuring an exposed
bottom thermal pad – quad flat no-lead QFN33.
2. ORDER INFORMATION
Table 1. ORDERING INFORMATION
Product Code Package Firmware Interface Min.
Version Quantity
MI48D4 QFN33 (plastic, quad-flat, no-leads, 4.2.3 or SPI/I2C 100
thermal ground pad at the bottom) higher and USB
3. PINOUT INFORMATION
3.1. Pin Configuration – MI48Dx
Fig. 2. MI48Dx QFN33-pin Diagram. The pinout features both USB and SPI/I2C interfaces,
only of them must be configured for operation.
4. FUNCTIONAL DESCRIPTION
4.1. Architectural Overview
Fig. 4 shows the internal block diagram of the MI48Dx and the interfaces that enable the
control of acquisition and readout of thermal data.
Fig. 3. Block diagram of the MI48Dx. The chip features both USB and SPI/I2C interfaces, only
of them must be configured for operation.
The SenXor Bus interface serves for capturing raw data from the thermal image sensor.
In the MI48Dx the slave I2C interface provides software access to the internal registers of
the Control and Status block of the MI48Dx.
In MI48Dx, the slave SPI interface serves to read out a temperature data frame from the
Output Frame Buffer, indicated by DATA_READY output signal, as shown in Fig. 6.
In the MI48Dx the USB interface serves for conveying both control and status information,
as well as readout of the temperature data from the Output Frame Buffer. The
communication via USB relies on a specific protocol which must be implemented at the
application layer of the host system; The reference manual can be found on Meridian
Innovation’s web-site.
The Input and Output Frame Buffers allow the dynamics of thermal data capturing via the
SenXor Bus to be decoupled from the dynamics of thermal data readout via the SPI
interface, and to realise data frame averaging of software-controlled depth as an
elementary noise reduction technique. The low-level Thermal Image Processing applies
per-pixel calibration and bad pixel correction based on calibration data stored in the
camera module, and translates the raw sensor data to temperature in degrees Kelvin.
Further noise reduction can be programmatically enabled to reduce the fluctuations in the
temperature readout of individual pixels, which leads to a more stable readout and allows
for an enhanced image upon visualisation of the thermal data.
Note: If any of the error flags above is raised, the frame capture stops. Upon reding the
register, all error flags are cleared.
scene.
Note that the use of the temporal filter in
conjunction with bit 0 of CLK_SPEED register,
CLK_SLOW_DOWN, leads to a reduction in the
data frame rate.
1 TEMPORAL_INIT RW Initialize temporal filter, when set to 1. This bit
must be set to one whenever a new value is
written to register FILTER_SETTING_1 (0xD1 –
0xD2), in order for the new setting to take
effect. The bit will be automatically reset to 0
after the initialisation is complete, which
typically takes around 40 ms.
2 ROLL_AVG_ENABLE RW Enable rolling average filter when set to 1. The
effect of this filter is influenced by the value of
register FILTER_SETTING_2 (0xD3).
3-4 RESERVED - Not accessible.
5 MEDIAN_KERNEL_SE RW 0 – median filter with a kernel size of 3
LECT 1 – median filter with a kernel size of 5
6 MEDIAN_ENABLE RW Enable median filter with the kernel size
according to the MEDIAN_KERNEL_SELECT bit
7 RESERVED - Not accessible.
The I2C slave address is composed of 7 bits – A6 to A0. For the MI48Dx bit A6 to A2 are
hardwired to ‘10000’, while bit A0 depends on the value registered on the ADDR input pin
(pin 22 of the QFN33 package) during hardware reset or power-on reset. Therefore, the
MI48Dx can respond to one of two I2C slave addresses, as per Table 22.
The I2C command consists of 1 byte that includes the 7-bit I2C slave address (A6 to A0),
followed by one-bit access type designator (R/W̅ ) – 1 for read access and 0 for write
access:
̅
A6 A5 A4 A3 A2 A2 A0 𝐑/𝐖
• Master initiates a write command by a Start Condition (S), followed by one byte
containing Slave Address in the first 7 bits (A6 to A0), and 0 in the last bit.
• Upon acknowledge (A) from slave, master sends one byte with Slave Internal Register
Address (B7 to B0) – the register it intends to write to.
• Upon acknowledge from slave (A), master sends one byte of register data (D7 to D0) to
be written to the slave.
• Upon acknowledge from slave (A), master terminates the transfer with a Stop Condition
(P).
This is summarised below – the shaded fields indicate Slave driving the I2C_SDA line:
S A6 A5 A4 A3 A2 A2 A0 0 A B7 B6 B5 B4 B3 B2 B1 B0 A D7 D6 D5 D4 D3 D2 D1 D0 A P
• Master initiates a read command by a Start Condition (S), followed by one byte
containing Slave Address in the first 7 bits, (A6 to A0) and 0 in the last bit.
• Upon acknowledge (A) from slave, master sends one byte with Slave Internal Register
Address (B7 to B0) – the register it intends to read from.
• Upon acknowledge from slave (A), master sends a Repeated Start Condition (RS)
followed by one byte containing Slave Address in the first 7 bits, (A6 to A0) and 1 in the
last bit
• Slave then sends Acknowledge (A) followed by the one byte of data (D7 to D0).
• Once the master receives the number of bytes it expects from the slave, the master
issues Not-Acknowledge (NA) and terminates the transfer with a Stop Condition (P).
This is summarised below – the shaded fields indicate Slave driving the I2C_SDA line:
S A6 A5 A4 A3 A2 A2 A0 0 A B7 B6 B5 B4 B3 B2 B1 B0 A
RS A6 A5 A4 A3 A2 A2 A0 1 A D7 D6 D5 D4 D3 D2 D1 D0 NA P
The MI48Dx supports multiple reads, whereby the internal register address is
automatically incremented if the Master sends Acknowledge (A) instead of Not-
Acknowledge (NA), indicating that it is ready to receive more data.
The MI48Dx acts as an SPI slave. The SPI interface master must be operated in Mode 0.
Therefore, the SPI_CLK idles at 0, and a clock cycle corresponds to a half cycle with the
clock idle, followed by a half cycle with the clock asserted at 1. The leading and trailing
edges of the clock are the rising and falling edges of SPI_CLK correspondingly. This is
illustrated in Fig. 5.
The SPI Interface master should be configured to use 16-bit data width, with the most
significant bit (MSB) transferred first. It does not matter if the SPI master (on the host
system) releases the SPI_SS between reads of consecutive words of the same thermal data
frame.
Fig. 4. Waveform diagram of the thermal data readout through the SPI Interface; A and B refer to
the first and second 16-bit words of the data transfer. Vertical dotted lines delineate clock
cycles.
Note that for every 2 bytes read from MI48Dx by the host controller over the SPI, the host
must write two dummy bytes with the value 0x0000 over the MOSI pin in order to
generate the clock for the SPI transfer.
The format of the Thermal Data Frame depends on the value of bit 5 – NO_HEADER of the
FRAME_MODE register (0xB1). If NO_HEADER is set to 1, the Data Frame contains only the
temperature data, and that is the only data transferred over the SPI interface.
Alternatively, the data frame consists of a Frame Header, which is transferred first,
followed by the temperature data. The data frame format in this case is shown in Table 23.
Tempe-
80 column * 62 row Pixel Data, i.e. 4960 words (MI0802 Camera Module)
rature
data
The header of the Thermal Data Frame consists of 80 words. Each word is composed of 16
bits, of which the most significant bit (MSB) is transferred first, and the least significant bit
is transferred last. Only the first 8 words of the header are significant, as detailed in Table
24. Each word represents an unsigned integer.
The temperature data consists of 4960 words. Each word is composed of 16 bits, and the
most significant bit is transferred first. Every word represents the temperature of a pixel,
as a 16-bit unsigned integer in units of 0.1 K.
For example, the transfer of the 16-bit word 0x0BC1, represents 3009 in decimal and the
corresponding temperature is 300.9 K.
The MI48xx supports Full-Frame readout mode, in which the host processor can read the
entire Thermal Data Frame – including Frame Header and the Temperature Data of the
entire SenXorTM pixel array. In the case of the MI48Dx being configured to communicate
via SPI/I2C interface this can happen upon the rise of the DATA_READY output signal from
the MI48xx. This is illustrated in Fig. 6, where the data transfer over the SPI interface is
abstractly represented.
Fig. 5. Abstract timing relation between the DATA_READY timing and the readout of the thermal
image data from MI48Dx.
Note that DATA_READY is lowered only after the host controller reads out the complete
Thermal Data Frame.
In the case of the MI48Dx being configure to communicate via USB, the message
containing the thermal data frame will be composed and sent out via the USB interface as
soon as it is complete.
7.5 0 132
Each SenXorTM module is factory-calibrated per pixel, so that accuracy and uniformity of
temperature readout is achieved. The calibration data is accessed by the MI48xx, when
connected to a camera module and used in the process of converting the output from the
camera module into absolute temperature (in Kelvin).
Each SenXorTM module is calibrated per pixel, and any bad pixel is identified during the
calibration procedure. Within the MI48xx the readout value of the identified bad pixels is
replaced by an appropriate estimate, based on the temperature of surrounding good
pixels, automatically.
The output of the camera module is readout by the MI48xx and converted into
temperature after taking into account the calibration of the connected SenXor TM, the
emissivity value stored in the EMISSIVITY register at address 0xCA, and the emissivity
correction factor stored in the EMISSIVITY_FACTOR register at address 0xC2.
Data readout from each pixel of SenXorTM exhibit some fluctuations over time, particularly
obvious at high frame rate. The MI48xx can smooth out these fluctuations to a different
degree, depending on the application requirements for frame rate, readout stability and
accuracy, and the anticipated dynamics of the scene to be observed by thermal imaging.
Image filtering can be performed in two distinct domains: in the time domain and in the
spacial domain, as shown in the Fig. 7 below. The MI48 supports 2 different time-domain
filters, Temporal Filter and Rolling Average Filter, as well as a Median Filter, for the spatial
domain. Which one is turned on and off is dictated by the FILTER_CONTROL register at
0xD0. The operation of the filters is independent of each other and they can be ON at the
same time.
Fig. 6. Conceptual diagram of image denoising filters in the time-domain (left) and in the spatial
domain (right).
Time-domain filters maintain the sharpness and features of the image because the
denoising algorithm is applied on each pixel individually. However, time-domain filters
suffer from ‘history’ effects. That means that a sudden or fast change in the scene will
result is a ‘ghost’-like movement or change in the image over consecutive frames. The
strength of the Temporal Filter and the depth of the Rolling Average Filter affect the
amount of ‘ghosting’ and must be optimised for the specific application. This is done via
the FILTER_SETTING_1 registers at address 0xD1 and 0xD2 (for the Temporal Filter), and
via FILTER_SETTING_2 register at address 0xD3 (for the Rolling Average Filter). By default,
the Rolling Average Filter is turned OFF, while the Temporal Filter is turned ON, and its
default strength of 50 is optimal for a slowly changing scene at 9 FPS. Note that the
Temporal Filter must be initialised whenever its strength is changed, via the 0xD0 register.
The median filter, which is OFF by default, is a spatial filter and does not introduce
ghosting in the image, but potentially smooths out subtle features, particularly if the
features in the scene are resolved in too few pixels. The Median Filter supports a kernel of
3 x 3 or 5 x 5 pixels, to avoid excessive smoothing. The selection of the kernel size is done
by bit 5 of register 0xD0.
4.10.5. Self-Calibration
If the MI48Dx is connected to a SenXor module that is provided without an external flash
memory to store calibration information, then the MI48Dx performs a self-calibration
routine upon module power up, in order to minimize temperature offset between
individual columns of the array. Additionally, the MI48Dx can use a generic calibration data
for a given module type (related to the type of lens being used). For this to happen, the
host MCU must initialize register MODULE_TYPE at address 0xBB with the correct module
type (see Appendix I) and then activate the use of self-calibration by setting to 1 bit 4 of
the SELF_CALIBRATION register at address 0xC5.
Note that the temperature ranges below are only roughly indicative. In practice, the actual
range depends on the type of lens used (e.g. module type) and the operational die
temperature of the sensor.
Note also that after changing the gain manually, frame capture will stop for a few seconds.
In Automatic Gain Control Mode, the chip will perform a seamless transition between the
temperature ranges. However, during the transition and for a few seconds after, the image
quality and temperature accuracy may be compromised.
When Automatic Gain Control is ON, the value of the current gain can be obtained by
reading register 0xC5.
Note that lowering the gain to 0.5 or 0.25 increases the NETD and reduces the accuracy of
the temperature readout.
and calibration of the unit. Then upon power up, the host should read these parameters if
needed, before initiating data acquisition, and disable the User Flash thereafter.
Fig. 7. Memory map of the MI48, showing the User Flash at address 0x00 – available only when
bit 0 of the USER_FLASH_CTRL is set to 1.
The time between de-asserting the nRESET pin and attempting to acquire the first image
from the connected camera module is 1.5 seconds. For a more precise timing budget, one
could poll bit 5 of STATUS register at 0xB6, i.e. check the value of bit 5 of 0xB6 – if it is set
to 1, capture is still in progress and data is NOT available; if it is 0, then temperature is
available and can be readout.
When MI48xx detects that a new camera module has been attached, the power up
sequence will take 3 seconds before the first image can be acquired.
7. PACKAGE INFORMATION
7.1. Chip packaging
Fig. 10. Dimension of the QFN33 package (5x5x0.8 mm3, Pitch 0.5mm). All values are in [mm].
8. REFERENCE DESIGN
8.1. Reference Circuit
Fig. 11. Reference design circuit used for the MI0802Mxx module evaluation board.
Note that the reference circuit includes both options for communication to the host MCU,
and the header P2 is used to define which mode – USB or SPI/I2C, is being select. In an
end-user application only one of these interfaces will be needed.
It is suggested that the USB_N and USB_P pins are fanned out to a header or test pads, and
that USB 5V (USB Vbus) and GND are connected to the MI48Dx USB_VBUS (pin 21) and
GND correspondingly, even if the end system uses SPI/I2C communication interface to the
host MCU. This is to enable potential firmware updates to the MI48Dx via the USB
interface. Such an update can be realised with the help of Meridian Innovation DFU
(Device Firmware Update) software, which can be run on a Windows PC or an Android
device with USB connection to the system hosting the MI48Dx. Note that the system must
be able to boot up independently and be able to operate correctly. Therefore, the system
must provide the MI48Dx with a stable 3.3 V VDD and drive correctly the reset and clock
signals.
Fig. 12. Recommended PCB design pattern. All values are in [mm].
13. APPENDIX I
Table 35. MODULE TYPE CODE AND PRODUCT CODE CORRESPONDENCE
Module Type Product Code Resolution FOV (H/V/D) Comment
19 MI0802M5S 80 x 62 45/35/56
20 MI0802M6S 80 x 62 90/67/122
21 MI0802M7G 80 x 62 105/79/134