I'm using nrf52832 with st25r3911b to let device read & write NFC card.
I modified nRF5SDK160098a08e2\examples\ble_central\ble_app_uart_c\pca10040\s132\ses to do this.
To communicate with st25r3911, there are spi & a interrupt pin.
whether I set GPIOTE_CONFIG_IN_SENSE_LOTOHI(false); or GPIOTE_CONFIG_IN_SENSE_LOTOHI(true);
they are the same problem.
Strangely , it is not that there is no interrupt signal at the beginning.
After the problem occurs,there are still a few interruptions.
void in_pin_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) {
if ((pin == NFC_INT_Pin)&&(nfc_int)) {
void (*pfunction)(void);
if ((pfunction = (void (*)(void))callbackArray[function_num]) != NULL)
pfunction();
}
}
void nfc_gpiote_lo(void) {
ret_code_t err_code;
if (!nrf_drv_gpiote_is_init()) {
err_code = nrf_drv_gpiote_init();
APP_ERROR_CHECK(err_code);
}
nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_LOTOHI(false); //no accuracy
config.pull = NRF_GPIO_PIN_NOPULL;
config.skip_gpio_setup = false;
err_code = nrf_drv_gpiote_in_init(NFC_INT_Pin, &config, in_pin_handler);
nrf_drv_gpiote_in_event_enable(NFC_INT_Pin, true);
nfc_int=true;
APP_ERROR_CHECK(err_code);
}
//if triggered,in_pin_handler()'s pfunction() will do st25r3911Isr();
void st25r3911Isr( void )
{
isr_times++;
st25r3911CheckForReceivedInterrupts();
if (NULL != st25r3911interrupt.callback)
st25r3911interrupt.callback();
}
the problem will occur after doing rfalInitialize(),but isr_times equals to previous action rfalWakeUpModeStop() or equals to 0.
If the problem occurs, I cannot Inventory ISO15693 card at all.
I checked nfc interrupt pin with Oscilloscope.it works fine.
I also try not to scan, but not help this problem.
the problem is,why nrf52832 no normal(enough) trigger after running a while?
how to fix it?
[0m<info> app: NFC Wake up! isr = 1[0m.........................................................card near
[0m<info> app: rfalWakeUpModeStop()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalInitialize()=0! isr = 6,scan_times=2[0m
[0m<info> app: iso15693Initialize()=0! isr = 7,scan_times=2[0m
[0m<info> app: iso15693Inventory()=0! isr = 40,scan_times=2[0m
[0m<info> app: iso15693WriteSingleBlock()=4[0m............................................detect ISO15693 card
[0m<info> app: iso15693WriteSingleBlock()=4[0m
[0m<info> app: iso15693WriteSingleBlock()=4[0m
[0m<info> app: iso15693ReadMultipleBlocks()=4[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 54,scan_times=2[0m
[0m<info> app: rfalDeinitialize()=0! isr = 54,scan_times=2[0m
[0m<info> app: rfalInitialize()=0! isr = 5,scan_times=1[0m
[0m<info> app: iso15693Initialize()=0! isr = 6,scan_times=1[0m
[0m<info> app: iso15693Inventory()=16! isr = 38,scan_times=1[0m.................no ISO15693 card detect
[0m<info> app: iso15693Deinitialize()=0! isr = 38,scan_times=1[0m
[0m<info> app: rfalDeinitialize()=0! isr = 38,scan_times=1[0m
[0m<info> app: rfalInitialize()=0! isr = 5,scan_times=0[0m
[0m<info> app: iso15693Initialize()=0! isr = 6,scan_times=0[0m
[0m<info> app: iso15693Inventory()=16! isr = 38,scan_times=0[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 38,scan_times=0[0m
[0m<info> app: rfalDeinitialize()=0! isr = 38,scan_times=0[0m
[0m<info> app: rfalWakeUpModeStart()=0! isr = 0,scan_times=0[0m
...after running awhile
[0m<info> app: NFC Wake up! isr = 1[0m..........................................................card near
[0m<info> app: rfalWakeUpModeStop()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalInitialize()=0! isr = 6,scan_times=2[0m
[0m<info> app: iso15693Initialize()=0! isr = 7,scan_times=2[0m
[0m<info> app: iso15693Inventory()=0! isr = 40,scan_times=2[0m
[0m<info> app: iso15693WriteSingleBlock()=4[0m............................................detect ISO15693 card
[0m<info> app: iso15693WriteSingleBlock()=4[0m
[0m<info> app: iso15693WriteSingleBlock()=4[0m
[0m<info> app: iso15693ReadMultipleBlocks()=0[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 55,scan_times=2[0m
[0m<info> app: rfalDeinitialize()=0! isr = 55,scan_times=2[0m
[0m<info> app: rfalInitialize()=0! isr = 0,scan_times=1[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Initialize()=0! isr = 1,scan_times=1[0m
[0m<info> app: iso15693Inventory()=16! isr = 33,scan_times=1[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 33,scan_times=1[0m
[0m<info> app: rfalDeinitialize()=0! isr = 33,scan_times=1[0m
[0m<info> app: rfalInitialize()=0! isr = 0,scan_times=0[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Initialize()=0! isr = 0,scan_times=0[0m
[0m<info> app: rfalInitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Inventory()=16! isr = 1,scan_times=0[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalDeinitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalWakeUpModeStart()=0! isr = 0,scan_times=0[0m
[0m<info> app: NFC Wake up! isr = 1[0m..........................................................card near
[0m<info> app: rfalWakeUpModeStop()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalInitialize()=0! isr = 1,scan_times=2[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Initialize()=0! isr = 1,scan_times=2[0m
[0m<info> app: rfalInitialize()=0! isr = 2,scan_times=2[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: rfalInitialize()=0! isr = 2,scan_times=2[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Inventory()=16! isr = 2,scan_times=2[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 2,scan_times=2[0m
[0m<info> app: rfalDeinitialize()=0! isr = 2,scan_times=2[0m
[0m<info> app: rfalInitialize()=0! isr = 0,scan_times=1[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Initialize()=0! isr = 0,scan_times=1[0m
[0m<info> app: rfalInitialize()=0! isr = 1,scan_times=1[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Inventory()=16! isr = 1,scan_times=1[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 1,scan_times=1[0m
[0m<info> app: rfalDeinitialize()=0! isr = 1,scan_times=1[0m
[0m<info> app: rfalInitialize()=0! isr = 0,scan_times=0[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Initialize()=0! isr = 0,scan_times=0[0m
[0m<info> app: rfalInitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: rfalInitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: INT_ERROR: false[0m..............................................................interrupt no trigger
[0m<info> app: iso15693Inventory()=16! isr = 1,scan_times=0[0m
[0m<info> app: iso15693Deinitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalDeinitialize()=0! isr = 1,scan_times=0[0m
[0m<info> app: rfalWakeUpModeStart()=0! isr = 0,scan_times=0