I've been recently rewriting ISO 14443-3 anti-collision loop and found out that it is actually not correctly defined in the standard.
Example: two cards in the field will enter anti-collision loop:
card uid =
AB CD EF GH IJ KL xx xx xx
(10 bytes/tripple size UID)card uid =
AB CD EF 88 GH IJ KL
(7 bytes/double size UID)
They will both get into anti-collision cascade level 2 where:
will transmit: UID CL2 =
88 GH IJ KL
- as88
is the cascade tag indicating that its UID is longerwill transmit: UID CL2 =
88 GH IJ KL
- as its actual UID=> no colision.
PCB will send SELECT and both cards will respond with the SAK where there will be a collision in bit2.
The ISO/IEC 14443-3 standard does not says anything about forbiding uid[3] to be 0x88
, only uid[0] is forbidden to be 0x88
.
Am I right or did I miss something? I know it is very low probability (1 : 2^56) that two such cards appear in the field at the same time. But nevertheless it is not correct (and the general director of the company I am working for will definitely come to look at what we are doing with two such cards in his wallet).