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

nrf52832 gpiote no trigger after running awhile

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

Parents Reply Children
No Data
Related