2024-12-06 07:16 AM
Hello everyone,
I am currently working with the ST25R3916B chip to use it as a reader for an ST25DV64KC tag. My objective is to interface with an NFC-V tag following the ISO 15693 standard.
To achieve this, I am developing custom code by referring to the examples provided by ST and consulting the datasheet. While someone suggested using the ST examples directly, I need a custom solution for my application.
So far, I have implemented all the initialization functions by closely following the "NFC08A1_PollingTagDetect" example, specifically the demoIni( ) function. Now, I am working on the application side and have been analyzing the demoCycle( ) function in detail, but I am encountering some challenges.
As my focus is on NFC-V tags, I have dived deeper into functions like demoNfcv. While I understand its overall structure and purpose, I feel like I am missing some key details. For example, I am unclear about what happens between the initialization phase and the execution of demoNfcv (where the RF message frame is constructed for transmission).
Here are my main questions:
After initializing the chip and enabling the field using the direct command 0xC8 (NFC initial field ON), what should I expect when an NFC-V tag is brought near the reader?
How can I confirm that the tag has been detected and the system is ready to send an RF message? Should I monitor specific interrupts or follow a particular procedure? Is enabling the field sufficient for tag detection?
Once the field is enabled and a tag is detected, can I immediately send the required commands (e.g., read/write), or are there additional registers or commands that must be configured/sent to ensure the reader is ready to transmit via the RF antenna?
In the demoNfcv function, the 0x25 command (Select command) is sent, which includes the tag's UID. Could you explain its purpose and whether it is mandatory for communication?
Are there any detailed guidelines or application notes that go beyond the provided examples to explain the polling process and sending commands to a tag using the ST25R3916B?
Alternatively, could you help point out any gaps in my current understanding or implementation and guide me toward successfully sending RF commands to a tag?
I apologize for the lengthy questions, but I am trying to fully grasp how to use the ST25R3916B. I find it significantly more complex compared to the ST25DV64KC, which was much simpler and more intuitive as a tag.
Any advice, guidance, or resources would be highly appreciated!
2024-12-09 01:40 AM
Hi,
ad 1)
again: ST25R3916B is a frontend chip. It will not send autonomously a single frame. All frames (e.g. NFCV Inventory command) need to be sent by the MCU. For NFC-V the MCU needs to send an INVENTORY command to see if NFC-V tags are around.
ad 2)
standards mandate to wait ~5ms to give the tag sufficient time to power-up.
ad 3)
NFCV Select command is optional. After having received answer to INVENTORY MCU could proceed immediately to read/write in one of the addressing modes (addressed with UID, selected, broadcasted). You will need to study the relevant protocols if you want to implement on your own.
ad 4)
I am not aware of any complete documentation from ST guiding one through all the layers. You can get a good book on NFC, study the various standards, etc.
Why do you plan to build your own software? Our RFAL for ST25R chips is highly customizable...
Ulysses
2024-12-10 12:58 AM
Hi Ulysses,
Thank you for your response...
Thank you again for your patience and quick responses!
Best regards,
Stefano
2024-12-10 04:07 AM
Hi Stefano,
ST25 will not notify the MCU when a tag is present (the only exception may happen when using ST25R wake-up feature which will emit short pulses to detect detuning of the antenna (potentially caused by a tag).
So not sure what you mean by "aligns": MCU needs to send Inventory/anti-collision commands earliest 5ms after the field-on to detect if tags of a certain technology are around. Each of these commands needs to go into the FIFO, registers need to be set up according to used technology/protocol. Then it can be sent and MCU needs to observe the INTs which will indicate if a response has been provided which can then be read from the FIFO.
There is much more to the protocol than just the sequence you mentioned. There are also the necessary timings, timeouts, payload and sequence of commands which a tag will expect. NFC Forum the also prescribes how to organize different technologies within one polling loop, etc.
I think you should use our drivers. You can potentially remove many of its features. Maybe if you really are using only NFC-V you might just use functions from rfal_nfcv.h - omitting rfal_nfc.c layer. Omitting our RFAL layer is substantial work - especially since the ST25R39xx chips don't implement the NFC-V framing and it needs to be done by host software.
BR, Ulysses