Skip to main content
Explorer
November 20, 2024
Solved

RF communication between ST25R3916B and ST25DV64KC

  • November 20, 2024
  • 1 reply
  • 2244 views

Hi everyone!

I’m working with two ST expansion boards:

  1. NFC07A1 – ST25DV64KC
  2. NFC08A1 – ST25R3916B

Before diving into the communication between these two boards, I tested them individually to explore all their functionalities, and everything worked well. Now, I want to establish RF communication between the Reader (ST25R3916B) and the Tag (ST25DV64KC).

Here’s my setup:

  • On the Tag side, I’ve enabled the RF activity interrupt by configuring the GPO1 register to 0x05.

  • On the Reader side, I’ve developed code to configure the necessary registers and send some direct commands. Here’s a summary of the process:

    1. Direct command (C0) → Set Default
    2. Register 0x02 → 0xC8
    3. Register 0x03 → 0x74
    4. Direct command (C2) → Stop All Activities
    5. Direct command (DB) → Clear FIFO
    6. Direct command (D6) → Adjust Regulators

    After this setup, I wrote the desired frame into the FIFO and then sent the C4 (Transmit with CRC) direct command.

When I bring the Reader close to the Tag and send the message, the interrupt on the Tag does not trigger. Hence, there seems to be no communication.

Here’s what I’ve verified so far:

  1. The frame I’m sending is the same as the one I successfully tested using the Android app, which triggered the interrupt on the Tag correctly.
  2. The RF field is being generated correctly because the RF field presence interrupt activates when the two devices are brought close together.
  3. The FIFO appears to be written correctly.

Now, here are my questions:

- Am I proceeding in the right direction?

- What could I be doing wrong?

Thank you in advance for your help.

    This topic has been closed for replies.
    Best answer by Ulysses HERNIOSUS

    Hi Stefano,

     

    ad 1)

    The ndef_rw example does also poll in ISO/IEC 15693 (using subcarrier stream mode) and will discover the NFC7. If a proper NDEF content is already on the tag it will read that as well.

     

    ad 2) Wake-up mode is a way of saving power. In this mode the ST25R will just emit short field pulses and observe the detuning of the LC tank using RFI pins. A host MCU can be woken by it and then perform the actual field on and polling.

     

    ad 3) For ISO/IEC 15693 after discovering the tag with its UID you can right away continue to reading/writing the memory. This is not necessarily the case for tags of different technologies.

    Trying to just follow the  'Application Information'  section I can only recommend if you have profound knowledge of NFC, ISO/IEC 15693. Still then I advise to obtain necessary receiver and other register settings from our reference software. If not you may run into operating the ST25R in a non-optimal configuration and potentially having something only borderline functional.

    BR, Ulysses

     

    1 reply

    Technical Moderator
    November 21, 2024

    Hi  StefanoSperandio,

    your approach is quite far from what can possibly work. Please start by using our RFAL and one of our demo applications - e.g. the ftm demo from ST25 NFC lib.

    To give you a glimpse what is actually missing in your approach:

    • First enable oscillator, then enable field
    • Give time after field on for tag to be powered.
    • Set proper operation mode, for NFC7 you would need streaming mode with specific settings
    • Your software will need to do proper bit coding and decoding as NFC-V framing is not supported inside 3916B
    • Set up proper transmit length
    • Set up proper timers: MRT and NRT
    • Set up proper analog receiver settings
    • ......

    If you really want to do your own small driver, please use one of our existing demos and observe what it is doing, trying to replicate what you need.

    BR, Ulysses

     
    Explorer
    November 22, 2024

    Hi Ulysses,

    Thank you for the information you’ve shared so far. However, I need to develop custom code to send APDU commands over RF. My objective is to send commands similar to the "Send Custom Command" feature in the ST25 Android App. Specifically, I want to communicate with an ST25KCXX Tag to perform operations like reading or writing single or multiple blocks by sending ISO-compliant frames directly via RF.

    I’ve reviewed the available examples for the ST25R3916B, but most of them seem to focus on basic NFC tag polling. Regarding the FTM demo, I don’t think it fits my requirements, as it relies on mailbox functionality. Instead, I need to implement commands like Write Single Block, Read Single Block, Write Multiple Block, or Read Multiple Block, which don’t involve the mailbox at all.

    From the datasheet, it appears the ST25R3916B supports NFC-A/B/F/V. I assumed this meant it could handle frame coding and encoding for protocols like ISO15693 (NFC-V) by properly configuring the reader. However, I’ve been told the chip does not natively support NFC-V frame coding and encoding. Could you clarify why this is the case?

    I would appreciate any guidance on finding a detailed example or guide that matches my needs. Basically I prefer to develop my own code because i've actually created custom library that allow me to use these two chip with my code structure. Anyway I’m open to using RFAL-based functions if I can find a clear, well-documented example. Ideally, such an example would help me replicate the functionality with custom code later on.

    Thank you in advance for any suggestions or resources you can share!

     

    Best regards,

    Stefano

    Technical Moderator
    November 22, 2024

    Hi Stefano,

     

    ST25R3916B is not an NFC controller abstracting the majority of the details of NFC protocols but more of an analog frontend. The host MCU can access registers / execute commands to perform the analog for implementing the mentioned protocols. Many details of configuring for these protocols are the responsibility of the host MCU software.

    If you want to look at examples for accessing the EEPROM of ST25DV..KC you best look at our ndef_rw demo inside ST25 NFC lib for ST25R3916B. Before performing read/write you typically also want to first identify tags in the field and not just broadcast read/write commands...

    APDU is a term from smartcard (ISO/IEC 7816). These APDU would be typically be sent over a wired link or using T=CL/ISODEP layer on ISO14443-4/NFC-A/B protocol. ISO15693 is at least unexpected in this area.

    BR, Ulysses