Comprendre la boucle anti-collision ISO14443

La boucle anti-collision est décrite dans la couche 3 de la norme ISO/IEC 14443. Elle permet au PCD d’établir la communication avec le ou les récepteurs présents.

De cette boucle sont issues des informations cruciales comme l’ID, le SAK et l’ATS. Comprendre ce procédé permet d’avoir les idées plus claires par la suite.

Petit rappel

Dans l’article sur la norme ISO/IEC 14443, la séquence d’activation suivante est décrite.

Séquence d'activation

La boucle anti-collision a pour objectif de lister les récepteurs présents dans le champ magnétique et d’activer ces récepteurs l’un après l’autre.

En effet, si plusieurs récepteurs étaient actifs en même temps, le lecteur ne pourrait pas savoir à qui adresser les commandes ou de qui viennent les réponses.

Anti-collision ou pas ?

La première étape est d’identifier si le récepteur gère l’anti-collision. Pour cela on analyse la valeur ATQA ou ATQB. Cette valeur, sur 2 octets contient plusieurs informations dont la taille de l’ID et la gestion ou non de l’anti-collision.

A noter que tous les récepteurs conforment à la norme ISO/IEC 14443 doivent gérer l’anti-collision.

Les bits (en colonne des tableaux) sont affichés du poids fort (16) vers le poids faible (1).

Tableau de bit de ATQA

b16

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

               

Taille ID

 

Type d’anti-collision

Si l’un des bits 1 à 5 est à « 1 », alors l’anti-collision est gérée.

Valeur des bits 7 et 8 de ATQA

b8

b7

Taille de l’ID

0

0

4 octets (ID Simple)

0

1

7 octets (ID Double)

1

1

10 octets (ID triple)

1

1

Pas d’utilisation actuelle

Exemples de valeur « ATQA »

MIFARE Classic : « 00h 04h« 

b16

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

L’anti-collision est gérée et l’ID sera de 4 octets.

 

MIFARE DESFire : « 03h 44h« 

b16

b15

b14

b13

b12

b11

b10

b9

b8

b7

b6

b5

b4

b3

b2

b1

0

0

0

0

0

0

1

1

0

1

0

0

0

1

0

0

L’anti-collision est gérée et l’ID sera de 7 octets.

Étapes de l’anti-collision Type A

Ce schéma illustre une boucle anti-collision sans collision (un seul récepteur dans le champ).

anticollision

L’obtention de l’ID complet peut prendre 1, 2 ou 3 « tours ».

Le « CT » (Cascade Tag) indique que l’ID n’est pas complet et qu’il faudra une boucle supplémentaire. Il vaut « 88h« .

 

Et avec plusieurs PICC ?

Avec plusieurs récepteurs dans le champ, l’anti-collision est jouée jusqu’à ce que chaque récepteur soit connu. Les « ATQ » et « SAK » de chaque récepteur sont stockés dans une pile en mémoire du PCD.

A la suite de la boucle anti-collision, un seul récepteur sera activé avec une commande de sélection « SEL ».

Quand le PCD en aura terminé avec ce récepteur, il pourra envoyer une commande « HALT » qui le déconnectera. Il pourra sélectionner un autre récepteur avec une autre commande de sélection.

La règle est qu’il ne peut y avoir plus d’un récepteur actif pour le PCD.

Quelques exemples de séquence

MIFARE Classic 1k

Ce type de PICC à un ID sur 4 octets. Son ATQA vaut « 00h 04h » et son SAK « 08h ». Elle n’est pas conforme ISO/IEC 14443-4.

MIFARE Classic 4k

Ce type de PICC à un ID sur 4 octets. Son ATQA vaut « 00h 02h » et son SAK « 18h ». Elle n’est pas conforme ISO/IEC 14443-4.

MIFARE Ultralight

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut « 00h 44h » et son SAK « 00h ». Elle n’est pas conforme ISO/IEC 14443-4.

NTAG 2013

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut « 00h 44h » et son SAK « 00h ». Elle n’est pas conforme ISO/IEC 14443-4.

MIFARE DESFire

Ce type de PICC à un ID sur 7 octets. Son ATQA vaut « 03h 44h » et son SAK « 20h ». Elle est conforme ISO/IEC 14443-4 et partiellement ISO7816-4.

Smartphone Android

Ce type de récepteur à un ID aléatoire sur 4 octets. Son ATQA vaut « 00h 04h » et son SAK « 60h ». Il est conforme ISO/IEC 14443-4 et ISO7816-4.

Étapes de l’anti-collision Type B

La grande différence avec les récepteurs de type B est que ces récepteurs doivent aussi répondre au type d’application attendu par le PCD.

En effet, lorsque la commande REQB est envoyée, le PCD ajoute un code « AFI » qui permet de filtrer les récepteurs en fonction d’un domaine fonctionnel (transport, identification, médical etc.).

Bien que la valeur « ATQB » et quelques autres commandes diffèrent, c’est là la seule grosse différence.

Conclusion

Sous le terme de « boucle anti-collision » se cache l’un des processus les plus importants de la norme NFC ISO/IEC 14443. C’est cette étape qui permet de traiter la nouvelle problématique que pose le sans contact, par rapport au contact, avoir plusieurs récepteurs dans le même lecteur.