Hello everyone. I'm creating a setup function to configure LSM9DS1 accelerometer and gyroscope by writing to the corresponding registers as shown below
uint8_t config_packet[] = {CTRL_REG1_G, 0b00101000, // Setting ODR = 14.9 Hz | Full-scale = 500 dps | BW = default CTRL_REG9, 0b00000010, // FIFO enable without threshold limit FIFO_CTRL, 0b00100000}; // FIFO mode enable nrfx_twi_xfer_desc_t lsm9ds_config_desc = NRFX_TWI_XFER_DESC_TX(LSM9DS1_AG_ADDR, NULL, 2); //Create descriptor nrfx_err_t err_code; for(int i = 0; i < 5; i += 2){ lsm9ds_config_desc.p_primary_buf = &config_packet[i]; //Select register to configure err_code = nrfx_twi_xfer(&m_twi, &lsm9ds_config_desc, 0); //Send configurations nrf_delay_ms(1); // while(err_code != NRFX_SUCCESS); }
Although this code works, I was wondering if there is a better way to do this by using the TXTX function or something similar so I can get rid of the for loop and the delay. I know that if the configuration registers were consecutive, I would only need to specify the first one sin this sensor increments the register address after transmission but this is not the case.
Either way, I want to get rid of the delay by all means. I thought about getting idle in a while loop when error code in not success since error code was error busy but it didn't work. I'm not quite sure what indicator I need to consider in the event handler, so far it only prints the error returned.
Thank you in advance,
Adiran G