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.

DLP-7970ABP: Multiple RF430CL330H based TIDA-00217 tags on DLP-7970ABP

Part Number: DLP-7970ABP
Other Parts Discussed in Thread: TIDA-00217, RF430CL330H, , MSP430F5529, MSP430G2553, TRF7970A

Hello guys,

I have fabricated multiple TIDA-00217  http://www.ti.com/tool/TIDA-00217 tags. These are based on RF430CL330H Dynamic NFC Transponder which is type 4B compliant. I am able to read the NDEF Messages using DLP-7970ABP NFC Reader module with MSP430F5529 LP Launchpad. My aim is to read NDEF Messages from multiple tags placed in the RF field with one Reader module.

My plan is to extend the antenna, build a new matching circuit and read from TR7970A IC. 

My question is whether the current Firmware sloa227a would allow polling multiple tags? Could I read mulitple NDEF Messages or would the Firmware gets stuck to one tag?

Thank you in advance.

Sincerely,

Manoj.

  • Manoj -
    The ISO14443 standard does allow anti-collision, however NFC Forum does not. So this means you would have to modify the code to achieve your goal. ISO14443-3 (the B part of the standard) is what you should have as a reference when looking at for implementing this, along with the TRF79xxA EVM code examples, which has iso14443b.c file, in which you can see one implementation of anticollision for ISO14443B.
  • Hello Josh,

    I think the API which is responsible for reading the NDEF message in sloa227 firmware is T4T state machine subroutine. Are you telling me that this subroutine gets stuck to one tag and doesnt consider other tags when they are placed in the field? What would happen if I place multiple tags with this current firmware sloa227?
    Are you referring to this example in this URL www.ti.com/.../sloc297 This example uses iso14443b.c file for reading short NDEF message.

    Sincerely,
    Manoj.

  • the anti-collision is handled before layer 4. the tags located in the operating volume of the PCD (reader) would be arbitrated (during the anti-collision process, after REQB/WupB is issued (with N not equal to 1) and the field is left on, of course) and you would store their PUPIs in memory, then go back and select them (one at a time, with the ATTRIB command, which includes the PUPI of the tag you want to communicate with), then take them into layer 4 and read the NDEF message off each tag.

    Actually - you need i think ISO14443-4 to reference as well - sorry i should have put that in the first message.

    Be advised again, though - this will break the connection to anything allowed by the NFC Forum - if you don't care about that, its OK.

    that code example was done for the -G2553 - it does read simple NDEF messages - we worked on that to show simple and quick demo, then when we implemented full NFC compliant stack, we quickly realized the MSP430G2553 did not have enough RAM to handle all what was needed - (Ralph mentioned this before, when he pointed you at the -F5529 based project)

    if you look at the NFC Forum Activity Spec, you will see why

    hope that helps you out.

  • Hello Josh,

    I was going through the Firmware and I came across these lines.

    // Enable (1) or disable (0) the Auto SDD Anti-collision function of the TRF7970A
    g_bEnableAutoSDD = 0;

    and also

    // Set the Auto SDD flag within nfc_a.c
    NFC_A_setAutoSDD(g_bEnableAutoSDD);

    Would this bit enable the Firmware to support the anticollision Feature? These lines are part of void NFC_configuration() function.

    Thank you in advance.

    Sincerely,
    Manoj
  • Hello Manoj,

    That is for the ISO14443A standard only. It won't work for ISO14443B which is what you are using.
  • Hello Ralph,

    What about NFCLink NFC/HF RFID Firmware? (www.ti.com/.../NFCLink). Does this support the Anti-collision protocol for type B tags?

    Sincerely,
    Manoj.
  • Hello Manoj,

    No it does not.

    No TI firmware offered supports Anticollision for ISO14443B.
  • Hello Raplh and Josh,

    Thanks a lot again for the help. I will try modifying the firmware using the previously mentioned Hints and the Userguide.

    Sincerely,
    Manoj.
  • Hello Josh,

    As you have suggested I have read the www.ti.com/.../sloa137.pdf. I see that the Anti collision sequence (Slot marker method) is being implemented in iso14443b.c file of MSP430G2553 based Firmware (sloa297). Is sloa297, NFC Forum compliant or iso14443b compliant?

    You have mentioned that it only reads simple NDEF Messages. I haven't found the upper bound value of NDEF message in the Firmware. TIDA-00217 (RF430CL330h based ref design) has NDEF message of 70 Bytes. I just have to transmit NDEF message via UART. Is 70 Bytes really big for MSP320G2553 or do you mean it cannot handle big values of N in Anticollision protocol? I see it has 0.25KB of RAM.

    Thank you in advance.

    Sincerely,
    Manoj
  • Hello Manoj,

    The MSP430G2553 has 512 bytes of RAM. The TRF buffer is usually set to about ~100 bytes, so 70 bytes is still okay from a memory standpoint. Getting too large of an NDEF message would be an issue though. Basically the upper bound is essentially the size of the TRF buffer (defined in trf79xxa.h)

    SLOA297 is not NFC forum compliant, but it is ISO14443B compliant (anticollision is not a requirement for ISO14443B compliance). The NDEF reading code is hard coded and does not account for any sort of special handling, errors, etc. so if anything goes wrong it won't be handled and the device will just go back to the start of the polling loop without attempted recovery - this makes it non NFC compliant and also gives the application almost no flexibility.

  • NFC Forum does not allow anti-collision, it is allowed (and optional), from ISO14443 - the anti-collision is similar to ISO15693, which is a recursive, hence the thought to keep an eye on the RAM usage.

    This has nothing to do with the size of the NDEF message, as it (the anti-collision) is handled well before Layer 4  

  • Hello Josh and Ralph,

    I have some more questions on anticollision.

    1) I have ordered MSP430G2 launchpad and tried checking the Firmware. I have gone through the Firmware, especially the NFC_appIso14443b() function. I see that the ISO14443B_sendPollCmd(REQB,0) is used to send REQB and PUPI is obtained.

    Although the bool ISO14443B_runAnticollision() function is written in ISO14443b.c which is implemented using the Slot marker method, I dont see the function being used in any part of the program. Is this ISO14443B_runAnticollision() function just for the developer to extend the Anti-collision functionality or is it being used in some part of the program?

    2) I have just tried running the current Firmware by keeping two TIDA-00217 tags in the field. My UART Output is as shown below. Just to notice the difference between two tags, I have made the NDEF message unique.

    In this case NDEF message with 'TempC000002' is first tag and NDEF message with 'Temperature' is second tag.

    ISO14443B PUPI: [F271580C]

    ISO14443B PUPI: [EE719609]
    Layer 4 Activated
    NDEF Message: [TempC000002: 80 F
    TempF000002: 27 C]


    ISO14443B PUPI: [28F0707A]
    Layer 4 Activated
    NDEF Message: [Temperature: 80 F
    Temperature: 27 C]


    ISO14443B PUPI: [28F0707A]
    Layer 4 Activated
    NDEF Message: [Temperature: 80 F
    Temperature: 27 C]


    ISO14443B PUPI: [DC712C09]


    ISO14443B PUPI: [0D92A6FD]

    ISO14443B PUPI: [1D1B9F91]
    Layer 4 Activated
    NDEF Message: [TempC000002: 80 F
    TempF000002: 27 C]


    ISO14443B PUPI: [FA739E10]

    ISO14443B PUPI: [0B13A73E]

    ISO14443B PUPI: [1D1B9F91]
    Layer 4 Activated
    NDEF Message: [ ;4áßá]


    ISO14443B PUPI: [FBDF5C0B]

    ISO14443B PUPI: [04EC5A0C]
    Layer 4 Activated
    NDEF Message: [Temperature: 80 F
    Temperature: 27 C]

    I am asuming the current program is not running anti collision because it is not using ISO14443B_runAnticollision() function. But still I am able to obtain both the Tags NDEF. How am I able to obtain both the NDEFs? (Although, I am obtaining the second tag more often). How would the Output look like, if anticollision is implemented. Will it be peridoic with equal priority to all tags? (I dont see equal priority now).

    3) Is the PUPI and UID of the type B tag related?


    Thank you in advance.

    Sincerely,
    Manoj.
  • Hello Manoj,

    Manoj Rohit said:
    Is this ISO14443B_runAnticollision() function just for the developer to extend the Anti-collision functionality or is it being used in some part of the program? 

    I wrote out that function but ultimately wasn't able to validate if works for the exact reason you list in point 2). The RF430CL330H don't even need it to have multiple tags read. Never did figure out why that was the case.

    You are free to modify and test it further, but we will not improve/develop that function further.

    Manoj Rohit said:
    Is the PUPI and UID of the type B tag related? 

    They are the same, the tag UID is the PUPI. For the RF430CL330H, it has a dynamic PUPI which changes frequently (I think approx every 1 second?)

  • the PUPI will change on power cycle of the tag. if you see it changing, that means you are turning off the reader field in between read attempts
  • Hello Josh and Ralph,

    Can I conclude that any ISO14443B Reader Firmware (even without Anti-collision) can read multiple RF430CL330H based tags because of its power cycle behaviour (Changes in PUPI)? The current Firmware (without Anti-collision) reads multiple tags (RF430CL330H) probabilistically and Firmware with Anti-collision would read the tags deterministically?

    Sincerely,
    Manoj Rohit Vemparala
  • Manoj - 

    i don't think the end result is the same. The PUPI is used to select the tag(s). The tags must be selected individually using the ATTRIB command, which contains the PUPI in order to perform higher layer operations.