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