PN7462 Multiple tag inventory

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PN7462 Multiple tag inventory

2,644 Views
mayank_sharma1
Contributor III

Hello Guys,

I am evaluating PN7462 NFC  reader to perform inventory of multiple (ISO1563/ISO14443) tags simultaneously. I placed 4 to 5 tags under antenna for inventory and I want to read UUID of all these tags using a inventory sequence. 

All the example provided by NXP for PN7462  reads only one UUID out of multiple tags.

Is there any way to read UUID of all tags simultaneously that overlaps antenna?  

Regards,

Mayank

0 Kudos
4 Replies

1,208 Views
massimomanca
Contributor III

1. What type of tags are you using? Because the answer may be different.

2. If your application is similar to inventory tracking ICODE tags are OK in the 13.56MHz band, you can read about 500-700 tags/s. But normally to track goods the right tags are UCODE working in UHF band because their range is in the order of ~10m.

3. If your application does not require the encryption features of the Mifare tags, I suggest using ISO 15693.  The anticollision is more robust, but resolving collisions in every configuration will be tough, especially in the cases where tags are stacked and/or oriented 90 degrees to the reader antenna.

4. The general idea (that always works) to readall the tags in the reader range is this:

1) start to read (because the anti collision algorithm you will read the UUID of the "winner" tag)

2) turn off (halt) the "winner" tag

3) repeat from point 1) until yu will read a new UUID

4) when you will read no new tag you can turn on all the tags you turn off before


4b. If your tags support CID you can communicate with multiple tags without halting them using CID to distinguish them.

5. Anyway you can download NXPRdLib to see how manage anti collision in ISO14443. This is just a copy and paste of an example you may find there (so no need to copy and paste code from here):

static void ScanTags(void)
{
uint8_t bMoreCardsAvailable;
uint8_t bSak[1];
uint8_t numTags = 0;

bLastUidLength = 0;
/* Activate the communication layer part 3 of the ISO 14443A standard. */
status = phpalI14443p3a_Sw_ActivateCard(&I14443p3a, NULL, 0x00, bUid,
&bUidLength, bSak, &bMoreCardsAvailable);


numTags = 1;
while(PH_ERR_SUCCESS == status)
{

bLastUidLength = bUidLength;
memcpy(bSelectedUid,bUid,bUidLength);
debug_printf_msg("Tag number:");
debug_printf_hex_msg(&numTags, 1);

debug_printf_msg("UID:");
debug_printf_hex_msg(bUid, bUidLength);

//halt the tag
status = phpalI14443p3a_Sw_HaltA(&I14443p3a);

/* move on to activating the next card */
status = phpalI14443p3a_Sw_ActivateCard(&I14443p3a, NULL, 0x00,bUid,
&bUidLength, bSak, &bMoreCardsAvailable);


if(status != PH_ERR_SUCCESS)
debug_printf_msg("No more tags detected");
else
numTags++;
}


}

1,208 Views
mayank_sharma1
Contributor III

Thanks Massimo,

I am using NXP's NTAG213 (ISO-14443A) based tags for the evaluation. 

In your message you mentioned about checking of tag support of  CID. What is CID? I was not able find explanation about CID within datasheet of NTAG213, 

Also, I was not able to find example code within NXPNfcRdLib (v4.040.04.001641) that you mentioned. 

Thanks for your reply.

Regards,

Mayank

0 Kudos

1,208 Views
bjorn_dewitte
Contributor I

Hi,

I'm also trying to detect multiple tags with the PN7462 and I'm facing the same problem.

Did you get this working in the meanwhile? And can you maybe give me some pointers?

Thanks in advance.

Kind regards,

Bjorn

0 Kudos

1,208 Views
cbalo
Contributor I
Hello,
I am also trying to do a detection of several tags (ISO14443) with the PN7462 just to read the ID of each tags.  

Did you find the code example referenced by Massimo Manca?  

I tried to modify some examples of the NXPNfcRdLib (v4.040.04.001641) but I can not use the function phpalI14443p3a_activatecard () 
because all the examples are done with the discovery Loop (phacDiscLoop_Run()) to activate card.  

Thank you in advance for your return.
0 Kudos