Hi,
I am using a custom board with the nrf52810 and trying to interface with the SHTW2 sensor. The sensor has an I2C interface and hence I use the TWI peripheral for this. However, the transfer of data does not take place. Below is my read function:
void SHTW2_read(){ uint8_t m_sample[2]; uint8_t writeMode[] = {0x70}; uint8_t readMode[] = {0x71}; uint8_t reg[2] = {0x78, 0x66}; ret_code_t err_code; //while (m_xfer_done == false); m_xfer_done = false; err_code = nrf_drv_twi_tx(&m_twi, SHTW2_ADDR, writeMode, sizeof(writeMode), true); APP_ERROR_CHECK(err_code); while (m_xfer_done == false); nrf_delay_ms(5); m_xfer_done = false; err_code = nrf_drv_twi_tx(&m_twi, SHTW2_ADDR, reg, sizeof(reg), true); APP_ERROR_CHECK(err_code); while (m_xfer_done == false); nrf_delay_ms(5); m_xfer_done = false; err_code = nrf_drv_twi_tx(&m_twi, SHTW2_ADDR, readMode, sizeof(readMode), true); APP_ERROR_CHECK(err_code); while (m_xfer_done == false); m_xfer_done = false; err_code = nrf_drv_twi_rx(&m_twi, SHTW2_ADDR, m_sample, sizeof(m_sample)); APP_ERROR_CHECK(err_code); while (m_xfer_done == false); temperature = m_sample[0] << 8 | m_sample[1]; }
I am using the TWI sensor example as base for this, but the code gets stuck at the while loop waiting for the handler to be called where the flag m_xfer_done is set. The handler never gets called. Can anyone point me as to where I am going wrong? May be my fundamental understanding of TWI is wrong. Thanks for the help in advance.