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: ETSI 300 330 Linux NFC Subsystem

Part Number: TRF7970A


Hi, 

I'm looking for some information about RF certification (EN 300 330) for the TRF7970A on a Linux OS.

We are using the Linux NFC Subsystem (without Neard) to communicate with the reader, so we have netlink commands such as:

We are required to configure the reader to continuous output as well as setting the desired modulation scheme and datarate in order to conform to EN 300 330 standards:

i.e:

TX, 10% mod, 106k, max tx power and

TX, 100% mod, 106k, max tx power etc

I have seen that this is straight-forward when you can directly read/write registers, but this lower-level functionality is not exposed in the Linux userspace from the trf7970a.c driver.

Are there any recommended methods for testing/certifying EN 300 330 for the trf7970a with Linux? 

I have attempted to bypass the nfc subsystem by configuring the reader to use spidev, where I could then try to directly R/W registers, but I'm having issues (I believe it has to do with the timing of the SS and EN lines which the driver formerly handled)

Any tips or suggestions would be appreciated. Thanks!

  • Hello Matthew,

    sorry for the delayed response. I was out of office last week and unfortunately I'm busy for the next 3 days. I will look at your request after that.

    Best regards,

    Andreas.

  • Thank you.

    One update: I've gotten spidev working for reading/writing registers, but I'm having issues continuously transmitting a modulated signal (just trying to send random bytes, nothing specific). Looking for an easier way to accomplish this, as our interface if nfc netlink and this is completly different

  • Hello Matthew,

    I'm glad to read that you already are able to write and read registers.

    Please find the register settings for continuous RF output in chapter 5.6 of the FAQ document.

    It seems that you can enable modulator control with the Test Register 0x1A, but I never tried it.

    There would also be the option of enabling Direct Mode 0 (see chapter 6.10.6 in the datasheet).

    This way you can modulate at the MOD pin.

    Best regards,

    Andreas.

  • Can this be done without the MOD pin and instead setting the Modulator and SYS_CLK Control Register to the desired values?

  • Hello Matthew,

    no, this register setup just prepares the transmit, it still require data to be sent. In normal operation the data is coming from the ISO Encoder and in Direct Mode 0 you have to modulate the data via MOD pin.

    Best regards,

    Andreas.

  • Thanks Andreas.

    I was hoping I could setup the Modulator & Sys_Clk Control Register to the desired modulation and also set the ISO control register to the desired data rate. 

    I then follow these instructions from 6.10.4:

      

    I am getting the interrupt from the end of a transmission and reading the irq status returns 0x80. I was hoping to see an IRQ for a low-FIFO level before seeing only 0x80 in order to re-fill the buffer before it completely empties in order to continuously transmit.

    Will this not work as expected? We do not have the MOD pin connected so I am trying to work with what we have.

    I appreciate your help, thanks again

  • Matthew,

    you can setup the IRQ level register (0x14) to trigger an interrupt before the end of TX is reached.

    Best regards,

    Andreas.

  • I have written 0x03 to register 0x14, expecting to receive an interrupt when 32 bytes remain in the FIFO, but no such interrupt is triggered. This is the only setting I need to configure for this? Unsure why I would be getting an interrupt for TX complete before the FIFO low interrupt

  • Hello Matthew,

    as far as I know the FIFO level interrupt should not require any other settings.

    Do you have a chance to check if the data are getting transmitted as expected?

    If yes, then you could poll for the IFG (bit5) in the IRQ Status Register for double check.

    If no, then have you set the TX Length in register 0x1D and 0x1E properly?

    Best regards,

    Andreas.

  • Hi,

    I haven’t heard back from you for a while, so I will close this tread. If you wish to continue the discussion, please post a reply with an update below (or create a new thread).

    Best Regards,
    Andreas.