DMP FIFO buffer empty ICM20948

By rbrookshergmailcom , 26 October 2020

Hello,

I am attempting to use the on-board DMP on the ICM20948 to report rotation vector information. I can receive raw data from the sensor directly, receive raw data through the FIFO buffer, calibrate, and self test the device. However, when attempting to use the DMP to send 9-axis quaternion or calibrated gyroscope data to the FIFO, the FIFO buffer remains empty. I am able to read and write to memory, and have double checked that the DMP firmware is successfully loaded to the device. The document "Application Note Programming Sequence for ICM-20648 DMP Hardware Function" mentions a 16-bit firmware start value written to PRGM_STRT_ADDRH/PRGM_STRT_ADDRL to start up the DMP, however I am unable to find any documentation on this value. Is it necessary, and if so, what is it?

I built my codebase out of the embedded motion driver for the icm20*48. When attempting to enable the DMP's calibrated gyroscope, I set the control registers DATA_OUT_CTL1 and DATA_INTR_CTL to 0x4048, DATA_OUT_CTL2 to 0x2000, MOTION_EVENT_CTL to 0x0100, and DATA_RDY_STATUS to 0x0001. I set the value in the ODR_GYRO and ODR_GYRO_CALIBR registers to 0 for a 225 Hz rate. My other non-DMP configuration register settings are listed below.

app: -----Bank 0-----
app: USER_CTRL is 0xD0, should be 0xD0
app: LP_CONFIG is 0x00
app: PWR_MGMT_1 is 0x01, should be 0x01
app: PWR_MGMT_2 is 0x78, should be 0x78
app: FIFO_EN_1 is 0x00, should be 0x00
app: FIFO_EN_2 is 0x00, should be 0x00
app: fifo_rst is 0x1E, should be 0x00 or 0x1E
app: fifo_mode is 0x00, should be 0x00 or 0x1F
app: fifo_counth is 0x00
app: fifo_countl is 0x00
app: fifo_cfg is 0x00
app: -----Bank 2-----
app: gyro_smplrt_div is 0x04
app: gyro_config_1 is 0x00
app: gyro_config_2 is 0x00
app: accel_smplrt_div_1 is 0x00
app: accel_smplrt_div_2 is 0x0A
app: accel_config is 0x00
app: accel_config_2 is 0x00
app: -----Bank 3-----
app: i2c_mst_odr_config is 0x04
app: i2c_mst_ctrl is 0x10
app: i2c_mst_delay_ctrl is 0x80

Despite attempting many variations of these initialization steps, my FIFO buffer remains empty. Is there something I am missing?

I greatly appreciate any assistance in this matter.

phpbb Topic ID
38700