2024-12-18 12:09 PM
I've been seeing some unexpected failure modes while reading T2Ts with an ST25R3916. Every ~300ms, the device sends a wake request, and if a tag is detected, goes ahead with the reading process. If a tag is detected and an error occurs anywhere in the read process, from anticollision to reading block by block, the read process will reset up to 5 times. Every time a tag is detected, the retries reset. For example, if a tag is detected, anticollision complete, and read up to block 20 before a CRC error is triggered, it will then send out five more tag detects. If there's a response to the 4th tag detect, it will begin the process again.
Normally, the device rapidly reads a tag quickly and smoothly. But I've been seeing the device occasionally hang while sitting on top of a tag (well within range) for 10 seconds or more without reading. When I look at the logs, it's a series of hard framing errors (typically), and sometimes CRC or parity errors, and the 5 retries almost never trigger a tag detection.
This leads me to two questions:
1) Is there a way to determine what's causing these errors and mitigate it? The spec does not go into any details about the interrupt error flags.
2) Is there a reason that the subsequent wake request retries rarely get a response? It's about 30ms in between retries. I've tried it with and without toggling Tx/Rx on and off between retries, and even with a Field On command. While debugging I've put a 10ms delay after the re-enablement, so it's definitely not violating the guard time rule.