ISO14443-3

PBOC第八部分和第十一部分关于TYPEA总结(一)

——初始化和防冲突(ISO14443-3)

第八部分 与应用无关的非接触式规范 ISO14443(1~4)

第十一部分 非接触式IC卡通讯规范

在第八部分的基础上,详细规定了非接触式设备和非接触式卡片之间无线通讯协议的有关要求。

PBOC规范,因为不同单位所写,规范中各部分会有重叠和冲突,这篇文档对第八部分和第十一部分进行总结,此部分作用可用于对PCD(读卡器)和PICC(IC卡)数据通讯的底层编写(关于TYPEA协议部分)。

一、初始化和防冲突(ISO14443-3)

1、帧格式(8,P22 11,P19)

定义了下列帧类型:

——用于初始化通信的短帧;

——用于普通命令的标准帧;

——面向位的防冲突命令的防冲突帧。

(1)短帧

用于初始化通讯开始 不加奇偶校验位(TYPEA 奇校验)

——帧开始(SOF)

——从LSB开始传输的7个数据位

——帧结束(EOF)

ISO14443-3

(2)标准帧

用于数据交换

——帧开始(SOF)(从PCD到PICC的通讯,SoF应为逻辑0;从PICC到PCD的通讯,SoF为逻辑1; )

——n*(8个数据位+奇校验位) n>=1;(帧中的每8个数据位应跟一个奇校验位P,设置P值,使得(b1到b8,P)中1的个数为奇数。 )

——帧结束(EOF)EoF为逻辑0(只用于PCD到PICC)

标准帧需发送CRC_A16,除奇校验位、SOF、EOF、CRC_A16本身外,其他的字节数据进行校验,校验结果在数据字节之后,在EOF之前发送

ISO14443-3

(3)面向位的防冲突帧

仅在位帧防冲突环期间使用,并且该帧是带有7个数据字节的标准帧 ,被分离为两部分(数据共7个字节即56位)

——第1部分用于从PCD到PICC的传输;

最小长度应为16数据位;最大长度应为55数据位。

——第2部分用于从PICC到PCD的传输。

最小长度应为1数据位,最大长度应为40数据位。

ISO14443-3

 

 

此例中SEL ‘93’是串联一级的防冲突指令,在指令中会详细介绍

NVB‘40’的高4位‘4’代表传输4个字节(SEL、NVB、UID0、UID1),低4位‘0’代表除整字节外,再发送几个数据位,此例中为0,只发送SEL、NVB、UID0、UID1四个字节

此例实际上是在第4个字节发生了冲突位导致再防冲突指令时,将UID0和

UID1带下去,实际中防冲突指令第一次发的指令是‘93’‘20’

ISO14443-3

分析如下所示

SEL NVB UID0 UID1

93   40

NVB数据的‘4’代表PCD到PICC的4个字节,‘0’代表再加上UID0的0 个位,即发送 SEL NVB UID0 UID1 PICC到PCD返回 UID2 UID3 BCC三个字节

SEL  NVB

93    20

NVB数据的‘2’代表PCD到PICC的2个字节,‘0’代表再加上UID0的0个位 即发送 SEL NVB PICC到PCD返回 UID0 UID1 UID2 UID3

2、PICC状态(8,P26 11,P42)

PICC状态图

(1) IDLE状态

描述: 在IDLE状态中,PICC被加电。它听从命令并能识别REQA和WUPA命令。

状态跳出条件和转换: 在接收到有效的REQA或WUPA命令后,PICC进入READY状态并发送其ATQA。

ISO14443-3

ISO14443-3

(2)READY状态

描述: 在READY状态,位帧防冲突和专有的防冲突方法都可以应用。串联级别在这一状态内被处理以获取完整的UID。

状态跳出条件和转换: 当根据其完整UID选中它时,PICC进入ACTIVE状态。

要求:PICC

