NRF_ERROR_NO_MEM in nrf_twi_sensor_write

I'm getting an error NRF_ERROR_NO_MEM when trying to initialize the LPS22HB, and the RTT log shows:

<info> twi_sensor: Write register: 0x0B

<info> twi_sensor: Sensor addr: 0x5C Write length 2

<warning> twi_sensor: Memory not allocated. Sensor addr: 0x5C

<error> app: ERROR 4 [NRF_ERROR_NO_MEM] at :0

PC at: 0x00000000

<error> app: End of error report

The line being triggered is in nrf_twi_sensor.c, line 151, which is nrf_twi_sensor_write().

I've initialized the sensor like this:

NRF_TWI_MNGR_DEF(m_nrf_twi_mngr, MAX_PENDING_TRANSACTIONS, TWI_INSTANCE_ID);
NRF_TWI_SENSOR_DEF(m_twi_sensor, &m_nrf_twi_mngr, 128);
LPS22HB_INSTANCE_DEF(m_lps22b, &m_twi_sensor, TWI_ADDRESS);

int main(void)
{
    //...other code removed
    lps22hb_init(&m_lps22b);
    lps22hb_data_read(&m_lps22b,&barometer_callback,&baro_data,1);
    //...other code removed   
}

If I don't handle the error with APP_ERROR_CHECK() the rest of the program runs normally, except for not being able to read anything off the LPS22 sensor. Using nrf SDK version 17.0.2.

Parents Reply
  • So you are actually using an nRF52810. In that case, you should at least remove the two instances (!!) (CFLAGS and ASMFLAGS) in your makefile called DDEVELOP_IN_NRF52832)

    I don't know if that solves it, but did you try to increase the MAX_PENDING_TRANSACTIONS from 5 to at least 32 in your main.c file?

    Edvin said:

    So where does 5 come from? Is it your MAX_PENDING_TRANSACTIONS, or did you change:

    This was at least an issue, since the TWI is set up with this buffer size, and the init function required the buffer size to be larger than or equal to LPS22HB_MIN_QUEUE_SIZE, which you set to 32.

Children
Related