cancel
Showing results for 
Search instead for 
Did you mean: 

ST25 with two NFC-V Tags (ISO 15693)

PSchm
Associate II

Is it possible to communicate with a version of a ST25R391x simultaneously with two und NFC-V Tags (ISO/IEC 15693) (Detection & Reading/Writing data) without getting into any collision problems.

If yes, is this feature implemented in the ST25 itself or in the RFAL library and one need to take care of it?

Thanks a lot in advance.

Best regards,

Patrick

1 ACCEPTED SOLUTION

Accepted Solutions
Brian TIDAL
ST Employee

​Hi,

the demo.c manages a single tag. In order to manage several tag, it has to be modified.

Assuming X-CUBE-NFC5 v1.3.0 is used, in bool demoPollNFCV( void ):

 rfalNfcvListenDevice nfcvDev;

needs to be replaced by

 rfalNfcvListenDevice nfcvDev[2];

 err = rfalNfcvPollerCollisionResolution(1, &nfcvDev, &devCnt);

needs to be replaced by

 err = rfalNfcvPollerCollisionResolution(2, nfcvDev, &devCnt);

Then, nfcvDev[0].InvRes.UID to nfcvDev[devCnt-1].InvRes.UID contain the list of UID found during Collision Resolution. This can be used for further read/write. Note: the demo reverses the UID bytes for printing purpose. For use in further read/write block(s) operation, the UID byte should not be reversed (in that case a local copy and then a byte reverse should be done for printing).

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

5 REPLIES 5
Brian TIDAL
ST Employee

Hi,

you can communicate with several tags in the field by using the addressed mode (i.e. Address_flag in Flags byte set to 1, UID of a given tag included in the command). In that case only the addressed tag will respond (i.e, no collision).

The UID of the various tags in the field can be retrieved during the collision resolution procedure (see rfalNfcvPollerCollisionResolution).

Feel free to elaborate more on your precise need and what you mean by "simultaneously ".

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.
PSchm
Associate II

​Hi Brian

Thanks for the quick update.

I have a follow up question:

I have a ST25R3911 reader with a customized antenna which is supposed to be as small as possible. Are there any known restrictions when using multiple tags (i.e. if they overlap or are behind each other). In the end I need to request their UID/ read and write on the tag.

Best regards,

Patrick

Brian TIDAL
ST Employee

Hi,

when using ST25R3911B-DISCO board or X-NUCLEO-NFC5 board, I have never faced any particular issue with multiple T5T tags such as ST25DV or ST25TV tags. Note: X-CUBE-NFC5 demo by default limits to 1 device (i.e. it is needed to modify the demo.c file to handle several T5T devices).

For a custom board with a custom antenna, I can only recommend to follow AN4974 (Antenna matching for ST25R3911B/ST25R391x devices) in order to get the best RF performances.

On tag side, for best operation, assuming ID1 cards: They should not be fully aligned.

Feel free to share more information about your application (e.g. tag size) and about why it is needed to manage several tags (brand protection? accessory identification? Note: ST25TV tags offers a variety of differentiating features and options that may be used in your application)

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.
PSchm
Associate II

​Hi,

Thanks for the answer.

Do you already have an example of the demo.c file which handles multiple tags?

Best regards,

Patrick

Brian TIDAL
ST Employee

​Hi,

the demo.c manages a single tag. In order to manage several tag, it has to be modified.

Assuming X-CUBE-NFC5 v1.3.0 is used, in bool demoPollNFCV( void ):

 rfalNfcvListenDevice nfcvDev;

needs to be replaced by

 rfalNfcvListenDevice nfcvDev[2];

 err = rfalNfcvPollerCollisionResolution(1, &nfcvDev, &devCnt);

needs to be replaced by

 err = rfalNfcvPollerCollisionResolution(2, nfcvDev, &devCnt);

Then, nfcvDev[0].InvRes.UID to nfcvDev[devCnt-1].InvRes.UID contain the list of UID found during Collision Resolution. This can be used for further read/write. Note: the demo reverses the UID bytes for printing purpose. For use in further read/write block(s) operation, the UID byte should not be reversed (in that case a local copy and then a byte reverse should be done for printing).

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.