在接收到有效的ANTICOLLISION CL1命令并且发送了其UID CL1后,PICC应保持READY状态 ;

在接收到和其UID CL1匹配的有效SELECT CL1命令并发送了其SAK后,1级UID的PICC应进入ACTIVE状态。PICC应在SAK响应中指明UID是完整的。1级UID的PICC没有 READY’和READY”状态 ;

在接收到和其UID CL1匹配的有效SELECT CL1命令并发送了其SAK后.,2级或3级UID的PICC应进入READY’状态

(3)READY’状态

本条的要求适用于处于READY’状态的PICC。READY’状态是一个中间状态,仅2级和3级UID的PICC存在此状态。在READY’状态,UID的串联级别1已被选择。

在接收到有效的ANTICOLLISION CL2命令并发送其UID CL2后,PICC应保持READY’状态;

在接收到和其UID CL2匹配的有效SELECT CL2命令并发送其SAK后,2级UID的PICC应进入ACTIVE状态。PICC应在其SAK响应中指示UID是完整的。2级UID的PICC没有READY”状态;

在接收到和其UID CL2匹配的有效SELECT CL2命令并发送其SAK后,3级UID的PICC应进入READY”状态;

在其它情况下,PICC应返回到IDLE状态,并不应发送响应至PCD

(4)READY”状态

本条的要求适用于处于READY”状态的PICC。READY”状态是一个中间状态,仅3级UID的PICC存在此状态。在READY”状态,UID的串联级别1和2已被选择。

要求: Type A-READY” 状态

在接收到有效的ANTICOLLISIOIN CL3命令并发送其UID CL3后,PICC应保持READY”状态 ;

在接收到和其UID CL3匹配的有效SELECT CL3命令并发送其SAK后,3级UID的PICC应进入ACTIVE状态。PICC应在SAK响应中指明UID是完整的;

在其它情况下,PICC应返回IDLE状态,并且不应发送响应至PCD;

3、命令集 (8,P26 11,P42)

(1)REQA和WUPA命令(寻卡指令)

以探测工作场中的Type A PICC。短帧

REQA = 26 对未睡眠卡有效

WUPA = 52 对所有卡有效

WUPA响应(ATQA)

含 CRC_A的标准帧传输

当PCD发出WUPA请求时,TYPEA PICC将根据其状态返回两个字节的ATQA,

ISO14443-3

现遇到的ATQA(特征值)0820 可能为CPU卡或PBOC3.0卡

0428 可能为CPU卡、M1卡、PBOC3.0卡

0408、0400 为M1卡

实际这些是根据使用情况判断,第一字节的08和04只代表UID长度为1级4个字节(b8 b7 为0 0); b5~b0表示位帧防冲突,需要进行位帧防冲突环而不是专有防冲突;UID长度为1级时可能是(M1 S50),UID长度为2级时可能是(M1 S70)

(2) ANTICOLLISION(防冲突) (含 CRC_A的标准帧传)

ANTICOLLISION命令用于获得一张Type A PICC完整的UID,并检测工作场内是否存在多张Type A PICC。

byte 1    Byte2

SEL         20

SEL 93 防冲突串联级别1

      95 防冲突串联级别2

      97 防冲突串联级别3

ANTICOLLISION响应:

响应信息长度固定5字节。 响应采用无CRC_A的标准帧传输

ISO14443-3

(3)SELECT(选卡) 采用带有CRC_A的标准帧传输

SELECT命令通过使用Type A PICC的UID来选择该PICC。

ISO14443-3

SELECT确认响应(SAK)

SAK的长度为1个字节,使用带有CRC_A的标准帧传输

ISO14443-3

位b3=1 UID不完整 忽略b6位,b3=0 UID完整判断 b6,b6=1符合ISO14443A-4 b6=0不符合ISO14443A-4 M1应该不符合14443A-4协议

防冲突是要返回PICC的UID所以 SEL+ NVB(20)(SEL和NVB 两个字节)

