This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

TWI: nrf_drv_twi_rx function retun error 3

Hi I'm interfacing MMA8452Q with nrf51822 using TWI all read-write function working fine but when I try to read acceleration data nrf_drv_twi_rx & nrf_drv_twi_tx function return error code 3. here is my code flow.

  1. Read WHO_AM_I register (OK)//Value Read 0x2A
  2. Set CTRL_REG1 register to standby mode(OK) //Write value 0x00
  3. Set M_CTRL_REG1 register(OK)//Write value 0x1F
  4. Set M_CTRL_REG2 register(OK)//Write value 0x20
  5. Set XYZ_DATA_CFG register(OK)//Write value 0x01
  6. Set CTRL_REG1 register to normal mode(OK) //Write value 0x01
  7. But after this facing error when I again try to read read acc data

register read code:

void FXOS8700CQ_I2C_registers_read(uint8_t slave_addr, uint8_t reg_addr, uint8_t pdata[], uint32_t bytes)

{   
        ret_code_t ret_code;
        ret_code = nrf_drv_twi_tx(&p_twi, slave_addr, &reg_addr, bytes, true);
    		#ifdef fxos_debug
    				SEGGER_RTT_printf(0, "\nRead register's tx error code:%x", ret_code);
    		#endif
    		APP_ERROR_CHECK (ret_code);
        ret_code = nrf_drv_twi_rx(&p_twi, slave_addr, pdata, bytes);
    		#ifdef fxos_debug
    				SEGGER_RTT_printf(0, "\nRead register's rx error code:%x", ret_code);
    				SEGGER_RTT_printf(0, "\nRead register's rx byte:%d", bytes);
    		#endif
    		APP_ERROR_CHECK (ret_code);
}

Register address:

#define FXOS8700CQ_OUT_X_MSB       0x01    
#define FXOS8700CQ_OUT_X_LSB        0x02
#define FXOS8700CQ_OUT_Y_MSB       0x03
#define FXOS8700CQ_OUT_Y_LSB        0x04
#define FXOS8700CQ_OUT_Z_MSB       0x05
#define FXOS8700CQ_OUT_Z_LSB        0x06
#define FXOS8700CQ_WHO_AM_I         0x0D   
#define FXOS8700CQ_XYZ_DATA_CFG  0x0E
#define FXOS8700CQ_CTRL_REG1        0x2A
#define FXOS8700CQ_M_CTRL_REG1    0x5B
#define FXOS8700CQ_M_CTRL_REG2    0x5C

MMA8452 Datasheet

Note: Same MMA8452Q sensor working with other micro-controller. There is no issue with hardware.

Related