This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TRF7970A: RFID (MIFARE, iCLASS) and NFC reader combined

Part Number: TRF7970A

Hi,

We are currently developing a RFID/NFC reader using the TRF7970A. The transceiver is connected to a STM32F3 using SPI and for now has to support MIFARE classic and, if possible, iCLASS 2k/2. In the future we also want to support NFC, though the exact requirements are not clear yet.

We managed to get the latest RFID reader firmware example working on our hardware and the UID of a MIFARE classic card can be read. We have some questions:

  1. In some old forum posts a MIFARE development package is referenced that contains source code for reading MIFARE classic cards. Before requesting this package we would like to know if this is the latest version. The reason for asking is that this is quite an old package (2013) and the RFID firmware example itself has also been completely rewritten recently.
  2. Is there also a development package for reading iCLASS cards with this transceiver? If not, what do you suggest?
  3. Is there anything we should keep in mind when combining both reading RFID and NFC? As long as this is done sequentially it should work on the same hardware, right?

Best regard,

Martijn

  • Hello Martijn,

    1) The latest package is: http://www.ti.com/lit/pdf/sloa214- you won't need to make a special request to download this just the standard TI export control checks.

    - Note that Mifare Classic implementations for TRF7970A are very timing dependent, so you will have to invest a lot of effort to port this example to an STM device. As that is not a TI MCU, we will not offer any E2E support for such a port though the SLOA214 app note is very detailed and walks through step by step all that needs to be handled and includes many logic captures to illustrate each point, so that guide will give you details as well as anyone can explain it.

    2) No we don't have a package for this, but I suggest searching on E2E forums as Josh Wyatt has posted some non-released example code that partially supports that.

    3) Yes, as a reader device that is correct. You as the reader determine how often you search for NFC tags so no compliance issues to worry about. The trickiest part will be integrating the Mifare Classic reading in as after initial tag detection you will need to determine if a tag is Mifare Classic or not and then switch to Special Direct Mode (detailed in SLOA214) to handle those tags.

  • here are the files i did for the PicoPass / iClass cards 

    3583.picopass.zip

    goes with this presentation

    PicoPass Card Interoperability with the TRF79x_v3 [Compatibility Mode].pdf

  • Hello Ralph, Josh,

    Thank you both for the provided answers and examples. Turns out we actually only have to read the UID of the iCLASS card, which should simplify things. The iCLASS cards that we have to support have the 2K(S) PICOPASS transponder: www.proxmark.org/.../DS Picopass 2KS V1-0.pdf. Josh's example is for the 32K(S) transponder, and is of course based on an older reference firmware.

    I'm wondering what the correct settings are for the TRF in order to be able to communicate properly with the 2K(S). Right now I'm writing the following registers, though I'm not 100% sure if this is enough of too much:
    TRF79XXA_ISO_CONTROL 0x82 (no RX CRC, ISO15693 high tag data rate, FSK, 1 of 4 data coding)
    TRF79XXA_MODULATOR_CONTROL 0x01 (Sys Clock Output = 13.56MHz, OOK = 100%)
    TRF79XXA_TX_PULSE_LENGTH_CONTROL 0x80 (9.44us pulse length)
    TRF79XXA_RX_NO_RESPONSE_WAIT_TIME 0x14 (755us RX timeout)
    TRF79XXA_RX_WAIT_TIME 0x1F (293us RX wait time)
    TRF79XXA_FIFO_IRQ_LEVELS 0x0C (adjustable FIFO level)
    TRF79XXA_NFC_TARGET_LEVEL 0x00 (Errata)

    Then I'm doing the following:
    1) ACTALL command, same buffer values as the example but with command code 0x0A. This results in the following IRQ's:
    - 0x80 (TX complete)
    - 0x44 (SOF received, but also byte framing error / EOF error??) why is this? Should I wait until RX complete is received and just ignore the error?

    2) IDENTIFY command, same buffer values as the example but with command code 0x0C. This results in the following IRQ's:
    - 0x80 (TX complete)
    - 0x40 (RX complete)
    - I've received ASNB: 60FF5F027C27BD00 and CRC: 0000, but I've also received (different timings perhaps?) in an other try ASNB: 7C2C60FF5F027C27 with CRC FF5F. Its the same single card, in a fixed position on top of the reader. Shouldn't the ASNB always be the same?

    3) SELECT command, same buffer values as the example, but with command code 0x81 and the ASNB of the previous call. This resulted in only the 0x80 (TX complete) interrupt.

    In other words, it is doing something, but I don't think I'm quite there yet. Any pointers or answers to my questions above would be much appreciated.

    Best regards,

    Martijn