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
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!