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+