cancel
Showing results for 
Search instead for 
Did you mean: 

Using St25R3916B as NFC-V reader for ST25DV64KC

StefanoSperandio_ST
Associate III

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:

  1. 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?

  2. 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?

  3. 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?

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


3 REPLIES 3
Ulysses HERNIOSUS
ST Employee

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

Hi Ulysses,

 

Thank you for your response...

  1.  I understand that the ST25R3916B doesn't send frames autonomously. From what I've read in the datasheet, it seems that this chip can generate an RF field (in response to commands sent via the micro through SPI or I2C) and modulate ita according to the standard used and the signal provided. Is that correct= My understanding is that once the chip "aligns" with the NFC Tag after detection, I can configure the chip's settings to use the appropriate modulation (by correctly writing to the configuration registers). Then, I can create the message frame to send (e.g. Write Single Block message that includes the request flag, command code, tag UID, block address and block data) via the micro, load it into the FIFO and finally use specific commands (e.g. the direct command "Transmit Command"). This should ensure that the RF field generated on the antenna is modulated according to the message loaded in the FIFO and ready for transmission. Have I understood the chip's functioning correctly in general??
  2. Ok
  3. Does my reply in point 1 align with what you intend with "implementation of the protocol" ?
  4. I need to write my own code because I have to integrate this chip into an already-developed system with pre-existing architecture. Since I'm already using custom code built in a specific way, I'd like to keep everything consistent with that structure. Additionally, I'm working with a microcontroller from a totally different family than the examples provided by ST (I'm using an STM32U575, whereas the examples are based on the L4 and F4 families). Futhermore, the example code is not logically optimized for my system. I could use it as a reference for testing, but for integration purposes, I need my own code. Do you think using the example code could still be useful in this situation?

Thank you again for your patience and quick responses!

Best regards,
Stefano

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