Maxm86161 Single-Supply Integrated Optical Module For HR and Spo Measurement
Maxm86161 Single-Supply Integrated Optical Module For HR and Spo Measurement
Maxm86161 Single-Supply Integrated Optical Module For HR and Spo Measurement
TABLE OF CONTENTS
General Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Benefits and Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Simplified Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Absolute Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Package Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Typical Operating Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Pin Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Pin Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Optical Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
LED Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
FIFO Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
LED Sequence Control (0x20 to 0x22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Pseudo-Code Example of Initialize the Optical AFE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Pseudo-Code for Interrupt Handling with FIFO_A_FULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Pseudo-Code Example of Reading Data from FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Optical Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
One LED Pulsing with No Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
One LED Pulsing with Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Two LEDs Pulsing Sequentially with Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
All LEDs Pulsing Sequentially with Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ADC Architecture and Transfer Function Non-Linearity (XNL) Trim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Proximity Mode Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Picket Fence Detect-and-Replace Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Layout Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
I2C/SMBus Compatible Serial Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Detailed I2C Timing Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Bit Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
START and STOP Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Early STOP Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Slave Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Acknowledge Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
I2C Write Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
I2C Read Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
LIST OF FIGURES
Figure 1. Timing for LED1 Pulsing with No Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figure 2. Timing for LED1 Pulsing with Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Figure 3. Timing for LED1 and LED2 Pulsing Sequentially with Direct Ambient Sampling . . . . . . . . . . . . . . . . . . . . . 23
Figure 4. Timing for LED1, LED2, and LED3 Pulsing Sequentially with Direct Ambient Sampling . . . . . . . . . . . . . . . 24
Figure 5. Proximity Function Flow Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Figure 6. Picket Fence Function Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figure 7. Picket Fences Variables In A PPG Waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figure 8. Layout Guideline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Figure 9. Detailed I2C Timing Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Figure 10. I2C START, STOP, and REPEATED START Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Figure 11. I2C Acknowledge Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Figure 12. I2C Single Byte Write Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Figure 13. I2C Multi-Byte Write Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Figure 14. I2C Single Byte Read Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Figure 15. I2C Multibyte Read Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
LIST OF TABLES
Table 1. LED Sequence Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Table 2. LED Sequence Register Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Table 3. FIFO Data, Tag and Sample Counter Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Table 4. FIFO configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Table 5. Optical FIFO Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Table 6. Slave Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
VLDO
VREF REFERENCE MAXM86161 LDO_EN
DIGITAL NOISE
AMBIENT CANCELLATION INTB
CANCELLATION
SDA
I2C SCL
128 FIFO
PD INTERFACE GPIO
19-BIT CURRENT ADC
VLED
IR RED GRN
N.C.
N.C. LED DRIVER CONTROLLER
N.C.
PGND GND_ANA
GND_DIG
Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. These are stress ratings only, and functional operation of the device at these
or any other conditions beyond those indicated in the operational sections of the specifications is not implied. Exposure to absolute maximum rating conditions for extended periods may affect
device reliability.
Package Information
PACKAGE TYPE: 14-PIN OLGA
Package Code F142A4+1
Outline Number 21-100309
Land Pattern Number 90-100106
THERMAL RESISTANCE, FOUR-LAYER BOARD:
Junction to Ambient (θJA) 55.49°C/W
Junction to Case (θJC) N/A
For the latest package outline information and land patterns (footprints), go to www.maximintegrated.com/packages. Note that a “+”,
“#”, or “-” in the package code indicates RoHS status only. Package drawings may show a different suffix character, but the drawing
pertains to the package regardless of RoHS status.
Package thermal resistances were obtained using the method described in JEDEC specification JESD51-7, using a four-layer board.
For detailed information on package thermal considerations, refer to www.maximintegrated.com/thermal-tutorial.
Electrical Characteristics
(VLED = 5.0V, PPG1_ADC_RGE = 16μA, PPG_SR = 512sps, PPG_TINT = 117.3μs, LED_SETLNG = 6μs, LEDx_RGE = 31mA,
PDBIAS1 = 0x1, TA = 25°C, min/max are from TA = -40°C to +85°C, unless otherwise noted.) (Note 1)
PARAMETER SYMBOL CONDITIONS MIN TYP MAX UNITS
POWER SUPPLY
LED Supply Voltage
VLED Verified during PSRR Test 3.0 5.5 V
(Note 2)
LDO Output Voltage VLDO 1.68 1.8 1.92 V
LEDx_PA = 0x00,
PPG_TINT = Three LED Exposures/
400 600
117.3µs, PPG_SR Sample
Average LED Supply = 100sps
ILED μA
Current LEDx_PA = 0xFF, One LED Exposure/Sample 600
PPG_TINT = Two LED Exposure/Sample 970
117.3µs, PPG_SR
= 100sps Three LED Exposure/Sample 1300
Note 1: All devices are 100% production tested at TA = +25°C. Specifications over temperature limits are guaranteed by
MaximIntegrated’s bench or proprietary automated test equipment (ATE) characterization.
Note 2: VLED should be set to accommodate the maximum LED forward voltage and the output compliance of the LED driver.
Note 3: The LED current is trim in production to meet the IR, GREEN, and RED ADC counts. Actual values can vary by up to ±50%.
Values shown here are for 0% trim.
Note 4: For design guidance only. Not production tested. Tested in die form only.
Note 5: For design guidance only. Not production tested.
65 65 65
60 60 60
55 55 55
50 50 50
45 45 45
0.1 1 10 0.1 1 10 0.1 1 10
ADC INPUT CURRENT (µA) ADC INPUT CURRENT (µA) ADC INPUT CURRENT (µA)
LED 3 - 660nm
LED 1 - 530nm VERTICAL HORIZONTAL
1.0 1.0 1.0
LED 2 - 880nm
RELATIVE INCIDENT POWER
LED 1 - 530nm
RELATIVE INTENSITY
RELATIVE INTENSITY
LED 3 - 660nm
0.0 0.0 0.0
-90 -70 -50 -30 -10 10 30 50 70 90 -90 -70 -50 -30 -10 10 30 50 70 90 -90 -70 -50 -30 -10 10 30 50 70 90
RADIATION ANGLE (º) RADIATION ANGLE (º) ROTATION ANGLE (º)
PHOTODIODE RELATIVE
SPECTRAL RESPONSIVITY PHOTODIODE DARK CURRENT
toc07 toc08
1.2 600
RELATIVE SPECTRAL RESPONSIVITY
0.8 400
ADC_4µA
0.6 300
0.4 200
ADC_16µA ADC_32µA
0.2 100
0.0 0
400 600 800 1000 10 30 50 70 90 110
WAVELENGTH (nm) INTEGRATION TIME (µs)
-20 3.0
-50 1.5
40 117.3µs
-60 1.0 LED SETTLING = 12µs
LED 1 - 530nm
20
-70 0.5
0 -80 0.0
10 30 50 70 90 110 10 100 1000 10000 0 1 10 100
INTEGRATION TIME (µs) FREQUENCY OF AMBIENT(Hz) INPUT CURRENT DUE TO AMBIENT (µA)
LED LINEARITY AFE POWER DISSIPATION SYSTEM POWER DISSIPATION WITH 1 LED
RELATIVE LUMINOUS INTENSITY LP_BOOST = 1, GPIO MODE = 0 LP_BOOST = 1, LEDx_PA = 124mA
toc12 toc13 toc14
1.1 900 18
117.3µs 117.3µs
1 800 16
0.9 LED 3 - 700 14
0.8 660nm
NORMALIZED AT 125mA
58.7µs
600 12
0.7
POWER (mW)
POWER (µW)
0 0 0
0 20 40 60 80 100 120 0 100 200 300 0 100 200 300
DC FORWARD CURRENT (mA) SAMPLING RATE (Hz) SAMPLING RATE (Hz)
160
ABSOLUTE % CHANGE/V
Pin Configuration
SDA 1 14 INTB
SCL 2 13 GPIO
LDO_EN 3 12 VREF
MAXM86161
VLDO 4 11 GND_ANA
VLED 5 10 GND_DIG
N.C. 6 9 PGND
N.C. 7 8 N.C.
Pin Description
PIN NAME FUNCTION
POWER
5 VLED LED Power Supply Input. Connect to external voltage supply. Bypass with a 10μF capacitor to PGND.
9 PGND LED Power Return. Connect to GND.
10 GND_DIG Digital Logic and Digital Pad Return. Connect to GND_ANA.
11 GND_ANA Analog Power Return. Connect to GND.
CONTROL INTERFACE
1 SDA SDA Input/Output. Input/output for I2C data.
2 SCL SCL Input. I2C clock.
LDO Enable Input. Pull HIGH to turn on the internal LDO. Pull LOW to turn off the internal LDO. When
3 LDO_EN
pulled LOW, part in shut down.
13 GPIO General Purpose Input/Output. Open-drain when programmed as output (active-low).
14 INTB Open Drain Interrupt.
REFERENCE
4 VLDO Internal LDO output. Bypass with a 1μF capacitor to GND_ANA.
12 VREF Internal Reference Decoupling Point. Bypass with a 1µF capacitor to GND_ANA.
LED DRIVER
6
7 N.C. No Connection. Internally connected to LEDx, Solder to PCB for mechanical stability.
8
Detailed Description and changing residual ambient light from the sensor
The MAXM86161 is a complete, integrated, optical data measurements.
acquisition system, ideal for optical pulse oximetry and The MAXM86161 supports dynamic power down mode
heart-rate detection applications. It has been designed (low power mode) in which the power consumption is
for the demanding requirements of mobile and wearable decreased between samples. This mode is only support-
devices, requiring minimal external hardware components ed for sample rates 256sps and below. For more details
to be integrated into a wearable device. The MAXM86161 on the power consumption at each sample rate, please
includes high-resolution optical readout signal process- refer to the Electrical Characteristics table.
ing channels with robust ambient light cancellation and
high-current LED driver DACs to form a complete optical
LED Driver
readout signal chain. The MAXM86161 integrates three precision LED driver
current DACs that modulate LED pulses for a variety of
The module is fully adjustable through software registers
optical measurements. The LED current DACs have 8 bits
and the digital output data is stored in a 128-word FIFO
of dynamic range with four programmable full-scale rang-
within the IC. The FIFO allows the MAXM86161 to be
es of 31mA, 62mA, 94mA, and 124mA. The LED drivers
connected to a microcontroller or processor on a shared
are low dropout current sources allowing for low-noise,
bus where the data is not being read continuously from
power-supply independent LED currents to be sourced at
the MAXM86161 registers. It operates in fully autono-
the lowest supply voltage possible, minimizing LED power
mous modes for low-power battery applications.
consumption. The LED pulse width can be programmed
The MAXM86161 consists of a single optical readout from 14.8μs to 117.3μs to allow the algorithms to optimize
channel. MAXM86161 has three LED drivers and is well SpO2 and HR accuracy at the lowest dynamic power con-
suited for a wide variety of optical sensing applications. sumption dictated by the application.
The module operates on a 3.0V to 5.5V VLED single
FIFO Configuration
supply voltage. It has flexible timing and shutdown con-
figurations as well as control of individual blocks so an The FIFO has 128 sample depth and is designed to sup-
optimized measurement can be made at minimum power port various data types, as shown in Table 2. Each sample
levels. width is 3 bytes, which includes a 5-bit tag width. The
tag embedded in the FIFO_DATA is used to identify the
Optical Subsystem source of each sample data. The description of each tag
The optical subsystem in MAXM86161 is composed is as shown in Table 3.
of ambient light cancellation (ALC), a continuous-time Index to the data within a sample identifies the input
sigma-delta ADC, and proprietary discrete time filter. ALC to the PPG channels, and follows the order in the LED
incorporates a proprietary scheme to cancel ambient- Sequence Control registers (Table 1).
light-generated photo diode currents, allowing the sensor
to work in high ambient light conditions. The optical ADC LED Sequence Control (0x20 to 0x22)
has programmable full-scale ranges of 4μA to 32μA. The The data format in the FIFO as well as the sequenc-
internal ADC is a continuous time, oversampling sigma- ing of exposures are controlled by the LED Sequence
delta converter with 19-bit resolution. The ADC output Registers using LEDC1 through LEDC6. There are six LED
data rate can be programmed from 8sps (samples per Sequence Data Types available as shown in Table 2. The
second) to 4096sps. The MAXM86161 includes a propri- exposure sequence cycles through the LED Sequence
etary discrete time filter to reject 50Hz/60Hz interference bit fields starting from LEDC1 to LEDC6. The first LED
Sequence field set to NONE (0000) ends the sequence.
Table 2 lists the codes for exposures selected in the LED There are seven registers that control how the FIFO is
Sequence Control Registers. configured and read out. These registers are illustrated
Table 3 shows the format of the FIFO data along with in Table 4.
the associated tag. In a sample, if a picket fence event is
detected, the predicted value is pushed to the FIFO along
with its tag (PPFx_LEDCx_DATA).
When done so the sample sequence and the data format in the FIFO follows the following time/location sequence.
tag 1, PPG1 LED2 data
tag 2, PPG1 LED3 data
tag 3, PPG1 Ambient data
tag 1, PPG1 LED2 data
tag 2, PPG1 LED3 data
tag 3, PPG1 Ambient data
.
.
.
tag 1, PPG1 LED2 data
tag 2, PPG1 LED3 data
tag 3, PPG1 Ambient data
where,
PPGm LED1 data = Ambient corrected exposure data from LED1 in PPGm channel,
PPGm LED2 data = Ambient corrected exposure data from LED2 in PPGm channel
PPGm Ambient data = Direct ambient sample in PPGm channel
m = 1 of PPG1 channel
To calculate the number of available items when the INT signal is seen, one can perform the following pseudo-code:
read the OVF_COUNTER register
read the FIFO_DATA_COUNT register
if OVF_COUNTER == 0 //no overflow occurred
NUM_AVAILABLE_SAMPLES = FIFO_DATA_COUNT
else
NUM_AVAILABLE_SAMPLES = 128 // overflow occurred and data has been lost
endif
Table 6 shows the FIFO data format depends on the A_FULL_TYPE (0x0A)
data type being stored. Optical data, whether full ambient The A_FIFO_TYPE bit defines the behavior of the A_
corrected LED exposure, ambient corrected proximity or FULL interrupt. If the A_FIFO_TYPE bit is set low, the
direct ambient sampled data is left-justified, as shown in A_FULL interrupt gets asserted when the A_FULL con-
Table 5. Bits F23:F19 of the FIFO word contains the tag dition is detected and cleared by status register read,
that identifies the data. but reasserts for every sample if the A_FULL condition
FIFO_A_FULL (0x09) persists. If the A_FIFO_TYPE bit is set high, the A_FULL
The FIFO_A_FULL[6:0] field in the FIFO Configuration interrupt gets asserted only when a new A_FULL condi-
1 register (0x09) sets the watermark for the FIFO and tion is detected. The interrupt gets cleared on the Interrupt
determines when the A_FULL bit in the Interrupt_Status Status 1 register read, and does not reassert for every
register (0x00) gets asserted. The A_FULL bit is set when sample until a new A_FULL condition is detected.
the FIFO contains 128 minus FIFO_A_FULL[6:0] items. FIFO_STAT_CLR (0x0A)
When the FIFO is almost full, if the A_FULL_EN mask The FIFO_STAT_CLR bit defines whether the A-FULL
bit in the Interrupt_Enable register (0x03) is set, then interrupt should get cleared by the FIFO_DATA register
A_FULL bit gets asserted in the Interrupt Status 1 register read. If FIFO_STAT_CLR is set low, A_FULL and DATA_
and this bit is routed to the INT pin on the serial interface. RDY interrupts do not get cleared by the FIFO_DATA
This condition should prompt the applications processor register read but get cleared by the status register read.
to read samples off of the FIFO before it fills. The A_FULL If FIFO_STAT_CLR is set high, the A_FULL and DATA_
bit is cleared when the status register is read. RDY interrupts get cleared by a FIFO_DATA register read
The application processor can read both the FIFO_WR_ or a status register read.
PTR and FIFO_RD_PTR to calculate the number of items FLUSH_FIFO (0x0A)
available in the FIFO, or just read the OVF_COUNTER
and FIFO_DATA_COUNT registers, and read as many The FIFO Flush bit is used for flushing the FIFO. The
items as it needs to empty the FIFO. Alternatively, if FIFO becomes empty and the FIFO_WR_PTR[6:0],
the applications always responds much faster than FIFO_RD_PTR[6:0], FIFO_DATA_COUNT[7:0] and
the selected sample rate, it could just read 128 minus OVF_COUNTER[6:0] get reset to zero. FLUSH_FIFO is
FIFO_A_FULL[6:0] items when it gets A_FULL interrupt a self-clearing bit.
and be assured that all data from the FIFO are read. TIME_STAMP_EN (0x0A)
FIFO_RO (0x0A) When the TIME_STAMP_EN bit is set to 1, the 19 bits
The FIFO_RO bit in the FIFO Configuration 2 register time stamp gets pushed to the FIFO along with its tag for
(0x0A) determines whether samples get pushed on to every 8 samples. This time stamp is useful for aligning
the FIFO when it is full. If push is enabled when FIFO is data from two devices after the host reads the FIFOs of
full, old samples are lost. If FIFO_RO is not set, the new those devices. When the TIME_STAMP_EN bit is set to 0,
sample is dropped and the FIFO is not updated. the sample counter is not pushed to FIFO.
//Read FIFO
ReadFifo(dataBuf, sampleCnt * 3);
int i = 0;
for ( i = 0; i < sampleCnt; i++ ) {
led1A[i] = ((dataBuf[i*12+0] << 16 ) | (dataBuf[i*12+1] << 8) | (dataBuf[i*12+2]))
& 0x7ffff; // LED1, PD1
led1B[i] = ((dataBuf[i*12+3] << 16 ) | (dataBuf[i*12+4] << 8) | (dataBuf[i*12+5]))
& 0x7ffff; // LED1, PD2
led2A[i] = ((dataBuf[i*12+6] << 16 ) | (dataBuf[i*12+7] << 8) | (dataBuf[i*12+8]))
& 0x7ffff; // LED2, PD1
led2B[i] = ((dataBuf[i*12+9] << 16 ) | (dataBuf[i*12+10] << 8) | (dataBuf[i*12+11]))
& 0x7ffff; // LED2, PD2
}
}
Optical Timing ent measurement can be used to adjust the LED drive
The MAXM86161 optical controller is capable of being level to compensate for increased noise levels when high
configured to make a variety of measurements. Each LED interfering ambient signals are present.
exposure is ambient light compensated before the ADC The following optical timing diagrams illustrate several
conversion. possible measurement configurations.
The controller can be configured to pulse one, two, or One LED Pulsing with No Direct Ambient Sampling
three LED drivers sequentially so as to make measure-
The optical timing diagram below represents just LED1
ments at multiple wavelengths as is done in pulse oximetry
pulsing during the exposure time with no direct ambient
measurements or simultaneously to drive multiple LEDs
sampling enabled. This timing mode would be used when
such as is done with heart rate measurements on the
heart rate is being measured with a single green LED. In
wrist.
this mode, a single optical sampled value appears suc-
The controller is also configurable to measure direct cessively in the FIFO.
ambient level for every exposure sample. The direct ambi-
tPW
LED1_DRV
tSAMPLE
LED2_DRV
LED3_DRV
tLED_SETLNG
LED1 LED1
PD_SAMPLE EXPOSURE EXPOSURE
SAMPLE SAMPLE
tINT
NOTE: LED IS ON WHEN LEDx_DRV IS LOW
One LED Pulsing with Direct Ambient Sampling Two LEDs Pulsing Sequentially with Direct
The optical timing diagram below represents just LED1 Ambient Sampling
pulsing during the exposure time with direct ambient The timing diagram below illustrates the optical timing
sampling enabled. This timing mode would be used when when both LED1 and LED2 are enabled to pulse sequen-
heart rate is being measured with a single green LED. In tially. Direct ambient sampling is also enabled. This tim-
this mode, a single optical sampled value, followed by the ing mode would be used when SpO2 is being measured
ambient sampled value appears successively in the FIFO. with IR and red LEDs. When SpO2 is being measured
with IR and red LEDs, the optical sampled value for each
LED appears successively, followed by the direct ambient
sampled value in the FIFO.
tPW
LED1_DRV
tSAMPLE
LED2_DRV
LED3_DRV
tLED_SETLNG
tINT tINT
NOTE: LED IS ON WHEN LEDx_DRV IS LOW
tPW
LED1_DRV
tSAMPLE
tPW
LED2_DRV
LED3_DRV
tLED_SETLNG tLED_SETLNG
Figure 3. Timing for LED1 and LED2 Pulsing Sequentially with Direct Ambient Sampling
All LEDs Pulsing Sequentially with Direct In addition to algorithmically reducing the sub-DAC tran-
Ambient Sampling sitions, the MAXM86161 incorporates a self-calibration
The optical timing diagram below illustrates the three scheme that can be used to further reduce the sub-DAC
LEDs pulsing sequentially, followed by a direct ambient XNL errors. To run self-calibration, the following setup
sample. This timing mode would be used when the heart procedure should be used:
rate on a green LED is combined with an SpO2 measure- 1) Write 0x00 to the following register addresses: 0x02,
ment using IR and RED LEDs. 0x03, 0x0D, 0x10, 0x12, 0x13, 0x20.
ADC Architecture and Transfer Function 2) Set the PPG1_ADC_RGE and PPG_TINT bit fields in
Non-Linearity (XNL) Trim the PPG_Configuration1 register 0x11 to the values
MAXM86161 is comprised of a 16-bit current integrat- required for the intended application.
ing incremental delta-sigma analog-to-digital converter 3) Set the START_CAL bit to one on the DAC Calibra-
(ADC), wrapped in a 5-bit subranging digital-to-analog tion Enable register 0x50.
converter (DAC). The subranging DAC is scaled to have 4) Wait for 200ms for the self-calibration procedure to
two bits of redundancy, resulting in an overall dynamic complete.
range of 19 bits.
5) Monitor the CAL_DAC_Complete bit in the DAC
The native delta-sigma ADC linearity is exceptional. Calibration Enable register to go high, indicating the
However, the subranging DAC uses a unary architecture calibration procedure is complete.
which has some mismatch between unit current sources
6) Check the CAL_DAC1_OOR and bits in the DAC
of the DAC and the ADC reference current. This mismatch
Calibration Enable register to verify that self-
results in some transfer function nonlinearity (XNL) errors
calibration has completed successfully.
when the sub-DAC code transitions. For this reason, the
sub-ranging DAC algorithm is designed to minimize DAC 7) Configure the registers 0x02, 0x03, 0x0D, 0x10, 0x12,
transitions by introducing large hysteresis through the and 0x13 in any order for the application intended.
overlapping sub-DAC ranges. Consequently, under nor- 8) Finally, write register 0x20 to start the MAXM86161
mal PPG operation, the sub-DAC does not transition and measurement sequence.
the linearity of the converter signal is driven entirely by the
linear native delta-sigma ADC.
tPW
LED1_DRV
tSAMPLE
tPW
LED2_DRV
tPW
LED3_DRV
tLED_SETLNG tLED_SETLNG tLED_SETLNG
Figure 4. Timing for LED1, LED2, and LED3 Pulsing Sequentially with Direct Ambient Sampling
To further support dealing with the residual sub-DAC MAXM86161 power to a minimum during situations where
XNL error, which appears as a small offset shift when the there is no reflective returned signal. It is also intended to
sub-DAC transitions, an optional FIFO tag value can be reduce the emitted light to a minimum or even below that
enabled. This optional FIFO tag is enabled through the perceivable by the human eye.
DAC_CODE_CHG_TAG bit in the PPG_Sync_Control When the proximity mode is enabled and the measure-
register (0x10). When enabled, the FIFO outputs a tag ment assigned to LEDC1 with the LED current in PILOT_
value of 0x1D on every conversion on which the sub-DAC PA exceeds the PROX_INT_THRESH, the MAXM86161
transitions. This tag value overrides the normal outputted also generates a Proximity Detect Interrupt (register
tag for that conversion, thus allowing the conversion on 0x01[4]). In such an event, MAXM86161 switches to nor-
which the sub-DAC update occurred to be located in the mal mode, changing the sample rate to that assigned in
FIFO. One application of this feature would be to trigger PPG Configuration 2 register (0x12) bit field PPG_SR and
special backend software handling for the conversions on the LED current assigned to the measurement of LEDC1.
which the sub-DAC update occurs to compensate for the Thus, the MAXM86161 is able to switch to proximity
residual error. mode and back to normal mode without microprocessor
Proximity Mode Function interaction.
The MAXM86161 includes an optical proximity function The threshold applied to PROX_INT_THRESH should be
which could significantly reduce energy consumption and well below that of a usable signal at the maximum LED
extend battery life when the sensor is not in contact with current applied to LEDC1 but high enough to not be trig-
the skin. Proximity mode is enabled by setting the PROX_ gered by noise from distant objects. Further, the current
INT_EN bit field to 1 in the Interrupt Enable 2 register assigned to PILOT_PA should be much lower than that
(0x02[4]), setting a threshold in the PROX_INT_THRESH assigned to LEDx_PA in normal mode. This ensures that
register (0x14) and assigning an LED current in the the signal obtained from LEDC1 drops significantly when
PILOT_PA (0x29). Proximity mode also requires that LED entering proximity mode; thus, providing enough hyster-
Sequence Register 1, field LEDC1 (address [3:0]) to be esis to eliminate multiple interrupts being generated at the
assigned to a specific measurement and that measure- proximity-normal mode transition.
ment is correctly connected to a light source. The LEDC1 To guarantee that MAXM86161 successfully transitions
measurement is used to detect the optical presents of a from proximity mode to normal mode, the PROX_INT_
reflecting object in proximity mode and thus must be valid THRESH should be low enough and the PILOT_PA high
for proximity mode to work. enough to ensure that the device mounted on the darkest
When enabled, the Proximity Detect Interrupt (register of skins returns a signal above the PROX_INT_THRESH
0x01[4]) is asserted and proximity mode is entered when at the PILOT_PA current.
the value of the measurement assigned to LEDC1 drops Note that proximity mode is only available to LEDC1 mea-
below the PROX_INT_THRESH. When entering proximity surements that are made with PD1_IN optical channel
mode, the MAXM86161 drops the current to the LED(s) without an external mux. When proximity mode is active,
assigned to LEDC1 to PILOT_PA value, reduce the sam- LEDC2 to LEDC6 is ignored. The threshold applied to the
ple rate to 8sps and operates in Low Power mode. The PROX_INT_THRESH register are in units of 2048LSBs.
intent is to both reduce the consumed LED current and
SENSOR INITIALIZED
WITH PROX MODE ON
(PROX_INT_EN = 1)
PROX MODE
(LED ASSIGNED TO
LEDC1 TURNED ON
BASED ON PILOT_PA
SETTINGS) Note1
REMAINS IN
PROX MODE
NO
ADC COUNT
> PROXIMITY MODE
THRESHOLD? Note2
PROX_INT
ASSERTED EXIT PROX MODE
+
PROX_INT CLEARED BY
READING INTERRUPT STATUS 1
ENTER THE NORMAL
REGISTER +
DATA ACQUISITIONNote3 FIFO_DATA FLUSHED
RE-ENTER
PROX MODE HOST READ OUT
FIFO_DATA
NO
ADC COUNT
< PROXIMITY MODE
THRESHOLD? Note2 ENTER PROX MODE
+
PROX_INT CLEARED BY
READING INTERRUPT STATUS 1
REGISTER
PROX_INT +
ASSERTED FIFO_DATA FLUSHED
Note 1: SAMPLE RATE = 8sps, AND OPERATES IN LOW POWER MODE DURING PROX MODE.
Note 2: PROXIMITY MODE THRESHOLD = PROX_INT_THRESH * 2048
Note 3: CONFIGURATIONS AS DEFINED IN LEDx_PA[7:0] AND PPG_SR[4:0]
Picket Fence Detect-and-Replace Function passes under a bridge and into a dark shadow. In these
Under typical situations, the rate of change of ambient light situations, it is possible for the MAXM86161 ambient light
is such that the ambient signal level during exposure can correction (ALC) circuit to fail and produce an erroneous
be accurately predicted and high levels of ambient rejec- estimation of the ambient light during the exposure inter-
tion are obtained. However, it is possible to have situations val. The MAXM86161 has a built-in algorithm called the
where the ambient light level changes extremely rapidly, picket fence function that corrects the final PPG results in
for example when in a car with direct sunlight exposure case of ALC circuit failure due to these extreme conditions.
The picket fence function works on the basis that the IIR_INIT_VALUE bits control the initial values for the IIR
extreme conditions causing a failure of the ALC are low-pass filter when the algorithm is initialized.
rare events. These events resulting in a large deviation When a picket fence event is detected, the option of how
from the past sample history of a normal PPG riding to extrapolate the correct point is again controlled by the
on a motion effect signal, which normally would change PF_ORDER bit. This point can be identical as the previ-
relatively slowly with respect to the sampling interval. ous point (PF_ORDER = 0) or a least square fit extrapo-
Under these conditions, it is possible to detect sample lation based on the previous four ADC converted points
values that are well outside the normal sample-to-sample (PF_ORDER = 1).
deviation and replace those samples with an extrapolated
value based on the relatively recent history of samples. Figure 6 illustrates the function in block diagram form. If
the picket fence algorithm is enabled (bit PF_ENABLE
The picket fence function is enabled by setting PF_ = 1), the input from the ADC, s(n) generates p(n) in a
ENABLE (0x16[7]) bit to 1. The power-on reset default way that is dependent on the value of the PF_ORDER
of MAXM86161 has the picket fence function disabled. bit. Value s(n) is subtracted from p(n) and turned into a
The function begins with detecting a picket fence event. positive number d(n) and fed into the IIR low pass filter
Detection is done by taking the absolute value of the dif- producing value lpf(n). The output of the low-pass filter
ference between the present ADC converted value at a lpf(n) is then multiplied by a user constant, THRESHOLD_
predicted point, called an estimation error, and comparing SIGMA_MULT to produce the picket fence threshold,
this estimation error to a threshold. If the estimation error PFT(n). The value d(n) is then compared to this threshold
exceeds the threshold, then the present ADC converted and if greater than the PFT(n), the point s(n) is replaced
point is considered a picket fence event. with the point p(n).
The predicted point referred to above is computed in one This scheme essentially produces a threshold that tracks
of two ways, set by the value in the PF_ORDER (0x16[6]) the past returned optical signal with a bandwidth based
bit. If PF_ORDER = 0 the predicted point is simply the on the past historical change sample-to-sample. Figure 7
previous ADC converted point. If PF_ORDER = 1 the pre- below illustrates graphically how the threshold detection
dicted point is a least square fit extrapolation based on the scheme works on a real PPG signal. Note that the black
previous four picket fence outputs, which under normal trace is the real ADC sample point, the red traces are the
circumstances is identical to the ADC converted inputs. output of the low-pass filter of the error estimation mir-
The threshold used in detecting a picket fence event is a rored around the ADC points, and the blue traces are the
low passed version of the running estimation error com- threshold values.
puted above times a multiplier. The multiplier used is set The recommended settings for the picket fence algorithm
by the THRESHOLD_SIGMA_MULT (0x16[1:0]) bits and are the default power on reset values for all registers but
can be 4, 8, 16, or 32 times the running low-passed filter THRESHOLD_SIGMA_MULT bits. Here it is recommend-
output of the estimation error. ed that the 32x value 0x3 is used so only large excursions
The low-pass filter function is controlled by two param- are classified as picket fence events. Lower values of
eters, the IIR_TC (0x16[5:4]) bits and IIR_INIT_VALUE THRESHOLD_SIGMA_MULT can cause the algorithm to
(0x16[3:2]) bits. The IIR_TC bits control the filters time go off track with extremely noisy waveforms.
constant and are adjustable from 8 to 64 samples. The
- IIR LOW-FILTER
IIR_TC
THRESHOLD_SIGMA_MULT
PICKET EVENT
PICKET FENCE
NOT DETECTED NO d(n) > PFT ?
THRESHOLD, PFT(n)
DOUT=s(n)
YES
PICKET EVENT
DETECTED
DOUT=p(n)
# 10
5 Picket Fence Algorithm Variables
Raw PPG
1.46 PPG+Estimation
PPG-Estimation
PPG+Threshod
PPG-Threshold
1.44
1.42
1.4
1.38
ADC Codes (LSB)
1.36
1.34
SDA
tSU, STA
tBUF
tSU, DAT tHD, STA tSU, STO
tSP
tLOW tHD, DAT
SCL
tHIGH
tR tF
tHD, STA
S Sr P
SCL
SDA
SDA
tSU, STA
tBUF
tSU, DAT tHD, STA tSU, STO
tSP
tLOW tHD, DAT
SCL
tHIGH
tR tF
tHD, STA
I2C Write Data Format The second byte transmitted from the master configures
A write to the MAXM86161 includes transmission of a the MAXM86161 internal register’s address pointer. The
START condition, the slave address with the R/W bit set pointer tells the MAXM86161 where to write the next byte
to 0, one byte of data to configure the internal register of data. An acknowledge pulse is sent by the MAXM86161
address pointer, one or more bytes of data, and a STOP upon receipt of the address pointer data.
condition. Figure 12 illustrates the proper frame format The third byte sent to the MAXM86161 contains the data
for writing one byte of data to the MAXM86161. Figure 13 that is written to the chosen register. An acknowledge
illustrates the frame format for writing n-bytes of data to pulse from the MAXM86161 signals receipt of the data
the MAXM86161. byte. The address pointer auto increments to the next
The slave address with the R/W bit set to 0 indicates that register address after each received data byte. This auto-
the master intends to write data to the MAXM86161. The increment feature allows a master to write to sequential
MAXM86161 acknowledges receipt of the address byte registers within one continuous frame. The master sig-
during the master-generated 9th SCL pulse. nals the end of transmission by issuing a STOP condition.
The auto-increment feature is disabled when there is an
attempt to write to the FIFO_DATA register.
R/W
S 1 1 0 0 0 1 1 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK
=0
D7 D6 D5 D4 D3 D2 D1 D0 ACK P
DATA BYTE
S = START CONDITION
P= STOP CONDITION
ACK = ACKNOWLEDGE BY THE RECEIVER INTERNAL ADDRESS POINTER AUTO-INCREMENT(FOR
WRITING MULTIPLE BYTES)
R/W
S 1 1 0 0 0 1 1 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK
=0
D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK P
S = START CONDITION
P= STOP CONDITION INTERNAL ADDRESS POINTER AUTO-INCREMENT(FOR
ACK = ACKNOWLEDGE BY THE RECEIVER WRITING MULTIPLE BYTES)
I2C Read Data Format The address pointer can be preset to a specific register
Send the slave address with the R/W bit set to 1 to initiate before a read command is issued. The master presets the
a read operation. The MAXM86161 acknowledges receipt address pointer by first sending the MAXM86161 slave
of its slave address by pulling SDA low during the 9th SCL address with the R/W bit set to 0 followed by the register
clock pulse. A START command followed by a read com- address. A REPEATED START condition is then sent fol-
mand resets the address pointer to register 0x00. lowed by the slave address with the R/W bit set to 1. The
MAXM86161 then transmits the contents of the specified
The first byte transmitted from the MAXM86161 is the
register. The address pointer auto-increments after trans-
contents of register 0x00. Transmitted data is valid on the
mitting the first byte.
rising edge of SCL. The address pointer auto-increments
after each read data byte. This auto-increment feature The master acknowledges receipt of each read byte
allows all registers to be read sequentially within one during the acknowledge clock pulse. The master must
continuous frame. The auto-increment feature is disabled acknowledge all correctly received bytes except the last
when there is an attempt to read from the FIFO_DATA byte. The final byte must be followed by a not acknowledge
register. A STOP condition can be issued after any num- from the master and then a STOP condition. Figure 14
ber of read data bytes. If a STOP condition is issued fol- illustrates the frame format for reading one byte from the
lowed by another read operation, the first data byte to be MAXM86161. Figure 15 illustrates the frame format for
read is from register 0x00. reading multiple bytes from the MAXM86161.
R/W
S 1 1 0 0 0 1 1 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK
=0
R/W
Sr 1 1 0 0 0 1 1 ACK D7 D6 D5 D4 D3 D2 D1 D0 NACK P
=1
S = START CONDITION
Sr = REPEATED START CONDITION
P= STOP CONDITION
ACK = ACKNOWLEDGE BY THE RECEIVER
NACK = NOT ACKNOWLEDGE
R/W
S 1 1 0 0 0 1 1 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK
=0
R/W
Sr 1 1 0 0 0 1 1 ACK D7 D6 D5 D4 D3 D2 D1 D0 AM
=1
SLAVE ID DATA 1
D7 D6 D5 D4 D3 D2 D1 D0 AM D7 D6 D5 D4 D3 D2 D1 D0 NACK P
S = START CONDITION
Sr = REPEATED START CONDITION
P= STOP CONDITION
ACK = ACKNOWLEDGE BY THE RECEIVER
NACK = NOT ACKNOWLEDGE
AM = ACKNOWLEDGE BY THE MASTER
Register Map
ADDRESS NAME MSB LSB
STATUS
DIE_
DATA_ ALC_ PROX_ LED_ PWR_
0x00 Interrupt Status 1[7:0] A_FULL TEMP_ –
RDY OVF INT COMPB RDY
RDY
SHA_
0x01 Interrupt Status 2[7:0] – – – – – – –
DONE
DIE_
A_ DATA_ ALC_ LED_
PROX_ TEMP_
0x02 Interrupt Enable 1[7:0] FULL_ RDY_ OVF_ OMPB_ – –
INT_EN RDY_
EN EN EN EN
EN
SHA_
0x03 Interrupt Enable 2[7:0] – – – – – – – DONE_
EN
FIFO
0x04 FIFO Write Pointer[7:0] – FIFO_WR_PTR[6:0]
0x05 FIFO Read Pointer[7:0] – FIFO_RD_PTR[6:0]
0x06 Over Flow Counter[7:0] – OVF_COUNTER[6:0]
0x07 FIFO Data Counter[7:0] FIFO_DATA_COUNT[7:0]
0x08 FIFO Data Register[7:0] FIFO_DATA[7:0]
0x09 FIFO Configuration 1[7:0] – FIFO_A_FULL[6:0]
TIME_ FIFO_ A_
FLUSH_ FIFO_
0x0A FIFO Configuration 2[7:0] – – STAMP_ STAT_ FULL_ –
FIFO RO
EN CLR TYPE
SYSTEM CONTROL
SIN-
LP_
0x0D System Control[7:0] – – – – GLE_ SHDN RESET
MODE
PPG
PPG CONFIGURATION
DAC_
TIME_ SW_
CODE_
0x10 PPG Sync Control[7:0] STAMP_ – FORCE_ GPIO_CTRL[3:0]
CHG_
EN SYNC
TAG
ALC_ ADD_
PPG1_PPG1_
0x11 PPG Configuration 1[7:0] DIS- OFF- – PPG_TINT[1:0]
ADC_RGE[1:0]
ABLE SET
0x12 PPG Configuration 2[7:0] PPG_SR[4:0] SMP_AVE[2:0]
DIG_
BURST_
0x13 PPG Configuration 3[7:0] LED_SETLNG[1:0] FILT_ – – BURST_RATE[1:0]
EN
SEL
0x14 Prox Interrupt Threshold[7:0] PROX_INT_THRESH[7:0]
0x15 Photo Diode Bias[7:0] – – – PDBIAS1[2:0]
PPG PICKET FENCE DETECT AND REPLACE
PF_EN- PF_OR- IIR_INIT_VAL- THRESHOLD_
0x16 Picket Fence[7:0] IIR_TC[1:0]
ABLE DER UE[1:0] SIGMA_MULT[1:0]
Register Details
INTERRUPT STATUS 1 (0x00)
BIT 7 6 5 4 3 2 1 0
LED_ DIE_TEMP_
Field A_FULL DATA_RDY ALC_OVF PROX_INT – PWR_RDY
COMPB RDY
Reset 0x0 0x0 0x0 0x0 0x0 0x0 – 0x0
Access Type Read Only Read Only Read Only Read Only Read Only Read Only – Read Only
A_FULL
This is a read-only bit. This bit is cleared by reading the Interrupt Status 1 Register. It is also cleared when FIFO_DATA
register is read if FIFO_STAT_CLR = 1.
DATA_RDY
This is a read-only bit and it is cleared by reading the Interrupt Status 1 register (0x00). It is also cleared by reading
the FIFO_DATA register if FIFO_STAT_CLR = 1
ALC_OVF
This is a read-only bit. The interrupt is cleared by reading the Interrupt Status 1 register (0x00).
PROX_INT
If PROX_INT_EN is 0, then the prox mode is disabled and the exposure sequence configured in LED Sequence Control Registers
begins immediately. This bit is cleared when the Interrupt Status 1 Register is read.
LED_COMPB
LED is not compliant. At the end of each sample, if the LED Driver is not compliant, LED_COMPB interrupt is asserted
if LED_COMPB_EN is set to 1. It is a read-only bit and is cleared when the status register is read.
DIE_TEMP_RDY
This is a read-only bit and it is automatically cleared when the Temperature data is read or when the Interrupt Status 1
Register is read.
PWR_RDY
This is a read-only bit and it indicates that VDD has gone below UVLO Threshold. This bit is not triggered by a soft
reset. This bit is cleared when Interrupt Status 1 Register is read, or by setting SHDN bit to 1.
SHA_DONE
SHA256 Authentication Done status bit is set to 1 when the Authentication Algorithm completes. This is a read-only bit
and it gets cleared when the Status Register is read.
A_FULL_EN
DATA_RDY_EN
ALC_OVF_EN
VALUE ENUMERATION DECODE
0 DISABLE ALC_OVF interrupt is disabled
1 ENABLE ALC_OVF interrupt in enabled
PROX_INT_EN
When this is enabled, the exposure programmed in the LEDC1 Sequence register is used for proximity detection. If the
ADC reading for this exposure is below 2048 times the threshold programmed in PROX_INT_THRESH register, the
device is in proximity mode, otherwise it is in normal mode.
When the device is in proximity mode, the sample rate used is 8Hz, and the device starts data acquisition in pilot
mode, using only one exposure of the LED programmed in LEDC1 register, and the LED current programmed in
PILOT_PA register.
When the device is in normal mode, the sample rate used is as defined under PPG_SR register, and the device starts
data acquisition in normal mode, using all the exposures programmed in the LED Sequence registers and appropriate
LED currents.
PROX_INT interrupt is asserted when the devices enters proximity mode or normal mode if the PROX_INT_EN is pro-
grammed to 1.
LED_COMPB_EN
DIE_TEMP_RDY_EN
SHA_DONE_EN
Enable SHA_DONE interrupt
FIFO_WR_PTR
This points to the location where the next sample is to be written. This pointer advances for each sample pushed on to
the circular FIFO.
Refer to the FIFO Configuration for details.
FIFO READ POINTER (0X05)
BIT 7 6 5 4 3 2 1 0
Field – FIFO_RD_PTR[6:0]
Reset – 0x0
Access Type – Write, Read
FIFO_RD_PTR
The FIFO Read Pointer points to the location from where the processor gets the next sample from the FIFO using the
serial interface. This advances each time a sample is popped from the circular FIFO.
The processor can also write to this pointer after reading the samples. This allows rereading (or retrying) samples from
the FIFO. However writing to FIFO_RD_PTR can have adverse effects if it results in the FIFO being almost full.
Refer to the FIFO Configuration for details.
OVER FLOW COUNTER (0X06)
BIT 7 6 5 4 3 2 1 0
Field – OVF_COUNTER[6:0]
Reset – 0x0
Access Type – Read Only
OVF_COUNTER
When FIFO is full any new samples will result in new or old samples getting lost depending on FIFO_RO. OVF_
COUNTER counts the number of samples lost. It saturates at 0x7F.
Refer to the FIFO Configuration for details.
FIFO DATA COUNTER (0X07)
BIT 7 6 5 4 3 2 1 0
Field FIFO_DATA_COUNT[7:0]
Reset 0x0
Access Type Read Only
FIFO_DATA_COUNT
This is a read-only register which holds the number of items available in the FIFO for the host to read. This increments
when a new item is pushed to the FIFO, and decrements when the host reads an item from the FIFO.
Refer to the FIFO Configuration for details.
FIFO DATA REGISTER (0X08)
BIT 7 6 5 4 3 2 1 0
Field FIFO_DATA[7:0]
Reset 0x0
Access Type Read Only
FIFO_DATA
This is a read-only register and is used to get data from the FIFO. Refer to the FIFO Configuration for details.
FIFO_A_FULL
These bits indicate how many new samples can be written to the FIFO before the interrupt is asserted. For example, if
set to 0xF, the interrupt triggers when there is 15 empty space left (113 entries), and so on.
Refer to the FIFO Configuration for details.
FLUSH_FIFO
When this bit is set to ‘1’, the FIFO gets flushed, FIFO_WR_PTR and FIFO_RD_PTR are reset to zero and FIFO_
DATA_COUNT becomes 0. The contents of the FIFO are lost.
FIFO_FLUSH is a self-clearing bit.
Refer to the FIFO Configuration for details.
FIFO_STAT_CLR
This defines whether the A-FULL interrupt should get cleared by FIFO_DATA register read.
Refer to the FIFO Configuration for details.
A_FULL_TYPE
This defines the behavior of the A_FULL interrupt.
FIFO_RO
Push enable when FIFO is full:
This bit controls the behavior of the FIFO when the FIFO becomes completely filled with data.
Push to FIFO is enabled when FIFO is full if FIFO_RO = 1 and old samples are lost. Both FIFO_WR_PTR increments
for each sample after the FIFO is full. FIFO_RD_PTR also increments for each sample pushed to the FIFO.
Push to FIFO is disabled when FIFO is full if FIFO_RO = 0 and new samples are lost. FIFO_WR_PTR does not incre-
ment for each sample after the FIFO is full.
When the device is in PROX mode, push to FIFO is enabled independent of FIFO_RO setting.
Refer to the FIFO Configuration for details.
SINGLE_PPG
Use one PPG Channel.
In Single PPG devices, this bit is ignored. In Dual PPG devices, if this bit is 0, use two PPG channels, otherwise use
only PPG1 channel.
LP_MODE
In low power mode, the sensor can be dynamically powered down between samples to conserve power. This dynamic
power down mode option only supports samples rates of 256sps and below. This mode is not available for higher sample rates.
SHDN
The part can be put into a power-save mode by setting this bit to one. While in power-save mode, all configuration reg-
isters retain their values, and write/read operations function as normal. All interrupts are cleared to zero in this mode.
RESET
When this bit is set, the part undergoes a forced power-on-reset sequence. All configuration, threshold and data
registers including distributed registers are reset to their power-on-state. This bit then automatically becomes ‘0’ after
the reset sequence is completed.
TIME_STAMP_EN
Enable pushing TIME_STAMP to FIFO. Refer to the FIFO Configuration for details.
DAC_CODE_CHG_TAG
Override Tag with 0x1D in the FIFO when the subranging DAC code changes for the expsoure data.
SW_FORCE_SYNC
Writing a 1 to this bit, aborts current sample and starts a new sample. This is a self clearing bit.
GPIO_CTRL
The table below shows how the two GPIO ports are controlled for different modes of operation.
When two devices are configured to work as master-slave device pairs, they have to be configured identically for the
following configuration register fields:
●● PPG_SR
●● PPG_TINT
●● SMP_AVE
●● TIME_STAMP_EN
●● FIFO_A_FULL
●● FIFO_ROLLS_ON_FULL
Number of LED Sequence Registers (LEDC1 to LEDC6) programmed should be the same in both the devices. In
Exposure Trigger mode, if Ambient is programmed in one of the registers, it needs to be in the same LEDCx register in
both the devices.
GPIO_CTRL register for both the devices should be programmed to be either Sample Trigger or Exposure Trigger.
It is also important to configure the slave first and then the master.
DATA_RDY or A_FULL interrupt should be enabled only on the master. When interrupt is asserted read the master first
and then the slave. Read the same number of items from both devices.
Refer to the GPIO Configuration for details.
GPIO_ GPIO
COMMENT
CTRL [3:0] FUNCTION
GPIO1 is active if any of the LEDCn[3:0] states A, B, or C are enabled in the exposure se-
Tristate or
0000 quence. If LEDCn[3:0] state A, B, or C is not enabled in the exposure sequence, GPIO1 is in
Mux Control
three strate unless externally pulled up.
GPIO1 is defined as a sample trigger input (slave). This input can come from an external
Input
0010 source or from another MAXM86161 in master sample mode. Exposure timing is controlled
Sample Trigger
by an internal oscillator.
GPIO1 is defined as an exposure trigger input (slave). This input can come from an external
Input
0110 source or from another MAXM86161 in master sample mode. Both sample and exposure
Exposure Trigger
timing is controlled by the GPIO1 input.
Input
GPIO1 is defined as a start of sample sync input. The falling edge of GPIO1 causes the
1001 HW_FORCE_
present sample sequence to be terminated.
SYNC
GPIO1 is defined as start of powerup sequence for one sample. The falling edge of GPIO1
Input
starts the powerup sequence followed by the exposure sequence as programmed in the
1010 Sample Sync
LEDCn[3:0] registers. After the sample data is pushed to the FIFO, the device fully shuts
ONE_SHOT
down and waits for the next Sample Sync pulse on GPIO1.
ALC_DISABLE
ADD_OFFSET
ADD_OFFSET is an option designed for dark current measurement. Adding offset to the PPG Data allows the dark
current measurement without clipping the signal below 0.
When ADD_OFFSET is set to 1, an offset is added to the PPG Data to be able to measure the dark current. The offset
is 8192 counts if PPG_SR is programmed for single pulse mode. The offset is 4096 counts if PPG_SR is programmed
for dual pulse mode.
PPG2_PPG1_ADC_RGE
These bits set the ADC range of the SPO2 sensor as shown in the table below.
PPG1_PPG1_ADC_RGE
These bits set the ADC range of the SPO2 sensor as shown in the table below.
PPG_TINT
These bits set the pulse width of the LED drivers and the integration time of PPG ADC as shown in the table below.
tPW = tTINT + tLED_SETLNG + 0.5μs
PPG_TINT[1:0] TPW, PULSE WIDTH (μs) TTINT, INTEGRATION TIME (μs) RESOLUTION BITS
00 21.3 14.8 19
01 35.9 29.4 19
10 65.2 58.7 19
11 123.8 117.3 19
PPG_SR
These bits set the effective sampling rate of the PPG sensor as shown in the table below. The default on-chip sampling
clock frequency is 32768Hz.
Note: If a sample rate is set that cannot be supported by the selected pulse width and number of exposures per
sample, then the highest available sample rate is automatically set. The user can read back this register to confirm the
sample rate.
Maximum Sample rates (sps) supported for all the Integration Time (PPG_TINT) and Number of Exposures:
SMP_AVE
To reduce the amount of data throughput, adjacent samples (in each individual channel) can be averaged and deci-
mated on the chip by setting this register.
These bits set the number of samples that are averaged on chip before being written to the FIFO.
When BURST_EN is 1, SMP_AVE defines the number of conversions per burst. Depending on the BURST_RATE
programmed and the PPG_SR used, it might not be possible to accommodate some of SMP_AVE values. In that case,
SMP_AVE takes the highest value that can be accommodated. If SMP_AVE = 0 cannot be accommodated, burst mode
is disabled.
Note: PPG_SR itself depends on Number of conversions per sample (LEDC1 to LEDC6) and the LED Integration time
(PPG_TINT).
The following table shows the maximum SMP_AVE allowed for various configurations of BURST_RATE and PPG_SR:
LED_SETLNG
Delay from rising edge of LED to start of ADC integration. This allows for the LED current to settle before the start of
ADC integration.
DIG_FILT_SEL
Select Digital Filter Type
BURST_RATE
BURST_EN
When Burst Mode is disabled, PPG data conversions are continuous at the sample rate defined by PPG_SR register,
When Burst mode is enabled, a burst of PPG data conversions occur at the sample rate defined by PPG_SR register.
Number of conversion in the burst is defined by the SMP_AVE register. Average data from the burst of data conversions
is pushed to the FIFO. The burst repeats at the rate defined in BURST_RATE[2:0] register. If the number of conversions
cannot be accommodated, the device uses the next highest number of conversions.
If the effective PPG_SR is too slow to accommodate the burst rate programmed, BURST_EN is automatically set to 0,
and the device runs in continuous mode.
Each data conversion cycle is a sequence of conversions defined in the LEDC1 to LEDC6 registers.
PROX_INT_THRESH
This register sets the LED1 ADC count that triggers the transition between proximity mode and normal mode. The thresh-
old is defined as the 8 MSB bits of the ADC count. For example, if PROX_INT_THRESH[7:0] = 0x01, then an ADC value
of 2048 (decimal) or higher triggers the PROX interrupt. If PROX_INT_THRESH[7:0] = 0xFF, then only a saturated ADC
triggers the interrupt.
Please see the Proximity Mode Function section in the detailed description for more details on the operation of proximity
mode.
PHOTO DIODE BIAS (0X15)
BIT 7 6 5 4 3 2 1 0
Field – PDBIAS2[2:0] – PDBIAS1[2:0]
Reset – 0x0 – 0x0
Access Type – Write, Read – Write, Read
PDBIAS2
See the Photo Diode Biasing for more information.
PDBIAS1
See the Photo Diode Biasing for more information.
PF_ENABLE
Refer to the Picket Fence Detect-and-Replace Function for details.
PF_ENABLE set to 1 enabled the picket-fence detect and replace method.
PF_ORDER
PF_ORDER determines which prediction method is used: the last sample or a linear fit to the previous four samples.
Refer to the Picket Fence Detect-and-Replace Function for details.
IIR_TC
IIR_TC[1:0] determines the IIR filter bandwidth where the lowest setting has the narrowest bandwidth of a first-order
filter.
Refer to Picket Fence Detect-and-Replace Function for details.
IIR_INIT_VALUE
This IIR filter estimates the true standard deviation between the actual and predicted sample and tracks the ADC
Range setting.
Refer to the Picket Fence Detect-and-Replace Function for details.
IIR_INIT_VALUE[1:0] CODE
00 64
01 48
10 32
11 24
THRESHOLD_SIGMA_MULT
GAIN resulting from the SIGMA_MULT[1:0] setting determines the number of standard deviations of the delta between
the actual and predicted sample beyond which a picket-fence event is triggered.
Refer to the Picket Fence Detect-and-Replace Function for details.
THRESHOLD_SIGMA_MULT[1:0] GAIN
00 4
01 8
10 16
11 32
LEDC2
These bits set the data type for LED Sequence 2 of the FIFO.
See the FIFO Configuration for more information.
LEDC1
These bits set the data type for LED Sequence 1 of the FIFO.
See the FIFO Configuration for more information.
LED SEQUENCE REGISTER 2 (0X21)
BIT 7 6 5 4 3 2 1 0
Field LEDC4[3:0] LEDC3[3:0]
Reset 0x0 0x0
Access Type Write, Read Write, Read
LEDC4
These bits set the data type for LED Sequence 4 of the FIFO.
See the FIFO Configuration for more information.
LEDC3
These bits set the data type for LED Sequence 3 of the FIFO.
See the FIFO Configuration for more information.
LED SEQUENCE REGISTER 3 (0X22)
BIT 7 6 5 4 3 2 1 0
Field LEDC6[3:0] LEDC5[3:0]
Reset 0x0 0x0
Access Type Write, Read Write, Read
LEDC6
These bits set the data type for LED Sequence 6 of the FIFO.
See the FIFO Configuration for more information.
LEDC5
These bits set the data type for LED Sequence 5 of the FIFO.
See the FIFO Configuration for more information.
LED1 PA (0x23)
BIT 7 6 5 4 3 2 1 0
Field LED1_DRV[7:0]
Reset 0x00
Access Type Write, Read
LED1_DRV
These bits set the nominal drive current of LED 1 as shown in the table below.
LEDX_RGE[1:0] 00 01 10 11
LEDx_PA[7:0] LED Current (mA) LED Current (mA) LED Current (mA) LED Current (mA)
00000000 0.00 0.00 0.00 0.00
00000001 0.12 0.24 0.36 0.48
00000010 0.24 0.48 0.73 0.97
00000011 0.36 0.73 1.09 1.45
............
11111100 30.6 61.3 91.9 122.5
11111101 30.8 61.5 92.3 123.0
11111110 30.9 61.8 92.6 123.5
11111111 31.0 62.0 93.0 124.0
LSB 0.12 0.24 0.36 0.48
LED2 PA (0x24)
BIT 7 6 5 4 3 2 1 0
Field LED2_DRV[7:0]
Reset 0x00
Access Type Write, Read
LED2_DRV
These bits set the nominal drive current of of LED 2. See LED1_DRV for description.
LED3_PA (0x25)
BIT 7 6 5 4 3 2 1 0
Field LED3_DRV[7:0]
Reset 0x00
Access Type Write, Read
LED3_DRV
These bits set the nominal drive current of of LED 2. See LED1_DRV for description.
PILOT_PA
The purpose of PILOT_PA[7:0] is to set the LED power during the PROX mode, as well as in Multi-LED mode. These
bits set the nominal drive current for the pilot mode as shown in the table below.
When LEDx is used, the respective LEDx_RGE[1:0] is used to control the range of the LED driver in conjunction with
PILOT_PA[7:0]. For instance, if LED1 is used in the PILOT mode, then, LED1_RGE[1:0] together with PILOT_PA[7:0]
will be used to set the LED1 current.
LEDX_RGE[1:0] 00 01 10 11
PILOT_PA[7:0] LED Current (mA) LED Current (mA) LED Current (mA) LED Current (mA)
00000000 0.00 0.00 0.00 0.00
00000001 0.12 0.24 0.36 0.48
00000010 0.24 0.48 0.73 0.97
00000011 0.36 0.73 1.09 1.45
............
11111100 30.6 61.3 91.9 122.5
11111101 30.8 61.5 92.3 123.0
11111110 30.9 61.8 92.6 123.5
11111111 31.0 62.0 93.0 124.0
LSB 0.12 0.24 0.36 0.48
LED3_RGE
Range selection of the LED current. Please refer to LED1_PA[7:0] for more details.
LEDX_RGE[1:0]
LED CURRENT(mA)
(X = 1 TO 6)
00 31
01 62
10 93
11 124
LED2_RGE
Range selection of the LED current. Please refer to LED3_RGE[1:0] for more details.
LED1_RGE
Range selection of the LED current. Please refer to LED3_RGE[1:0] for more details.
S1_HRES_DAC1_OVR
S1_HRES_DAC1
If S1_ HI_RES_DAC1_OVR = 1, then bits S1_HRES_DAC1[5:0] set the high-resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging.
If S1_ HI_RES_DAC1_OVR = 0, then bits S1_HRES_DAC1[5:0] have no effect on the PPG1 ADC.
S2 HI RES DAC1 (0x2D)
BIT 7 6 5 4 3 2 1 0
S2_HRES_
Field – S2_HRES_DAC1[5:0]
DAC1_OVR
Reset 0x0 – 0x00
Access Type Write, Read – Write, Read
S2_HRES_DAC1_OVR
S2_HRES_DAC1
If S2_ HI_RES_DAC1_OVR = 1, then bits S2_HRES_DAC1[5:0] set the high resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging
If S2_ HI_RES_DAC1_OVR = 0, then bits S2_HRES_DAC1[5:0] have no effect on the PPG1 ADC
S3 HI RES DAC1 (0x2E)
BIT 7 6 5 4 3 2 1 0
S3_HRES_
Field – S3_HRES_DAC1[5:0]
DAC1_OVR
Reset 0x0 – 0x0
Access Type Write, Read – Write, Read
S2_HRES_DAC1_OVR
S3_HRES_DAC1
If S3_ HI_RES_DAC1_OVR = 1, then bits S3_HRES_DAC1[5:0] set the high resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging.
If S3_ HI_RES_DAC1_OVR = 0, then bits S3_HRES_DAC1[5:0] have no effect on the PPG1 ADC.
S4 HI RES DAC1 (0x2F)
BIT 7 6 5 4 3 2 1 0
S4_HRES_
Field – S4_HRES_DAC1[5:0]
DAC1_OVR
Reset 0b0 – 0x0
Access Type Write, Read – Write, Read
S4_HRES_DAC1_OVR
S4_HRES_DAC1
If S4_ HI_RES_DAC1_OVR = 1, then bits S4_HRES_DAC1[5:0] set the high resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging
If S4_ HI_RES_DAC1_OVR = 0, then bits S4_HRES_DAC1[5:0] have no effect on the PPG1 ADC
S5_HRES_DAC1_OVR
S5_HRES_DAC1
If S5_ HI_RES_DAC1_OVR = 1, then bits S5_HRES_DAC1[5:0] set the high resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging
If S5_ HI_RES_DAC1_OVR = 0, then bits S5_HRES_DAC1[5:0] have no effect on the PPG1 ADC
S6_HRES_DAC1_OVR
S6_HRES_DAC1
If S6_ HI_RES_DAC1_OVR = 1, then bits S6_HRES_DAC1[5:0] set the high resolution DAC code used in PPG1 ADC.
This allows the algorithm to control ADC subranging
If S6_ HI_RES_DAC1_OVR = 0, then bits S6_HRES_DAC1[5:0] have no effect on the PPG1 ADC
TEMP_EN
The bit gets cleared after temperature measurement completes.
TEMP_INT
This register stores the integer temperature data in 2s compliment form. For example, 0x00 = 0°C (typ), 0x7F = 127°C
(typ) and 0x80 = -128°C (typ)
Note: TEMP_INT and TEMP_FRAC registers should be read using the Serial Interface in burst mode to ensure that they
belong to the same sample.
DIE TEMPERATURE FRACTION (0X42)
BIT 7 6 5 4 3 2 1 0
Field – – – – TEMP_FRAC[3:0]
Reset – – – – 0x0
Access Type – – – – Read Only
TEMP_FRAC
This register store the fractional temperature data in increments of 0.0625°C. 0x1 = 0.0625°C and 0xF = 0.9375°C.
Note: TINT and TFRAC registers should be read using the Serial Interface in burst mode to ensure that they belong to
the same sample.
CAL_DAC_Complete
High after DAC Calibration completes. It gets reset when calibration is restarted using the START_CAL bit
CAL_DAC2_OOR
High if any DAC2 Calibration Coefficient is out of range (OOR)
CAL_DAC1_OOR
High if any DAC1 Calibration Coefficient is out of range (OOR)
START_CAL
Start DAC1 and DAC2 calibration. This bit clears after calibration.
SHA COMMAND (0XF0)
BIT 7 6 5 4 3 2 1 0
Field SHA_CMD[7:0]
Reset 0x0
Access Type Write, Read
SHA_CMD
SHA_EN
Authentication is performed using a FIPS 180-3 compliant SHA-256 one-way hash algorithm on a 512-bit message block.
The message block consists of a 160-bit secret, a 160-bit challenge, and 192 bits of constant data. Optionally, the 64-bit
ROM ID replaces 64 of the 192 bits of constant data used in the hash operation. 16 bits out of the 160-bit secret and 16
bits of ROM ID are programmable - 8 bits each in metal and 8 bits each in OTP bits.
The host and the MAXM86161 both calculate the result based on a mutually known secret. The result of the hash opera-
tion is known as the message authentication code (MAC) or message digest. The MAC is returned by the MAXM86161
for comparison with the host’s MAC. Note that the secret is never transmitted on the bus; thus, it cannot be captured by
observing bus traffic. Each authentication attempt is initiated by the host system by writing a 160-bit random challenge
into the SHA memory address space 0x00h to 0x09h. The host then issues the compute MAC or compute MAC with
ROM ID command. The MAC is computed per FIPS 180-3, and stored in address space 0x00h to 0x0Fh overwriting the
challenge value.
Note that the results of the authentication attempt are determined by host verification. Operation of the MAXM86161 is
not affected by authentication success or failure.
Sequence of operation is as follows:
1) Enable SHA_DONE Interrupt
2) Enable SHA_EN bit
3) Write 160 bit random challenge value to RAM using registers MEM_IDX and MEM_DATA.
4) Write command, with ROM ID (0x35) or without ROM ID (0x36) to SHA_CMD register.
5) Write 1 to SHA_START and 1 to SHA_EN bit.
6) Wait for SHA_DONE interrupt.
7) Read 256 MAC value from RAM using registers MEM_IDX and MEM_DATA.
8) Compare MAC from MAXM86161 wth Host’s precalculated MAC.
9) Check PASS or FAIL
10) Disable SHA_EN bit (Write 0 to SHA_EN bit).
SHA_START
The bit gets cleared after authentication completes. The valid command (0x35 or 0x36) should be written to the SHA_
CMD register and challenge value should be written to the RAM by Host before writing 1 to this bit.
MEMORY CONTROL (0XF2)
BIT 7 6 5 4 3 2 1 0
MEM_WR_
Field – – – – – – BANK_SEL
EN
Reset – – – – – – 0x0 0x0
Access Type – – – – – – Write, Read Write, Read
MEM_WR_EN
Enable write access to Memory via.
BANK_SEL
Selects the memory bank for reading and writing.
Burst reading or writing the memory past 0xFF automatically increments BANK_SEL to 1.
MEM_IDX
Index to Memory for reading and writing. The Memory is 384 bytes, and is divided into two banks: Bank 0 from 0x00 to
0xFF and Bank 1 from 0x100 to 0x17F. The bank is selected by the BANK_SEL register bit. MEM_IDX is the starting
address for burst writing to or reading from memory. Burst accessing the memory past 0xFF accesses Bank 1. The
memory address saturates at 0x17F.
MEMORY DATA (0XF4)
BIT 7 6 5 4 3 2 1 0
Field MEM_DATA[7:0]
Reset 0x0
Access Type Write, Read, Dual
MEM_DATA
Data to be written or Data read from Memory
Reading this register does not automatically increment the register address. So burst reading this register reads the
same register over and over, but the address to the Memory autoincrements until BANK_SEL becomes 1 and MEM_IDX
becomes 0x7F.
PART ID (0XFF)
BIT 7 6 5 4 3 2 1 0
Field PART_ID[7:0]
Reset 0x36
Access Type Read Only
PART_ID
This register stores the Part identifier for the chip.
0x36
Ordering Information
PART NUMBER TEMP RANGE PIN-PACKAGE
MAXM86161EFD+ -40°C to +85°C 4.3mm x 2.9mm x 1.4mm 14-Pin OLGA
MAXM86161EFD+T -40°C to +85°C 4.3mm x 2.9mm x 1.4mm 14-Pin OLGA
+Denotes a lead(Pb)-free/RoHS-compliant package.
T = Tape and reel.
Revision History
REVISION REVISION PAGES
DESCRIPTION
NUMBER DATE CHANGED
0 3/19 Initial release —
For pricing, delivery, and ordering information, please visit Maxim Integrated’s online storefront at https://www.maximintegrated.com/en/storefront/storefront.html.
Maxim Integrated cannot assume responsibility for use of any circuitry other than circuitry entirely embodied in a Maxim Integrated product. No circuit patent licenses
are implied. Maxim Integrated reserves the right to change the circuitry and specifications without notice at any time. The parametric values (min and max limits)
shown in the Electrical Characteristics table are guaranteed. Other parametric values quoted in this data sheet are provided for guidance.
Maxim Integrated and the Maxim Integrated logo are trademarks of Maxim Integrated Products, Inc. © 2019 Maxim Integrated Products, Inc. │ 66
Mouser Electronics
Authorized Distributor
Maxim Integrated:
MAXM86161EFD+