ISO14443 Type B类型卡的防碰撞过程以及命令解析

一、介绍

本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 Type B协议检测匹配的PICC(Polling For Proximity Cards)命令以及防碰撞过程(Anticollision Proccess)。

二、命令

2.1 REQBWUPB

2.1.1 概要

REQB命令和WUPB命令是PCD用来检测PICC是否在无限射频场(RF)的命令。其中REQB命令用在PCD刚开始检测RF中的PICC时,而WUPB使用在PCD唤醒处于停止态(HALT State)的PICC时。

2.1.2 命令格式

这里写图片描述

说明:
(1)防碰撞前缀APf的值为0x05,即(0000 0101)b。
(2)Application Family Identifier(AFI)表示PCD检测的PICC类型,如果AFI的值为0,则表示PCD检测所有支持的PICC类型。AFI所支持的类型如下图所示。ISO14443 Type B类型卡的防碰撞过程以及命令解析_第1张图片
注:X和Y的取值范围都为0x1~0xF。
(3)PARAM的编码格式如下图所示。
这里写图片描述
注:
A、所有的Reserved for Future ISO/IEC Use(RFU)比特位都为0。
B、如果b4比特位为0,表示该命令是REQB命令,PCD可以在空闲态(Idle State)或者准备态(Ready State)使用该命令去检测PICC;如果b4比特位是1,表示是WUPB命令,PCD可以在空闲态(Idle State)、准备态(Ready State)或者停止态(HALT State)使用该命令检测PICC。
C、b1、b2和b3共同组成槽序号(Number of slots)。它的编码以及含义如下图所示。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第2张图片
注:对于每一个PICC而言,用ATQB响应REQB第一个槽序号的概率都为1/N。因此,如果PCD使用的是概率响应的办法,N不作为调节槽序号的值,但是PICC会在特定ATQB槽序号里返回它的UID。即N只是槽序号总数,但是每个PICC在0~N的响应概率都为1/N,N不为ATQB中的b1、b2和b2的编码。

2.2 Slot-MARKER

2.2.1 概要

在PCD发送完REQB/WUPB命令后,它可以在槽序号N发送(N-1)个Slot-MARKER命令。Slot-MARKER命令在如下两种情况会被发送。
A、PCD接收到PICC的ATQB命令后开始下一个槽(时隙)时,即发送下一条命令时。
B、如果知道该槽是空的,并且没有ATQB到来,那么不需要等待ATQB,直到该槽结束的时候。即b1、b2和b3都为0时。
注:该命令不是PICC强制要支持的。如果PICC不支持该命令,那么它将会忽视该命令。此时PICC只能通过概率的方法用ATQB去响应PCD的REQB命令。

2.2.2 命令格式

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第3张图片

说明:
A、APn为Slot-MARKER命令的第一个字节,它的二进制表示为(nnnn 0101)b,即它的低四比特为固定位0x5,即(0101)b;高四比特位编码如下所示。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第4张图片
注:slot-MARKER命令不强制要求随着槽序号递增而增加,只要在0~N之间即可。

2.3 ATQB

2.3.1 概要

ATQB命令是PICC对PCD发出的REQB/WUPB和Slot-MARKER命令的响应命令。

2.3.2 命令格式

这里写图片描述

说明:
(1)第一个字节值为0x50,是ATQB命令的前缀。
(2)第二到第五个字节表示PICC的Pseudo Unique PICC Identifier(PUPI),即Type B类型的卡号。表明Type B类型的卡号只有四个字节。
(3)第六到第九个字节是应用数据(Application Data),它的编码以及含义如下。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第5张图片

注:
A、应用数据的第一个字节是AFI,表明卡片的用途。
B、CRC_B的计算方法参照ISO14443-3文档。
C、应用序号(Number of Applications)占一个字节。高四个比特位与AFI一致,‘0’意味着无应用,‘0xF’意味着15种应用或者更多;低四比特位代表着应用总数,‘0’意味着没有应用,‘0xF’意味着15种应用或者更多。
(4)第十到第十二个字节是协议信息(Protocol Info)。它的编码以及含义如下。
这里写图片描述
注:
1)第一个字节表示的是数据传输的速率。编码以及含义如下
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第6张图片
2)第二个字节的高四比特位表示最大帧值(Max_Frame_Size),低四比特位是PICC所支持协议类型(Protocol_Type)。

A、最大帧值编码以及含义如下图所示。
这里写图片描述
B、协议类型编码以及含义如下图所示。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第7张图片
3)第三个字节分成FWI、ADC和FO三部分。
A、第一部分是高四比特位的帧等待整数时间Frame Waiting time Integer(FWI),它是用来定义帧等待时间Frame Waiting Time(FWT)的。它表示PICC响应PCD的最大时间,FWI与FWT之间的转换为:FWT = (256 * 16 / fc) * 2^FWI,其中FWI的取值范围是0~14,fc是射频场的频率13.56MHz。
B、第二部分是b4和b3比特位的PICC支持的应用数据编码(Application Data Coding)。它们的编码以及含义如下所示。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第8张图片
C、第三部分是b2和b1比特位的PICC支持的帧选项(Frame Option)。它们的编码以及含义如下图所示。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第9张图片

2.4 ATTRIB

2.4.1 概要

