cancel
Showing results for 
Search instead for 
Did you mean: 

Using ST25R3916B to detect two NFC-V (ST25TV02KC) tags simultaneously – only one UID is returned

MERSI
Associate III

 

Hi everyone,

I'm currently working with the ST25R3916B and trying to detect two NFC (ISO15693) tags simultaneously in the RF field.
I'm using two ST25TV02KC tags and placing them close together above the antenna.

However, my current implementation only ever returns one UID, even though both tags are clearly within range.

I’m using RFAL and currently calling the following flow:

 

 
rfalNfcvPollerInitialize(); HAL_Delay(5); rfalWorker(); // or rfalNfcWorker() in some other attempts HAL_Delay(5); rfalNfcvInventoryRes invRes[16] = {}; uint16_t devCnt = 0; ReturnCode err = rfalNfcvPollerInventory( RFAL_NFCV_NUM_SLOTS_16, 0x00, nullptr, invRes, &devCnt );

I tried increasing discConf_.devLimit = 5 and enabling only techs2Find = RFAL_NFC_POLL_TECH_V, but it had no effect.


My questions:

  1. What is the correct RFAL call sequence (including delays, state machines, etc.) to reliably detect multiple NFC tags (ISO15693 tags) at the same time?

  2. Are there specific settings or steps to enable anti-collision / multiple tag detection in RFAL?

  3. Could the issue be related to timing, wrong protocol sequence, or RF field saturation?

  4. Any proven example with multiple ISO15693 tags and ST25R3916B working?

I would really appreciate any help, sample code, or advice on properly detecting both tags simultaneously.

Thanks in advance!

1 ACCEPTED SOLUTION

Accepted Solutions
Brian TIDAL
ST Employee

Hi,

Use the default demo_polling.c file and increase the discParam.devLimit parameter to 2 in the demoIni() function. When two tags are detected, the demoNotif() callback is triggered in the RFAL_NFC_STATE_POLL_SELECT state, and the rfalNfcGetDevicesFound() function returns the list of devices. The demo displays the message: "Multiple Tags detected: 2". The first device is then selected, and the demo displays its UID.

The elementary RFAL sequence is as follows:

  1. rfalNfcvPollerInitialize()
  2. rfalFieldOnAndStartGT()
  3. rfalNfcvPollerCollisionResolution()

Refer to "NFC-V Collision Resolution" in the rfalNfcPollCollResolution() function for an example of this sequence.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

1 REPLY 1
Brian TIDAL
ST Employee

Hi,

Use the default demo_polling.c file and increase the discParam.devLimit parameter to 2 in the demoIni() function. When two tags are detected, the demoNotif() callback is triggered in the RFAL_NFC_STATE_POLL_SELECT state, and the rfalNfcGetDevicesFound() function returns the list of devices. The demo displays the message: "Multiple Tags detected: 2". The first device is then selected, and the demo displays its UID.

The elementary RFAL sequence is as follows:

  1. rfalNfcvPollerInitialize()
  2. rfalFieldOnAndStartGT()
  3. rfalNfcvPollerCollisionResolution()

Refer to "NFC-V Collision Resolution" in the rfalNfcPollCollResolution() function for an example of this sequence.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.