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.

Setting up TRF7960ATB with ISO14443B

Other Parts Discussed in Thread: CC2530, RF430CL330H, TRF7960, MSP430G2553, TRF7970A, TRF7960A

Hello all,

I am having some questions regarding using TRF7960ATB with ISO14443B at 106 kbps.

HW:
TRF7960ATB rev B 2010 (according to silk screen) mounted on a custom 4-layer PCB running at 3.3V.
Short tracks and decoupling as suggested in SLOA139A.
The MCU is CC2530. I do not use the SPI HW as both UARTs are occupied.
The tag is a single TI RF430CL330H, but I also have a ISO14443-B smart label SRI4k for testing purposes.

SW:
Written in C, with bit banging SPI using /SS.
Communication and trace takes place using a serial port terminal.

To be honest, the SPI I/F on this device is a mess. The SPI errata SLOA140 is longer than the SPI section in the TRF7960 data sheet.
I THINK I have implemented all the fixes / work arounds...

Question 1:

After power up, I enable the TRF7960ATB, wait 100 ms and then writes

CHIP STATUS = 0x21
ISO CONTROL = 0x0C

Then, I read all the registers for verification, which yields:

MAIN CONTROL REGISTERS
Chip status: 00100001
ISO control: 00001100

PROTOCOL SUB-SETTING REGISTERS
ISO 14443B TX options:           00000000
ISO 14443A high bitrate options: 00000000
TX timer byte, high byte:        11000001
TX timer byte, low byte:         10111011
TX pulse length control:         00000000
RX no response wait:             00001110
RX wait time:                    00011111
Modulator and sys clock control: 00010000
RX special setting:              01000000
Regulator and IO control:        10000111

STATUS REGISTERS
IRQ status: 00000000
IRQ mask and collision position: 00111110
Collision position:              00000000
RSSI levels and oscillator:      01000000

FIFO REGISTERS
FIFO status:       00000000
TX length byte 1:  00000000
TX length byte 2:  00000000
FIFO I/O register: 00000000

Can I please have this setup verified by a TI expert?

Question 2:

The datasheet says:

"The main register controlling the digital part of the receiver is the ISO control register (address 01). By writing to this register, the user selects the protocol to be used. With each new write in this register, the default presets are loaded in all related registers, so no further adjustments in other registers are needed for proper operation."

I interpret this as I only need to select the ISO of interest, and all the registers are setup automatically, correct?

I will never use more than one tag simultaneously, so the anti-collision is quite straight forward.

Question 3:

The DS recommends that before beginning a data transmission, the FIFO should be cleared with a reset command.

Can I do this as a separate operation (i e, let /SS go high between the SPI writes), or should the entire sequence be sent within the same /SS start / stop marker?

Best regards,