该命令是由PCD发给PICC的命令,一旦该命令发送,意味着PICC已经确定。

2.4.2 命令格式

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第10张图片

说明:
(1)第一个字节值为0x1D,它是ATTRIB命令前缀。
(2)第二到第五个字节是Type B的卡号Identifier,值和PUPI一样。。
(3)第六个字节我们称之为参数1,它的编码以及含义如下。
这里写图片描述

说明:
1)b8和b7比特表示Minimum TR0,含义是PICC响应PCD命令的最小延迟时间。它的编码以及含义如下。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第11张图片
2)b6和b5比特表示Minimum TR1,含义是PICC副载波调制开始到数据传输的最小延迟时间。它的编码以及含义如下。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第12张图片
3)b4比特表示是否需要帧结束标识,0表示需要,1表示不需要。
4)b3比特表示是否需要帧开始标识,0表示需要,1表示不需要。
(4)第七个字节我们称之为参数2。它的编码以及含义如下。
1)b8和b7比特位的编码以及含义如下。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第13张图片
2)b6和b5比特位的编码以及含义如下。
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第14张图片
3)b4到b1比特位表示PCD最大接收帧的大小,这四个比特位代表的含义如下。
这里写图片描述
(5)第八个字节我们称之为参数3。它的高四比特位为RFU,预留未来适用,值为0;低四比特位定义了PICC支持的协议类型。
(6)第九个字节我们称之为参数4。它的高四比特位为RFU,值为0;低四比特位为CID,它的取值范围为0~14。PCD定义了每个激活的PICC必须要有各自独特的CID,如果PICC不支持CID,那么CID的值为(0000)b。
(10)剩余字节是高层信息,它可有可无,视具体情况而定。PICC不强制要求含有该部分信息。但是像身份证类型的卡,必须要有高层信息。

2.5 ATTRIB命令的响应

命令格式

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第15张图片

说明:
(1)第一字节分成两部分:高四比特位为Maximum Buffer Length Index(MBLI),它让PCD知道PICC内部缓冲到接收帧的限制。如果MBLI的值为0,意味着PICC没有提供信息给内部的输入缓冲;如果MBLI大于0,则MBL=(PICC最大帧大小)*2^(MBLI-1),PICC会在ATQB中返回PICC最大帧的大小。当PICC发送了MBL时,PCD应该确保帧的长度不会超过MBL。低四比特位为PICC返回给PCD的CID,如果PICC不支持CID,则返回(0000)b。
(2)高层信息响应字节根据卡片本身情况而定,可能有也可能没有。

2.6 HLTB

2.6.1 概要

该命令用于设置PICC处于停止态(HALT State),并且让它不要响应REQB命令。发送该命令成功之后,其它命令都会被忽视,只有WUPB命令能够响应。

2.6.2 命令格式

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第16张图片

说明:
(1)第一个字节值为0x50,它是HLTB的命令前缀。
(2)第二到第五个字节是PICC的卡号Identifier,即PUPI。
(3)最后两个字节是CRC_B,计算方法参照ISO14443-3文档。

2.7 HLTB命令响应

命令格式

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第17张图片

三、PCD检测PICC过程

流程图

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第18张图片

注:
A、R是一个由PICC随机生成的在1~N之间的数。
B、Option 1是不支持Slot-MARKER命令的PICC分支。Option 2是支持Slot-MARKER命令的PICC分支。

四、防碰撞过程

4.1 描述

防碰撞过程是PCD通过一些命令控制执行的,PCD开始使用REQB命令,和一个或者多个发送ATQB的PICC的通信。如果在PCD发送REQB,具有不止一个PICC发送ATQB响应REQB,那么我们称该现象为“碰撞”。PCD在防碰撞过程执行的一系列命令就是为了选出一个特定的PICC。PCD完成防碰撞过程后,被选中的PICC的通信就会被PCD所掌控

4.2 原理

防碰撞的过程的原理是基于时隙的,在防碰撞过程中,PICC会在最短的时间内传输应用数据。在PCD发送的REQB/WUPB命令中槽序号可能会变化,PICC在每一时隙等可能的响应槽序号,所有的的PICC都可以在防碰撞的过程中进行应答(发送ATQB)。PCD在防碰撞过程设置的命令取决于PCD的使用策略,它既可以使用概率法(重复单槽序号,使PICC的随机数等于1时响应),也可以使用伪确定法(多槽序号,在碰撞过程中所有PICC可以响应,在某个特定槽序号确定PICC)。

4.3 规则

当PICC接收到REQB/WUPB命令后,处于READY-REQUESTED sub-state时,PICC的响应应该遵循下面规则(N是REQB/WUPB命令中的参数):
—-如果N=1,PICC应该发送ATQB并且进入READY-DECLARED sub-state。
—-如果N>1:

PICC可以采用概率法(PCD检测PICC流程图中的Option 1),并且进入空闲态(Idle State);
PICC采用发送Slot-MARKER命令的方法(PCD检测PICC流程图中的Option 2),一直到槽序号等于R,然后PICC发送ATQB并且进入READY-DECLARED sub-state。

五、实例

ISO14443 Type B类型卡的防碰撞过程以及命令解析_第19张图片
ISO14443 Type B类型卡的防碰撞过程以及命令解析_第20张图片

你可能感兴趣的:(算法,NFC,无线射频,嵌入式)