Hello,
I am currently working on a custom nRF52840 board. I have to make the nRF52 communicate with a chip using TWI, so I started from SDK 15.2.0 TWI Scanner example.
The pinout is the following:
- SCL: P1.09
- SDA: P0.12
To make the TWI driver work with PORT1 gpios I used the macro NRF_GPIO_PIN_MAP:
/**
* @brief TWI initialization.
*/
void twi_init (void)
{
ret_code_t err_code;
const nrf_drv_twi_config_t twi_config = {
.scl = NRF_GPIO_PIN_MAP(1, 9),
.sda = NRF_GPIO_PIN_MAP(0, 12),
.frequency = NRF_DRV_TWI_FREQ_400K,
.interrupt_priority = APP_IRQ_PRIORITY_HIGH,
.clear_bus_init = false
};
err_code = nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL);
APP_ERROR_CHECK(err_code);
nrf_drv_twi_enable(&m_twi);
}
But when I run the application, the execution is stuck in this loop of nrfx_twim.c starting from line 441:
while (!nrf_twim_event_check(p_twim, evt_to_wait))
{
if (nrf_twim_event_check(p_twim, NRF_TWIM_EVENT_ERROR))
{
NRFX_LOG_DEBUG("TWIM: Event: %s.", EVT_TO_STR_TWIM(NRF_TWIM_EVENT_ERROR));
nrf_twim_event_clear(p_twim, NRF_TWIM_EVENT_ERROR);
nrf_twim_task_trigger(p_twim, NRF_TWIM_TASK_RESUME);
nrf_twim_task_trigger(p_twim, NRF_TWIM_TASK_STOP);
evt_to_wait = NRF_TWIM_EVENT_STOPPED;
}
}
Can you please tell me what I am doing wrong and what to do to make TWI work with PORT1 gpios ?
Thank you very much !
Bilal
