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: NFC Active and Passive P2P Modes

Part Number: TRF7970A


Dear All,

I hope you are doing well.

I am facing an interesting issue. I am working on adding the support of NFC P2P mode in my project. I used the code example provided in as a base. However I am witnessing that only passive P2P mode is working and active P2P mode is not working. Are the requirements for active P2P mode more strict than the passive P2P mode? Can you please point out the areas where I should be looking?

Thanks,

Ali Zulqarnain Anjum

  • Hello Ali,

    Yes Active P2P is much more strict than Passive P2P. You need to match very stringent timing requirements which is handled by the TI written TRF7970A driver. The recommendation would be to incorporate the TRF7970A driver located in the example firmware into your project rather than attempt to re-write it. We spent a significant amount of development effort to get Active P2P to work, and we will not support any custom implementations of it so your best is re-use the work we have already invested in your project.

    That all said, Active P2P is not often used as a whole, so you may also want to evaluate the system requirements and determine if you even need it. Passive P2P is far more robust and much better to use anyways, so you may find that Active P2P isn't worth the effort depending on your application.
  • Hi Ralph,

    Thank you for the prompt response.

    I was not looking for any custom implementation support. Just wanted to have your opinion on the implementation of both modes.

    I did use the same driver as was available in the example code. I will keep looking into it to fix the timing issue.

    Thanks for the support.

    Kind Regards,
    Ali Zulqarnain Anjum
  • Hi Ralph,

    I am still not able to get the active P2P mode working. The same code is working on the different platform. In the new project the only update is that the crystal frequency is now updated to 80 MHz. The passive P2P mode is working flawlessly.

    Can you suggest the section of code where I should be focusing ON?

    Thanks,
  • Hello Ali,

    Likely the faster clock speed is resulting in data being processed faster and speeding up the time in which replies are sent. Active P2P is very timing specific. It won't be trivial to adjust the timings.

    As mentioned before, you may want to consider closely if Active P2P is a requirement for your system, Passive P2P is far more reliable and should be used instead. Honestly even NFC smartphones struggle with Active P2P, it's well known in industry to be a finicky technology.

    If you absolutely need to debug this, I would recommend getting a TI LaunchPad+BoosterPack, putting a logic state analyzer on the SPI lines, and measure out the timings between sending packets and then adjust the timings in your faster running processor with wait states until they are better align. You'd also need to be aware of turning on the RF field too early and causing an RF field collision. Those are the two areas to focus on.

    As for where in the code, you'll find the timings are handled in the TRF79x0_irqHandler and possibly TRF79x0_writeFIFO too.
  • Hi Ralph,

    Thank you for the prompt response.

    Kind Regards,
    Ali Zulqarnain Anjum
  • Hi Ralph,

    After spending enough time on active P2P mode, I am now able to run P2P mode between a device running at 14 MHZ and other running at 120 MHZ. The updates were adding a small delay before setting external field ON and OFF, and adding a small delay between the transaction of two consecutive bytes from TRF7970A.

    However I am observing that every time 120MHZ works as an initiator and 14 MHZ device works as a target. Is their something I am missing? Can you please share your opinion?

    Thanks,
  • Hi Ali,

    We've never attempted to do Active P2P on devices that run faster than 25MHz. I am not sure what could be wrong.