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