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: default init TRF7970A

Part Number: TRF7970A

Hi.

I'm using the TRF7970A in SPI and I'm having a problem with some component.

After a power down the initialization of the TRF fails and no tag reading is possible

you have to turn off the power for more than 2 seconds and at power on initialization works.
EN is driven by the μc EN2 is connected to VSS

 

My init sequence:

Power on

EN = 0 ;

Delay 100ms    

 EN  = 1;

delayEnMs(20) ;              // wait tempo 20ms until system clock started

mod_control[0] = SOFT_INIT;             // 0x03

SpiTrf797xDirectCommand(mod_control);  

mod_control[0] = IDLE;                 // 0x00

SpiTrf797xDirectCommand(mod_control);

mod_control[0] = MODULATOR_CONTROL;     // 0x09

mod_control[1] = 0x09;                                                               // OOK 100%, ASK/OOK as an analog output

SpiTrf797xWriteSingle(mod_control, 2);

mod_control[0] = MODULATOR_CONTROL;

SpiTrf797xReadSingle(mod_control, 1);

 if (mod_control[0] != mod_control[1])

 {

     // defaut init

     res = 0;

}

Can you help me

  • Dear Rauzet - 

    the nominal startup sequence is on page 21 of the datasheet ==> 

    you do need a 10k pulldown resistor on the EN line. (or make sure your MCU has this equivalent pulldown internally)

    I do notice that you are using 0x09 for the modulator control register value. Normally this would be set for 0x01 for 100% depth, when not using the SYS_CLK output and using a 13.56MHz crystal.

    what is the reason you want to set the ASK/OOK pin (pin 12) to output? Normally, this pin would be pulled to GND via a 1k Ohm resistor. 

    you also need to set the other registers, too...i.e. 0x00 would be set to 0x21 (for full power out at 5V in), 0x01 set to what protocol you want (in this case i could guess you want this set to 0x02 (for ISO15693) or 0x88 (for start of ISO14443A), since you are wanting 100% mod depth, since both of those protocols use 100%. 

     

  • Hello Rauzet,

    Not sure if you are trying to write your own code or leverage an old TI example, but it looks like whatever firmware you are currently referencing is one of our outdated examples. Please refer to www.ti.com/lit/zip/sloc297 for the latest firmware.

    Ideally, you should seek to port SLOC297 into your target MCU, as this firmware base has been written for customers like yourself to leverage to minimize development time of the TRF7970A driver and RFID protocol handling code.

    If you decide not to port the firmware, then you at least need to use that as your primary reference. The trf79xxa.c file includes functions for proper device initialization and configuration based on the RFID protocol needed. Please reference those API's and ensure your firmware does the same. Also keep in mind that the support offered for custom firmware development is limited (we spent a lot of time and energy in our own software examples, so we don't want to re-invent the wheel when it already exists), hence the urge to leverage our examples which are crafted for your benefit as well as ours.