一、介绍
本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 TypeA协议检测匹配的PICC(Polling ForProximity Cards)命令以及防碰撞过程(Anticollision Proccess)。
二、命令
2.1 REQA和 WUQA
2.1.1 命令概要
REQA命令和WUPA命令是PCD用来检测Type A类型卡是否在无线射频场(RF)。区别在于REQA命令是用PCD在刚开始检测PICC是否在RF中,而WUPA是用在PCD让PICC由停止态(HALT State)回到类准备态(READY* State)。
2.1.2 命令格式
REQA命令和WUPA命令只有一个字节(短帧格式),它们的格式如下(b表示bit;B表示Byte):
A、REQA命令:0x26
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
RFU |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
注:RFU为Reserved for Future ISO/IEC Use的缩写,我喜欢称之为“预留”或者“未使用”。
B、WUPA命令:0x52
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
RFU |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
2.2 ANTICOLISION和SELECT
2.2.1 命令概要
这两个命令用在防碰撞过程,他们共同包含以下三部分:
(1)选择代码(SEL),占一个字节。
(2)有效字节(NVB),占一个字节。
(3) 0~40个Unique Identifier(UID)比特位。
其中,选择代码分成三个层次,根据防碰撞的级别使用(根据参与防碰撞的UID长度使用)。级别一选择代码为0x93,级别二为0x95,级别三为0x97。
有效字节是指PCD传输了的字节数和比特位数。NVB的高四个比特位表示已经传输的比特数除8得到的结果,它包含SEL和NVB字节。所以字节数最小值为2(只有SEL和NVB),最大值为7(含有SEL、NVB和5个字节的UID);NVB的低四个比特位表示已经传输的比特位数模8,它包含SEL和NVB字节,因此它的最小值为0,最大值为7。
2.2.2 命令格式
B1 |
B2 |
B3~B7 |
SEL |
NVB |
UID |
注:UID传输的长度根据具体的碰撞请情况而定,传输范围在0~40个比特位之间。它会由NVB指出。
2.3 HLTA
2.3.1 命令概要
该命令用于PICC不响应PCD的解调命令,它占两个字节,后面跟着一个CRC_A。第一个字节为0x50,第二个字节为0x00,CRC_A的计算方法参见ISO14443-3文档。
2.3.2 命令格式
1st Byte |
2nd Byte |
3rdByte 4th Byte |
0x50 |
0x00 |
CRC_A |
2.4 ATQA
2.4.1 命令概要
ATQA命令是PICC对PCD发出的REQA或WUPA命令的响应命令。当PCD发出REQA命令时,多张PICC都有响应时,该命令可以指出防撞的发生情况。
2.4.2 命令格式
注:
A、所有的RFU都默认设置为0.
B、专有编码(Proprietary Coding)根据制造厂商而定,由PICC自己响应。
C、UID类型(UID size bitframe)分成三种。
其中UID为单尺寸时,表示PICC的UID长度为4个字节;双尺寸表示PICC的UID长度为7个字节;三尺寸表示PICC的UID长度为10个字节。
D、防撞比特位,该区域的值不为0时表示有多张卡响应REQA命令。
三、PCD检测PICC过程
3.1 描述
PCD检测PICC的UID包含卡检测、防碰撞和具体PICC类型识别三个部分。
——第一部分是卡检测。主要是由PCD发出REQA命令,在RF场中的PICC发出ATQA进行响应的部分。如果有PICC响应ATQA,则表示RF场中含有ISO14443 Type A类型的PICC。若ATQA中的碰撞比特位不为零,表示有多张PICC存在RF中,需要进行多次防碰撞。
——第二部分是防碰撞。防碰撞的过程分成三个级别,第一个级别必须要有,第二和第三级别视具体情况而定(ATQA的碰撞比特位和UID的长度)。如果只有一张PICC,那么只进行第一级别的防碰撞过程;多张相应REQA,才会进行第二第三级别的防碰撞过程。
——第三部分是具体PICC类型识别。该部分主要由PICC发送SAK,由PCD解析SAK从而确定PICC的具体类型。
3.2 流程图
说明:该流程图包含三个部分:卡检测、防碰撞、卡具体类型识别。
四、防碰撞
4.1 描述
(1)PCD设置SEL编码和选择碰撞级别。(当SEL编码为0x93时,表示碰撞级别一;当SEL编码为0x95时,表示碰撞级别二;当SEL编码为0x97时,表示碰撞级别三)。
(2)PCD设置NVB的初始值为0x20。表示传输的字节(SEL和NVB)数为2*8 / 8 = 2,传输的比特位为 2*8 % 8 = 0;
(3)PCD发送SELECT命令,传输SEL和NVB。
(4)所有在RF中的PICC发送ATQA进行响应REQA。
(5)假定所有的PICC都有自己独特的UID序列。如果只有一张PICC进行响应,那么ATQA中的碰撞比特位为0;否则进行第(6)步到第(10)步。
(6)PCD根据ATQA识别PICC的UID中碰撞的位置。
(7)根据传输的字节数和比特位数重新设置NVB的值,PCD需要设置碰撞响应规则是以比特位1进行,还是以比特位0进行。
(8)PCD发送SELECT命令,传输重新设置好的SEL和NVB。
(9)只有PICC的UID等于PCD发送SELECT命令的UID时,表示防碰撞过程成功。
(10)如果还没选出PICC中的UID,即还有多张卡响应,那么重复第(6)步到第9步,进行更高级别的碰撞。
(11)如果更高级别的碰撞发生了,PCD应将NVB设置成0x70,表示传输了7字节。7 = 1 + 1 + 5(1个字节SEL,1个字节NVB和5个字节【可能是1个字节的CT(0x88)加上3个字节的UID,再加上一个字节的BCC(前面四个传输字节异或结果);也可能是四个字节的UID加上一个字节的BCC(前面四个字节UID异或的结果)】)。
(12)PCD发送SELECT命令,传输1个字节SEL,1个字节NVB和5个字节UID。
(13)PICC响应SAK,PCD匹配5个字节的UID。
(14)如果UID是完整的,PICC传输的SAK清除碰撞级别比特位和从准备态(READY State)切换到激活态(ACTIVE State)或者从类准备态(READY* State)切换到类激活态(ACTIVE* State)。
(15)PCD会检查SAK去决定是否进行更高层次的防碰撞过程,如果需要则会提升碰撞级别。
注:
A、如果PCD一开始就知道PICC的UID是完整的,那么PCD会跳过步骤(2)到(10),也就是没有防碰撞过程。
B、如果含有更高级别的防碰撞过程,那么也就表示PICC的UID长度不止4个字节。因为4个字节的UID只能进行级别一的防碰撞过程;7个字节的UID最多能进行级别二的防碰撞过程;10字节的UID最多能进行级别三的防碰撞过程。
C、同一碰撞级别里可能发生多次碰撞。
4.2 流程图
五、碰撞级别
六、防碰撞过程示例(和前面那个例子一样)
注:
A、PICC #1是单尺寸UID,uid0的值是0x10;PICC #2是双尺寸UID。
B、该实例的碰撞响应规则是按比特位1响应。
ISO14443 TypeB类型卡的防碰撞过程以及命令解析
一、介绍
本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 TypeB协议检测匹配的PICC(Polling For ProximityCards)命令以及防碰撞过程(Anticollision Proccess)。
二、命令
2.1 REQB和WUPB
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 FamilyIdentifier(AFI)表示PCD检测的PICC类型,如果AFI的值为0,则表示PCD检测所有支持的PICC类型。AFI所支持的类型如下图所示。
注: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)。它的编码以及含义如下图所示。
注:对于每一个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 命令格式
说明:
A、APn为Slot-MARKER命令的第一个字节,它的二进制表示为(nnnn 0101)b,即它的低四比特为固定位0x5,即(0101)b;高四比特位编码如下所示。
注: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),它的编码以及含义如下。
注:
A、应用数据的第一个字节是AFI,表明卡片的用途。
B、CRC_B的计算方法参照ISO14443-3文档。
C、应用序号(Number of Applications)占一个字节。高四个比特位与AFI一致,‘0’意味着无应用,‘0xF’意味着15种应用或者更多;低四比特位代表着应用总数,‘0’意味着没有应用,‘0xF’意味着15种应用或者更多。
(4)第十到第十二个字节是协议信息(Protocol Info)。它的编码以及含义如下。
注:
1)第一个字节表示的是数据传输的速率。编码以及含义如下
2)第二个字节的高四比特位表示最大帧值(Max_Frame_Size),低四比特位是PICC所支持协议类型(Protocol_Type)。
A、最大帧值编码以及含义如下图所示。
B、协议类型编码以及含义如下图所示。
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 DataCoding)。它们的编码以及含义如下所示。
C、第三部分是b2和b1比特位的PICC支持的帧选项(Frame Option)。它们的编码以及含义如下图所示。
2.4 ATTRIB
2.4.1 概要
该命令是由PCD发给PICC的命令,一旦该命令发送,意味着PICC已经确定。
2.4.2 命令格式
说明:
(1)第一个字节值为0x1D,它是ATTRIB命令前缀。
(2)第二到第五个字节是Type B的卡号Identifier,值和PUPI一样。。
(3)第六个字节我们称之为参数1,它的编码以及含义如下。
说明:
1)b8和b7比特表示Minimum TR0,含义是PICC响应PCD命令的最小延迟时间。它的编码以及含义如下。
2)b6和b5比特表示Minimum TR1,含义是PICC副载波调制开始到数据传输的最小延迟时间。它的编码以及含义如下。
3)b4比特表示是否需要帧结束标识,0表示需要,1表示不需要。
4)b3比特表示是否需要帧开始标识,0表示需要,1表示不需要。
(4)第七个字节我们称之为参数2。它的编码以及含义如下。
1)b8和b7比特位的编码以及含义如下。
2)b6和b5比特位的编码以及含义如下。
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命令的响应
命令格式
说明:
(1)第一字节分成两部分:高四比特位为Maximum BufferLength 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 命令格式
说明:
(1)第一个字节值为0x50,它是HLTB的命令前缀。
(2)第二到第五个字节是PICC的卡号Identifier,即PUPI。
(3)最后两个字节是CRC_B,计算方法参照ISO14443-3文档。
2.7 HLTB命令响应
命令格式
三、PCD检测PICC过程
流程图
注:
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-REQUESTEDsub-state时,PICC的响应应该遵循下面规则(N是REQB/WUPB命令中的参数):
—-如果N=1,PICC应该发送ATQB并且进入READY-DECLAREDsub-state。
—-如果N>1:
PICC可以采用概率法(PCD检测PICC流程图中的Option 1),并且进入空闲态(Idle State);
PICC采用发送Slot-MARKER命令的方法(PCD检测PICC流程图中的Option 2),一直到槽序号等于R,然后PICC发送ATQB并且进入READY-DECLAREDsub-state。
五、实例(与前面那个一样 这个是英文)
ISO/IEC14443规定了邻近卡(PICC)的物理特性;需要供给能量的场的性质与特征,以及邻近耦合设备(PCDs)和邻近卡(PICCs)之间的双向通信;卡(PICCs)进入邻近耦合设备(PCDs)时的轮寻,通信初始化阶段的字符格式,帧结构,时序信息;非接触的半双功的块传输协议并定义了激活和停止协议的步骤。传输协议同时适用于TYPE A 和 TYPE B。
TYPE A和TYPE B型卡片主要的区别在于载波调制深度及二进制数的编码方式和防冲突机制。
1、 调制解调与编码解码技术 ISO/IEC 14443-1
根据信号发送和接收方式的不同,ISO/IEC14443-3定义了TYPEA、TYPEB两种卡型。它们的不同主要在于载波的调制深度及二进制数的编码方式。
图1:TYEP A、B 接口的通信信号
从PCD向PICC传送信号时,二者是通过13.56Mhz的射频载波传送信号。从PICC向PCD传送信号时,二者均通过调制载波传送信号,副载波频率皆为847KHz。
Type A型卡在读写机上向卡传送信号时,是通过13.65MHz的射频载波传送信号。其采用方案为同步、改进的Miller编码方式,通过100%ASK传送;当卡向读写机具传送信号时,通过调制载波传送信号。使用847kHz的副载波传送Manchester编码。简单说,当表示信息“1”时,信号会有0.3微妙的间隙,当表示信息“0”时,信号可能有间隙也可能没有,与前后的信息有关。这种方式的优点是信息区别明显,受干扰的机会少,反应速度快,不容易误操作;缺点是在需要持续不断的提高能量到非接触卡时,能量有可能会出现波动。
Type B型卡在读写机具向卡传送信号时,也是通过13.65MHz的射频载波信号,但采用的是异步、NRZ编码方式,通过用10%ASK传送的方案;在卡向读写机具传送信号时,则是采用的BPSK编码进行调制。即信息“1”和信息“0”的区别在于信息“1”的信号幅度大,即信号强,信息“0”的信号幅度小,即信号弱。这种方式的优点是持续不断的信号传递,不会出现能量波动的情况;
图2 TYPE A 调制波形
从PCD到PICC的通信信号接口主要区别在信号调制方面,TYPE A调制使用RF工作场的ASK100%调制原理来产生一个“暂停(pause)”状态来进行PCD和PICC间的通信。
TYPE B调制使用RF工作场的ASK10%调幅来进行PCD和PICC间的通信。
调制指数最小应为8%,最大应为14%。
图3 TYPE B 调制波形
根据二者的设计方案不同,可看出,TYPE A 和 TYPE B有以下不同:
◆TYPE B接收信号时,不会因能量损失而使芯片内部逻辑及软件工作停止。在NPAUSE到来,TYPE A的芯片得不到时钟,而TYPE B用10%ASK,卡片可以从读写器获得持续的能量; TYPE B时容易稳压,所以比较安全可靠。TYPE A卡采用100%调制方式,在调制发生时候无能量传输,仅仅靠卡片内部电容维持,所以卡片的通讯必须达到一定的速率,在电容电量耗完之前结束本次调制,否则卡片会复位。
◆负载波采用BPSK调制技术,TYPE B较TYPEA方案降低了6dB的信号燥声,抗干扰能力更强。
◆外围电路设计简单。读写机具到卡及卡到读写机具的编码方式均采用NRZ方案,电路设计对称,设计时可使用简单的UARTS,TYPE B更容易实现。
2、 防冲突机制
ISO/IEC 14443-3规定了TYPEA,TYPEB 的防冲突机制。二者防冲突机制的原理完全不同。前者是基于BIT冲突检测协议,后者则是通过字节、帧及命令完成防冲突。
RFID的核心是防冲突技术,这也是和接触式IC卡的主要区别。
TYPE A PICC防冲突和通信使用标准帧用于数据交换,并按以下顺序组成:
——通信开始;
——n*(8个数据位+奇数奇偶校验位),n≥1。每个字节的LSB首先被发送。每个字节后面跟随
一个奇数奇偶校验位。奇偶校验位P被设置,使在(b1到b8,P)中1s的数目为奇数;
——通信结束。
图4 TYPE A 标准帧
TYPE A PICC的初始化和比特冲突检测协议是当至少两个PICC同时传输带有一个或多个比特位置(该位置内至少有两个PICC在传输补充值)的比特模式时,PCD会检测到冲突。在这种情况下,比特模式合并,并且在整个(100%)位持续时间内载波以负载波进行调制。
图5 TYPE A PICC状态图
TYPE B PICC防冲突和通信初始化期间使用的字节、帧和命令的格式。
PICC和PCD之间的字节通过字符来发送和接收,在防冲突序列期间,字符的格式如下:
——1个逻辑“0”起始位;
——8个数据位发送,首先发送LSB;
——1个逻辑“1”停止位。
最高位 停止位 EGT
起始位 最低位
用一个字符执行一个字节的发送需要10etu,如图18示。
图6 TYPE B字符格式
PCD和PICC按帧发送字符。帧通常用SOF(帧的起始)和EOF(帧的结束)定界。
SOF |
字符 |
EOF |
图7 TYPE B帧格式
在防冲突序列期间,可能发生两个或两个以上的PICC同时响应:这就是冲突。命令集和允许PCD处理冲突序列以便及时分离PICC传输。
在完成防冲突序列后,PICC通信将完全处于PCD的控制之下,每次只允许一个PICC通信。
防冲突方案以时间槽的定义为基础,要求PICC在时间槽内用最小标识数据进行应答。时间槽数被参数化,范围从1到某一整数。在每一个时间槽内,PICC响应的概率也是可控制的。在防冲突序列中,PICC仅被允许应答一次。从而,即便在PCD场中有多个卡,在一个时间槽内也仅有一个卡应答,并且PCD在这个时间槽内能捕获标识数据。根据标识数据,PCD能够与被标识的卡建立一个通信信道。
防冲突序列允许选择一个或多个PICC以便在任何时候进行进一步的通信。
图8 TYPE B PICC状态图
从建立PCD与PICC(CPU卡)之间通信的方面来比较:
TYPE A类型卡片 需要的基本命令有:
l REQA 对A型卡的请求或(WAKE-UP 唤醒)
l ANTICOLLISION 防冲突
l SELECT 选择命令
l RATS 应答响应
图9 TYPE A PICC激活
TYPE B类型卡片 需要的基本命令有:
l REQB 对B型卡的请求
l ATTRIB PICC选择命
TYPE B PICC激活如图8 所示
从以上的比较可以看出:
u TYPE B类型卡片具有使用更少的命令,更快的响应速度来实现防冲突和选择卡片的能力。
u TYPEA的防冲突需要卡片上较高和较精确的时序,因此需要在卡和读写器中分别加更多硬件,而TYPE B的防冲突更容易实现。
目前TYPE A和TYPEB孰优孰劣尚在争议中。TYPE A的产品(Mifare卡)具有更高的市场普及率;但是TYPE B应该在安全性、高速率和适应性方面有更好的前景,代表产品如二代身份证。
本文来自:https://www.msrfid.com/Service/ISO_IEC14443_3_Conflict_Prevention_Collision_Prevention_Algorithm_TypeA_TypeB.html
本文链接:https://blog.nnwk.net/article/1551
有问题请留言。版权所有,转载请在显眼位置处保留文章出处,并留下原文连接
Leave your question and I'll get back to you as soon as I see it. All rights reserved. Please keep the source and links
友情链接:
子卿全栈
全部评论