Andreas N

  • Andreas -

    this STM part is not a fully compliant ISO14443B type tag. it is compliant with the air interface and the framing of standard, but not more.

    please find attached the .c and .h files you can use for reference, for this type of proprietary transponder.

    these were done for the TRF7970A BoosterPack sitting on top of the MSP430G2553 LaunchPad - you should be able to leverage them to your advantage

    SRIX4K.zip

  • Hi Josh,
    thanks for the response. I guess that rules out the test tag.


    BR,
    Andreas
  • Andreas -
    "I guess that rules out the test tag."
    what does that mean?
  • Hi Josh,
    seems that a sentence was lost in my answer. What I meant was that I won't try to communicate with the SRI4k. I assume this is what you refer to as STM part?

    My main goal is to communicate with the RF430CL330H, the SRI4k was just something I thought I could use to verify that the TRF6970 was properly setup, before moving on to RF430CL330H.

    Please let me know if I've made the wrong assumption.

    BR,
    Andreas
  • you are correct - the RF430CL330H is fully compliant device versus the other one, which is "special" . Now its clear to me what you meant - proceed forth and come back with any questions, etc.
  • Hi Josh,
    thank you very much for verifying this. Can you please have a look at the other questions in my first post? They are all of importance to me, but especially number three would be good to have sorted out as quick as possible.

    Best regards,
    Andreas
  • Andreas - 

    anti-collision is not required for ISO15693 or ISO14443B, but you should be able to recognize when a collision happens and deal with it. Single slot operations are straightforward as you say and if one happens, you can just indicate to the user to remove the extra tag and redo the REQB or WupB or Single Slot Inventory command

    so the setup configuration for the TRF7960, -60A, -63A, for ISO14443B operations is: 

    Register 0x00 ==> 0x21 (for +5VDC in and full power out) this is same thing you have in binary, in your post

    Register 0x01 ==> 0x0C (for ISO14443B @ 106kbps data rate (also what you have indicated you have it set for and 106kbps is where you start; later, if the tag indicates support for 212kbps, 424kbps or 848kbps and you want to, you can bump it up)

    you can also write Register 0x09 according to what you need for the rest of your system or let the IC do it for you.

    for example, 0x00 in that register (10%, not using the SYS_CLK output for anything else) is generally OK for most ISO14443B tags, the range is 8% to 14%

    Sending out REQB with FIFO reset at the start of the command sequence (the last three bytes are what goes out over the air)

    EOTX IRQ handling with FIFO Reset (circled in red)

  • Hi Josh,
    thank you very much for the answer. My SPI transfer look the same as the first picture, and when measuring on the NFC antenna with an oscilloscope, I can see that something is being sent, so apparently something goes out in the air. But RF430CL330H doesn't seem to respond.

    I will investigate further, but in the meantime, I have a question regarding the SPI I/F:

    According to the TRF7960A datasheet, section Switching Characteristics, DATA_CLK time / 2 is defined as max 250 ns. This equals Fclk = 2 MHz. I have been using a SPI bus at ~500 kHz. Could this be the source of my problems?

    BR,
    Andreas
  • Hello again,

    please take a look at this picture.

    1 = SS

    2 = MOSI

    3 = The RF output measured on the antenna on TRF7960ATB

    4 = SCK

    This is what I get when I am starting to send the sequence you suggested above (8F, 91, 3D etc)

    Prior to the situation, the board is initiated according to earlier posts.

    The 13.56 MHz carrier is there at the beginning of the sequence, but then dies and never comes back.

    At the same time, the board current consumption drops from ~100 mA to 30 mA (the latter is probably the consumption of the MCU and a LED display).

    I have measured the 5V on the TB at this point, and it is stable 5 V.

  • Never mind my last question, I found the cause.

    When reading the registers to verify my settings, I sent the register address and then a dummy byte of 0x00 to generate CLK. This worked fine if reading registers with LSB = 0. But if reading a register with LSB = 1, the transition on MOSI from 1 -> 0 during clock phase switch altered something in TRF7960A.

    (I know this is in the errata, but I missed it when updating my device driver to 2 MHz)

    Kind of hard to find though, as it only showed up in the next step, when sending the sequence 8F 91 3D 00 30 05 00 00.


    But I am still interested in the SPI bus characteristics, is there a lower limit of 2 MHz ? Also, how criticial is the duty cycle of the clock? According to the DS, it should be 50% high and 50% low. What happens if there is a deviation from this?

    BR,
    Andreas
  • the SPI can be run slower than 2MHz, this is recommendation based on the subcarrier frequency of the response being 848kHz, which would put it (the SPI clock) above that and avoid issues with ISO14443A, generally, in the event the layout was poor and the data lines were routed close to the RX in lines.

    the duty cycle of any data clock should strive for 50% duty cycle. i don't know that we characterized it much outside of that. the edges of the clock are important, so if you deviate, make sure everything shifts together (i would think this would be the first thing to think about)

    the upper limit of the SPI is much higher than 2MHz. it really is dependent upon the load of lines themselves. when they are short (like on a PCB) the SPI can run faster, if they are long (we have some very creative designs around this topic over the years with long circuit boards and the sharing of the clock or the use of long cables), then it becomes an issue.

    going lower than 2MHz, again, just to be clear - opens up the potential of corrupting the RX lines when using ASK tag responses....however, as ISO14443B is using BPSK, the likelyhood of this being an issue is lower, but on the other hand going too slow could result in the SPI timing being a bottleneck of sorts for data transfer.