Skip to main content
Visitor II
April 5, 2021
Solved

How ST25R3911B make a request by RFID?

  • April 5, 2021
  • 1 reply
  • 1355 views

I'm using the demo code ST25R3911B-DISCO, and I don't find how are making the request for other board by RFID, I want to know if the code using interrupts to make this request each time gap or if this code makes a request just when calling a function?  

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

    Hi GPaiv.1,

    in our software we typically use the ISR only to read the interrupt status register. All exchanges over NFC need to be triggered by calling functions. When using RFAL you need to make sure the rfalWorker()/rfalNfcWorker() are called often enough to let protocol advance (e.g. NFCDEP/ISODEP) and to assure in-time handling of ST25R3911B FIFO.

    BR, Ulysses

    1 reply

    Technical Moderator
    April 6, 2021

    Hi GPaiv.1,

    in our software we typically use the ISR only to read the interrupt status register. All exchanges over NFC need to be triggered by calling functions. When using RFAL you need to make sure the rfalWorker()/rfalNfcWorker() are called often enough to let protocol advance (e.g. NFCDEP/ISODEP) and to assure in-time handling of ST25R3911B FIFO.

    BR, Ulysses

    GPaiv.1Author
    Visitor II
    April 6, 2021

    Hi Ulysses,

    Is it possible to increase the speed of request RF?

    Regards, Gabriel.

    Technical Moderator
    April 6, 2021

    Hi Gabriel,

    if you call RFAL often enough then you should be able to achieve a throughput somewhat close to the gross data rate (please expect some losses in the 10-30% range due to guard times, CRCs, parity bits, half-duplex protocol, etc.). I don't expect that you can achieve major speed-ups in the driver, also the gross data rate is most of the time fixed unless you can go to ISO14443-4 High Bit Rates, but this also needs to be supported by the tag in question.

    In previous cases where throughput was an important target we typically needed to optimize other areas in the application first - e.g. USB communication class, logging, move to double buffering, etc.

    Best Regards, Ulysses