选卡是要根据PICC的UID**卡片所以 SEL+NVB(70) +UID(4个字节)(SEL、NVB、UIDs 共7个字节)

ISO14443-3

防冲突环

流程

1、发送 93 20 返回5个字节

2、判断第一个字节是否是CT(0x88)

否 ,说明是1级UID 返回的是 UID0 UID1 UID2 UID3 BCC 防冲突环停止

是,说明大于1级UID进入3 返回的是 CT UID0 UID1 UID2 BCC

3、发送 95 20 返回5个字节

4、判断第一个字节是否是CT(0x88)

否,说明是2级UID,返回的是 UID3 UID4 UID5 UID6 BCC 防冲突环停止

是,说明是3级UID,进入5 近观回的是CT UID3 UID4 UID5 BCC

5、发送97 20,返回5个字节

返回的是UID6 UID7 UID8 UID9 BCC

BCC是前4个字节的异或值 UID0是最高有效字节

或检查SELECT的返回响应SAK的串联标志,REQA或RUWA(寻卡)的返回响应ATQA也有串联级数的定义

防冲突和选择

每个串联级别范围内的防冲突环

下面算法应适用于防冲突环:

——步骤1:PCD为选择的防冲突类型和串联级别分配了带有编码的SEL;

——步骤2:PCD分配了带有值为‘20’的NVB;

注:该值定义了该PCD将不发送UID CLn的任何部分。因此该命令迫使工作场内的所有PICC以其完整的UID CLn表示响应。

——步骤3:PCD发送SEL和NVB;

——步骤4:工作场内的所有PICC应使用它们的完整的UID CLn响应;

——步骤5:假设场内的PICC拥有唯一***,那么,如果一个以上的PICC响应,则冲突发生。如果没有冲突发生,则步骤6到步骤10可被跳过;

——步骤6:PCD应识别出第一个冲突的位置;

——步骤7:PCD分配了带有值的NVB,该值规定了UID CLn有效位数。这些有效位应是PCD所决定的冲突发生之前被接收到的UID CLn的一部分再加上(0)b或(1)b。典型的实现是增加(1)b;

——步骤8:PCD发送SEL和NVB,后随有效位本身;

——步骤9:只有PICC的UID CLn中的一部分等于PCD所发送的有效位时,PICC才应发送其UID CLn的其余部分;

——步骤10:如果出现进一步的冲突,则重复步骤6~9。最大的环数目是32;

——步骤11:如果不出现进一步的冲突,则PCD分配带有值为‘70’的NVB;

注:该值定义了PCD将发送完整的UID CLn。

——步骤12:PCD发送SEL和NVB,后随UID CLn的所有40个位,后面又紧跟CRC_A校验和;

——步骤13:它的UID CLn与40个位匹配,则该PICC以其SAK表示响应;

——步骤14:如果UID完整,则PICC应发送带有清空的串联级别位的SAK,并从READY状态转换到ACTIVE状态,或从READY*状态转换到ACTIVE*状态;

——步骤15:PCD应检验SAK的串联位是否被设置,以决定带有递增串联级别的进一步防冲突环是否应继续进行。

如果PICC的UID是已知的,则PCD可以跳过步骤2~10来选择该PICC,而无需执行防冲突环。

ISO14443-3

 

ISO14443-3

ISO14443-3

下列算法应适用于PCD以获得完整UID:

——步骤1:PCD选择串联级别1;

——步骤2:应执行防冲突环;

——步骤3:PCD应检验SAK的串联位;

——步骤4:如果设置了串联位,PCD应增加串联级别并初始化一个新的防冲突环

(4)HLTA(采用带有CRC_A的标准帧传输)

命令用于使处于轮询和移出过程中的PICC返回IDLE状态。

HLTA命令包含两个字节, 50 00

PICC对HLTA命令不做任何响应,PCD总是假设PICC已经确认收到HLTA命令。

ISO14443-3