Hello,
We're working implementing a custom board using he nRF54L15 and looking to use the NFC functionality. We have run into an issue that occurs when we try to read the NFC tag with Android smartphones that does not seem to be occurring with iOS devices from the devices we're tried so far.
The most obvious symptom of the problem is that the power usage of the device increases significantly after the NFC event occurs. Typically, our device draws around 10-20uA of current when in an idle mode at our input voltage, and after the NFC event the idle current draw increases to 600-700uA. Various other events in the system such as more NFC reads, BLE advertising and connection, I2C bus activity, do not restore this power state back to normal; it remains elevated until the device is reset.
Additionally, we have found that when the device is in this state with the elevated power draw, other NFC behavior can break. We found that running nfc_t2t_emulation_stop and emulation_start caused the tag to no longer be readable. Essentially, we could stop and start as much as we wanted and then still read the tag successfully the first time, but once that first read occurred and the power increase began, a subsequent stop/start would cause the device to not longer respond to an NFC field. We later found that calling nfc_t2t_done and reinitializing the library after every read resolves this issue, but it does not resolve the power issue.
As mentioned, both of these symptoms seem to be happening only with Android devices. Our application makes no distinction between the type of device reading the tag, so it seems like some internal state is running into an issue that we are not able to see at the nfc_t2t layer. We confirmed that we see typically field enter, read, and exit events for each tag read attempt, even when the issue occurs. As far as the application can tell, reads that do and do not cause the issue do not seem distinguishable.
One other oddity is that the issue does not seem to occur when serial drivers are enabled. We use UART output for logging on debug builds, and in this case the issue does not occur. The power issue may not be as distinguishable due to higher idle draw with UART enabled, but the start/stop failure issue is not occurring, and it is unclear how that would be impacted by UART.
We're wondering if you would have any tips for us on what could be causing a difference between Android and iOS devices reading NFC, and what issue the Android devices could be causing under the hood. We've seen some other DevZone threads about NFC issues with android devices, but none that are recent enough to be on the nRF54 or a similar NCS version. We have tried to look a bit at the NFC drivers and libraries to see where things might be going wrong, but as some are distributed as pre-compiled binaries, we have not been able to understand much of the issue.
Edit: We are seeing this issue when using NCS SDK version 3.0.1. I believe we were seeing the same or a similar issue previously on version 2.8.0 also.
Thanks,
Ben
