NFC T4T field on event missing after first NDEF read

HI,

I am developing an NFC application using the nRF54L15 with SDK version 3.2.1, and I am using NDEF for data exchange. However, I have encountered an issue: after the first successful read operation, the callback only triggers NFC_T4T_EVENT_FIELD_OFF, and NFC_T4T_EVENT_FIELD_ON will not be triggered again unless I perform a hardware reset.
I have found two posts with similar problems, but one says the root cause is in nrfx_nfct.c, and the other says it is in platform.c.
what the difference is between these two files?

devzone.nordicsemi.com/.../nrf54l15-nfc-t4t-library-permanently-deadlocks-on-android-field-tears

https://devzone.nordicsemi.com/f/nordic-q-a/127970/nrf54l15-ns-nfc-t4t-peripheral-stalls-after-apdu-transaction-only-field_off-events-received-never-field_on

One solution is to add the following code in nfc_platform_event_handler when handling the NRFX_NFCT_EVT_FIELD_LOST event:
/* Workaround: Ensure the FRAMEDELAYMAX register is set to default value when
  • field is lost. This avoids violating protocol timing, which can lead readers
  • to reject the NFC tag's response.
    */
    if (!(NRF_ERRATA_DYNAMIC_CHECK(52, 218) && NRF_ERRATA_DYNAMIC_CHECK(53, 71))) {
    nrf_nfct_frame_delay_max_set(NRF_NFCT, NRF_NFCT_FAME_DELAY_MAX_DEFAULT);
    }
The other solution is to modify the condition in nfct_field_event_handler when handling NRFX_NFC_FIELD_STATE_OFF:
Change the line:
if (NRF_ERRATA_DYNAMIC_CHECK(52, 218) || NRF_ERRATA_DYNAMIC_CHECK(53, 71))
To:
if (1)
What is the difference between these two fixes?
I have tested both methods, and both resolve the problem successfully.

Thanks!

Related