ICM-456xx AUX1 Port Read

By admin , 1 February 2026
Description

Purpose and Context

This document shows how to read from the auxiliary path AUX1 with ICM-456xx sensors. This procedure has been tested with ICM-45686-S, and should also work for ICM-45605(-S) and ICM-45686, and other ICM-456xx variants.

Hardware Setup

The MCU is connected to the sensor using 4-wire SPI communication. The code below is written in Micropython v1.25.0.

Initialize the SPI Bus and Sensor

We configure our MCU's 4-wire SPI bus as follows:

SPI_BUS_NUMBER = 0 spi = SPI(SPI_BUS_NUMBER, baudrate=800000, polarity=1, phase=1, bits=8,      sck=Pin(18, mode=Pin.OUT),      mosi=Pin(19, mode=Pin.OUT),      miso=Pin(20, mode=Pin.IN)      ) # CPOL=1, CPHA=1 --> SPI mode 3 cs = Pin(24, mode=Pin.OUT, value=1) cs_aux1 = Pin(1, mode=Pin.OUT, value=1) icm456xx_UI = ICM456xx(io_protocol=SPI_SLAVE(spi, cs, 0x72, 238, f"ICM-456xx_UI@SPI{SPI_BUS_NUMBER}", csv_logfile, spi_debug=True)) # main SPI port icm456xx_AUX1 = ICM456xx(io_protocol=SPI_SLAVE(spi, cs_aux1, 0x72, 238, f"ICM-456xx_AUX1@SPI{SPI_BUS_NUMBER}", csv_logfile, spi_debug=True)) # auxiliary "AUX1" SPI port icm456xx_UI.reset() icm456xx_UI.ireg_write(IPREG_TOP1+0x67, 0x02) # set big endian format to match datasheet - see register SREG_CTRL

Enable ADCs and AUX1 Path

Next, we enable the ADCs

icm456xx_UI.write(0x10, 0b1111) # PWR_MGMT0 - primary path...enable accel+gyro ADCs icm456xx_AUX1.write(0x54, 0b11) # PWR_MGMT_AUX1 - auxiliary path...enable AUX1 registers sleep(0.05) # allow time for MEMS stabilization

Read Sensor Output Data

Finally we read from the relevant registers.

UI_sample = icm456xx_UI.sample() # read output data from reg address 0x00~0x0D AUX1_sample = icm456xx_AUX1.AUX1_sample() # read output data from AUX_DATA reg address 0x44~0x51

Please note that the AUX1 port can only read from the AUX1 registers. You will read zeros if you read the primary data output registers (address 0x00) from the AUX1 port:

icm456xx_AUX1.sample() # reading address 0x00~0x0D from AUX port will return zeros

Please see the ICM-456xx product family appnote for more information on the AUX1 path.

Logfile with SPI Transactions and Comments

SPI,W,0x7F,0x02,ICM-456xx_UI@SPI0 SPI,W,0x7C,0xA2,0x67,0x02,ICM-456xx_UI@SPI0 SPI,W,0x10,0x0F,ICM-456xx_UI@SPI0 SPI,W,0x54,0x03,ICM-456xx_AUX1@SPI0 SPI,R,0x00,0x00,0x6E,0xFF,0xCD,0x04,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0xFF,0x58,ICM-456xx_UI@SPI0 [Comment],"{'temperature': [-168], 'accel': [110, -51, 1028], 'gyro': [2, 0, 0]}" SPI,R,0x44,0x00,0x6E,0xFF,0xD0,0x04,0x07,0x00,0x07,0x00,0x00,0xFF,0xFD,0xFF,0x58,ICM-456xx_AUX1@SPI0 [Comment],"{'temperature': [-168], 'accel': [110, -48, 1031], 'gyro': [7, 0, -3]}" SPI,R,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,ICM-456xx_AUX1@SPI0 [Comment],"{'temperature': [0], 'accel': [0, 0, 0], 'gyro': [0, 0, 0]}"

Revision History

  • 2026-??-?? - initial release