Hi,
I'm trying to connect an NRF52840-DK to a MAX30101 Wing board via I2C/TWI. I've set up the TWI Manager to send a message asking the MAX board for its part ID.
static uint8_t buffer[BUFFER_SIZE]; ret_code_t read_part_id(nrf_twi_mngr_t const * twi_mngr){ // Read part ID // Read register 0xFF ret_code_t error; //static uint8_t buffer[BUFFER_SIZE]; static nrf_twi_mngr_transfer_t const transfers[] = { NRF_TWI_MNGR_READ(MAX_ADDR_READ, &buffer[0], 1, 0) }; static nrf_twi_mngr_transaction_t transaction = { .callback = validate_part_id, .p_user_data = &buffer[0], .p_transfers = transfers, .number_of_transfers = sizeof(transfers) / sizeof(transfers[0]), .p_required_twi_cfg = NULL }; error = nrf_twi_mngr_schedule(twi_mngr, &transaction); printf("Transaction queued\n"); return error; }; static void validate_part_id(ret_code_t result, void * p_user_data){ if (result != NRF_SUCCESS){ printf("Transaction failed\n"); printf("0x%p\n", p_user_data); uint8_t temp = *(uint8_t*)p_user_data; printf("%d\n", temp); printf("read_max10_registers_cb - error: %d\n", (int)result); } else { printf("Transaction succeded\n"); } };
This is the output of the callback function:
Transaction failed 0x20001540 0 read_max10_registers_cb - error: 3
I've had a look and error code 3 is a generic internal error. Does anyone know how to fix this?
PS, I'm developing Segger EM on a Ubuntu Linux computer with SDK version 17.0.2