中国金融集成电路(IC)卡
非接触式规范
二零零四年五月
前 言
技术的进步给银行卡支付业务带来了令人振奋的机会和更多的业务渠道,如:移动电话、电子商务、非接触IC卡技术等新的支付技术正在蓬勃发展,特别是非接触式IC卡技术在交通、门禁、快餐等行业得到了广泛应用。因此,愈来愈多的银行卡跨国公司、国家和地区都在积极进行非接触式金融IC卡试点,加大了对非接触式应用的开发和推广力度。
在国内,非接触式IC卡在行业应用中也获得了长足发展,由于《中国金融集成电路(IC)卡规范(V1.0)》针对接触式IC卡片,因此,各发卡机构没有统一的非接触式规范可以遵循,为了保持成员银行在卡支付领域的竞争优势、开拓新的支付市场、拓展金融IC卡应用、更加方便持卡人,“《中国金融集成电路(IC)卡规范》修订工作组”制订了《中国金融集成电路(IC)卡-非接触式规范》(以下简称《本规范》),作为《中国金融集成电路(IC)卡规范》修订标准的一部分。
《本规范》在内容上与与ISO/IEC 14443标准等同,增加了激活和关闭非接触式通道两条指令。
《本规范》适用于由银行发行或受理的带有非接触式金融IC卡应用。其使用对象是与非接触式金融IC卡应用相关的卡片设计、制造、发行、管理,及应用系统的研制、开发、集成和维护等部门(单位),也可供非金融IC卡应用参考。
本规范由×××提出。
本规范由×××批准。
本规范由×××归口。
本规范起草单位×××。
本规范主要起草人×××。
本规范得到×××的协助。
目 次
1 范围 1
2 引用标准 2
3 术语和定义 3
3.1 集成电路 Integrated circuit(s)(IC) 3
3.2 无触点的 Contactless 3
3.3 无触点集成电路卡 Contactless integrated circuit(s) card 3
3.4 接近式卡 Proximity card(PICC) 3
3.5 接近式耦合设备 Proximity coupling device(PCD) 3
3.6 位持续时间 Bit duration 3
3.7 二进制移相键控 Binary phase shift keying 3
3.8 调制指数 Modulation index 3
3.9 不归零电平 NRZ-L 3
3.10 副载波 Subcarrier 3
3.11 防冲突环 anticollision loop 3
3.12 比特冲突检测协议 bit collision detection protocol 3
3.13 字节 byte 3
3.14 冲突 collision 3
3.15 基本时间单元(etu) elementary time unit(etu) 3
3.16 帧 frame 3
3.17 高层 higher layer 4
3.18 时间槽协议 time slot protocol 4
3.19 唯一识别符 Unique identifier(UID) 4
3.20 块 block 4
3.21 无效块 invalid block 4
4 符号和缩略语 5
5 物理特性 8
5.1 一般特性 8
5.2 尺寸 8
5.3 附加特性 8
5.3.1 紫外线 8
5.3.2 X-射线 8
5.3.3 动态弯曲应力 8
5.3.4 动态扭曲应力 8
5.3.5 交变磁场 8
5.3.6 交变电场 8
5.3.7 静电 8
5.3.8 静态磁场 8
5.3.9 工作温度 9
6 射频功率和信号接口 9
6.1 PICC的初始对话 9
6.2 功率传送 9
6.2.1 频率 9
6.2.2 工作场 9
6.3 信号接口 9
6.4 A类通信信号接口 10
6.4.1 从PCD到PICC的通信 10
6.4.2 从PICC到PCD的通信 12
6.5 B类通信信号接口 13
6.5.1 PCD到PICC的通信 13
6.5.2 PICC到PCD的通信 13
6.6 PICC最小耦合区 14
7 初始化和防冲突 16
7.1 轮询 16
7.2 类型A-初始化和防冲突 16
7.2.1 字节、帧、命令格式和定时 16
7.2.2 PICC状态 20
7.2.3 命令集 21
7.2.4 选择序列 22
7.3 类型B 初始化和防冲突 27
7.3.1 比特、字节和帧的定时 27
7.3.2 CRC_B 29
7.3.3 防冲突序列 29
7.3.4 PICC状态描述 30
7.3.5 命令集合 32
7.3.6 ATQB和Slot-MARKER响应概率规则 32
7.3.7 REQB命令 32
7.3.8 Slot-MARKER命令 34
7.3.9 ATQB(请求应答-类型B)响应 34
7.3.10 ATTRIB命令 35
7.3.11 对ATTRIB命令的应答 37
7.3.12 HALT命令及应答 37
8 传输协议 39
8.1 类型A PICC的协议激活 39
8.1.1 选择应答请求 41
8.1.2 选择应答 41
8.1.3 协议和参数选择请求 44
8.1.4 协议和参数选择响应 46
8.1.5 激活帧等待时间 46
8.1.6 差错检测和恢复 46
8.2 类型B PICC的协议激活 47
8.3 半双工块传输协议 47
8.3.1 块格式 47
8.3.2 帧等待时间(FWT) 50
8.3.3 帧等待时间扩展 50
8.3.4 功率水平指示 51
8.3.5 协议操作 51
8.4 类型A和类型B PICC的协议停活 53
8.4.1 停活帧等待时间 54
8.4.2 差错检测和恢复 54
9 数据元和命令 55
9.1 关闭非接触通道命令 55
9.1.1 定义和范围 55
9.1.2 命令报文 55
9.1.3 命令报文数据域 55
9.1.4 响应报文数据域 55
9.1.5 响应报文状态码 55
9.2 激活非接触通道命令 56
9.2.1 定义和范围 56
9.2.2 命令报文 56
9.2.3 命令报文数据域 56
9.2.4 响应报文数据域 56
9.2.5 响应报文状态码 56
附 录 A: 标准兼容性和表面质量 57
A.1. 标准兼容性 57
A.2. 印刷的表面质量 57
附 录 B: ISO/IEC其他卡标准参考目录 58
附 录 C: 类型A的通信举例 59
附 录 D: CRC_A和CRC_B的编码 61
D.1. CRC_A编码 61
D.1.1. 通过标准帧发送的比特模式举例 61
D.2. CRC_B编码 61
D.2.1. 通过标准帧传送的比特模式实例 61
D.2.2. 用C语言写的CRC计算的代码例子 62
附 录 E: 类型A_时间槽-初始化和防冲突 65
E.1. 术语和缩略语 65
E.2. 比特、字节和帧格式 65
E.2.1. 定时定义 65
E.2.2. 帧格式 65
E.3. PICC状态 65
E.3.1. POWER-OFF状态 65
E.3.2. IDLE状态 66
E.3.3. READY状态 66
E.3.4. ACTIVE状态 66
E.3.5. HALT状态 66
E.4. 命令/响应集合 66
E.5. 时间槽防冲突序列 66
附 录 F: 详细的类型A PICC状态图 68
附 录 G: 使用多激活的举例 70
附 录 H: 协议说明书 71
H.1. 记法 71
H.2. 无差错操作 71
H.2.1. 块的交换 71
H.2.2. 等待时间扩展请求 71
H.2.3. DESELECT 71
H.2.4. 链接 72
H.3. 差错处理 72
H.3.1. 块的交换 72
H.3.2. 等待时间扩展请求 73
H.3.3. DESELECT 75
H.3.4. 链接 75
附 录 I: 块和帧编码概览 78
本规范包括以下主要内容:
-物理特性:规定了接近式卡(PICC)的物理特性。本部分等同于ISO/IEC 14443-1内容。
-射频功率和信号接口:规定了在接近式耦合设备(PCDs)和接近式卡(PICCs)之间提供功率和双向通信的场的性质与特征。本部分没有规定产生耦合场的方法,也没有规定遵循电磁场辐射和人体辐射安全的规章。本部分等同于ISO/IEC 14443-2内容。
-初始化和防冲突:本规范描述了PICC进入PCD工作场的轮询;在PCD和PICC之间通信的初始阶段期间所使用的字节格式、帧和定时;初始REQ和ATQ命令内容;探测方法和与几个卡(防冲突)中的某一个通信的方法;初始化PICC和PCD之间的通信所需要的其它参数;容易和加速选择在应用准则基础上的几个卡中的一个(即,最需要处理的一个)的任选方法。本部分等同于ISO/IEC 14443-3内容。
-传输协议:规定了以无触点环境中的特殊需要为特色的半双工传输协议,并定义了协议的激活和停活序列。这一部分适用于类型A和类型B的PICC。本部分等同于ISO/IEC 14443-4内容。
-数据元和命令集:定义了金融应用中关闭和激活非接触式通道所使用的一般数据元、命令集和对终端响应的基本要求。
下列标准中所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。
ISO/IEC 3309:1993 |
信息技术-系统间的远程通信和信息交换-高级数据链接控制(HDLC)规程-帧结构 |
ISO/IEC 7810:1995 |
识别卡 物理特性 |
ISO/IEC 7816-3 |
识别卡 带触点的集成电路卡 第3部分:电信号和传输协议 |
ISO/IEC 7816-4 |
识别卡 带触点的集成电路卡 第4部分:行业间交换用命令 |
ISO/IEC 7816-5 |
识别卡 带触点的集成电路卡 第5部分:应用标识符的编号体系和注册规程 |
IEC 61000-4-2 |
电磁兼容性(EMC) 第4部分:测试和测量技术 第2节:抗静电放电测试 |
ISO/IEC 10373-6 |
识别卡-测试方法 |
ISO/IEC 14443:1997 |
识别卡-非接触式集成电路卡-接近式卡 |
《中国金融集成电路(IC)卡规范V1.0》 |
|
《中国金融集成电路(IC)卡规范V2.0》电子钱包/电子存折部分(简称为《电子钱包/电子存折规范》) |
用于执行处理和/或存储功能的电子器件。
说明完成与卡交换信号和给卡供应能量,而无需使用通电流元件(即,不存在从外部接口设备到卡内所包含集成电路的直接通路)。
一种ID-1型卡(如ISO/IEC 7810中所规定),在它上面已装入集成电路,并且与集成电路的通信是用无触点的方式完成的。
一种ID-1型卡,在它上面已装入集成电路和耦合电路,并且与集成电路的通信是通过与接近式耦合设备的电感耦合完成的。
用电感耦合给PICC提供能量并控制与PICC交换数据的读/写设备。
确定一逻辑状态的时间,在这段时间结束时,一个新的位将开始。
移相为180°的移相键控,从而导致两个可能的相位状态。
定义为[a-b]/[a+b],其中a,b分别是信号幅度的峰值和最小值。
位编码的方式,借此,位持续期间的逻辑状态可以通过通信媒介的两个已定义的物理状态之一来表示。
以频率fs调制载波频率fc而产生的RF信号。
为了在PCD激励场中准备PCD和几个PICC中的一个或多个之间的对话所使用的算法。
在帧内比特级使用冲突检测的防冲突方法。冲突出现在至少两个PICC把互补比特模式发送给PCD时。在这种情况下,比特模式被合并,在整个(100%)位持续时间内载波以副载波来调制。
PCD检测出碰撞比特并按串联次序识别所有PICC ID。
由指明的8位数据b1到b8组成,从最高有效位(MSB,b8)到最低有效位(LSB,b1)。
在同一PCD激励场中并且在同一时间周期内两个PICC的传输,使得PCD不能辨别数据是从哪一个PICC发出的。
对于本部分,基本时间单元(etu)定义如下:
1etu=128/fc,(即9.4 µs,标称的)。
帧是一序列数据位和任选差错检测位,它在开始和结束处有定界符。
注:类型A PICC使用为类型A定义的标准帧,类型B PICC使用为类型B定义的标准帧。
属于应用或高层协议,它不在本部分描述。
PCD与一个或多个PICC建立逻辑通道的方法,该方法对于PICC响应使用时间槽定位,类似于slotted-Aloha 方法。
UID是类型A防冲突算法所需的一个编号。
帧的一种特殊类型,它包含有效协议数据格式。
注:有效协议数据格式包括I-块、R-块或S-块。
帧的一种类型,它包含无效协议格式。
注:没有接收到帧的超时不被解释为一无效块。
ACK |
肯定确认 |
AFI |
应用族识别符,应用的卡预选准则。 |
APa |
在ATQB中使用的防冲突前缀a |
APc |
在属性中使用的防冲突前缀c |
APf |
在REQB中使用的防冲突前缀f |
APn |
在Slot-MARKER命令中使用的防冲突前缀n |
ASK |
移幅键控 |
ATA |
属性应答 |
ATQ |
请求应答 |
ATQA |
请求应答,类型A |
ATQB |
请求应答,类型B |
ATS |
选择应答 |
ATTRIB |
PICC选择命令 |
BCC |
UID CLn校验字节, 4个先前字节的“异或”值 |
BPSK |
二进制移相键控 |
CID |
卡标识符 |
CLn |
串联级n,3≥n≥1 |
CRC |
循环冗余校验,如第7章中为每种类型的PICC所定义的 |
CRC_A |
7.2.1.10中定义的循环冗余校验差错检测码 |
CRC_B |
7.3.2中定义的循环冗余校验差错检测码 |
CT |
串联标记,‘88’ |
D |
除数 |
DESEL |
取消选定命令 |
DR |
接收的除数(PCD到PICC) |
DRI |
接收的除数整数(PCD到PICC) |
DS |
发送的除数(PICC到PCD) |
DSI |
发送的除数整数(PICC到PCD) |
E |
通信结束,类型A |
EDC |
差错检测码 |
EGT |
额外保护时间 |
EOF |
帧结束,类型B |
etu |
基本时间单元,1比特数据传输的持续时间 |
fc |
载波频率(作场的频率,13.56MHz) |
FGT |
帧保护时间 |
fs |
副载波调制频率 |
FSC |
接近式卡帧长度 |
FSCI |
接近式卡帧长度整数 |
FSD |
接近式耦合设备帧长度 |
FSDI |
接近式耦合设备帧长度整数 |
FWI |
帧等待时间整数 |
FWT |
帧等待时间 |
FWTTEMP |
临时帧等待时间 |
HALT |
类型A PICC暂停命令 |
I-block |
信息块 |
ID |
标识号 |
INF |
属于高层的信息字段 |
LSB |
最低有效位 |
MAX |
最大值 |
MIN |
最小值 |
MSB |
最高有效位 |
N |
防冲突槽的数目或每个槽内PICC响应的概率 |
n |
变量整数值,如特定条款中所定义 |
NAD |
结点地址 |
NAK |
否定确认 |
NRZ-L |
不归零电平,(L为电平) |
NVB |
有效位的数目 |
OOK |
on/off keying,开/关键控 |
OSI |
开放系统互连 |
P |
奇校验位 |
PARAM |
属性格式中的参数 |
PCB |
协议控制字节 |
PCD |
接近式耦合设备(读写器) |
PICC |
接近式卡 |
PPS |
协议和参数选择 |
PPS0 |
协议和参数选择参数0 |
PPS1 |
协议和参数选择参数1 |
PPSS |
协议和参数选择开始 |
PUPI |
伪唯一PICC标识符 |
R |
防冲突序列期间PICC所选定的槽号 |
R(ACK) |
包含肯定确认的R-块 |
R(NAK) |
包含否定确认的R-块 |
RATS |
选择应答请求 |
R-block |
接收准备块 |
REQA |
请求命令,类型A |
REQB |
请求命令,类型B |
RF |
射频 |
RFU |
保留供将来使用 |
rms |
有效值 |
S |
通信开始,类型A |
SAK |
选择确认 |
S-block |
管理块 |
SEL |
选择命令 |
SFGI |
启动帧保护时间整数 |
SFGT |
启动帧保护时间 |
SOF |
帧的开始,类型B |
TR0 |
PCD off和PICC on之间静默的最小延迟。(仅类型B) |
TR1 |
PICC数据传输之前最小副载波的持续期。(仅类型B) |
UID |
唯一标识符 |
UIDn |
唯一标识符的字节数目n,n≥0 |
WTX |
等待时间延迟 |
WTXM |
等待时间延迟乘数 |
WUPA |
类型A PICC唤醒命令 |
本部分使用下列记法:
(xxxxx)b 数据位表示
‘XY’ 十六进制记法,等同于基数16的XY
PICC应具有与ISO/IEC 7810中为ID-1型卡规定的要求相应的物理特性。
PICC的额定尺寸应是ISO/IEC 7810中规定的ID-1型卡的尺寸。
注:根据国内生产情况,PICC的厚度可以为0.76±0.08mm(双界面卡除外)。
本标准不包括保护PICC不受到超出正常水平剂量紫外线的影响。需要加强防护的部分应是卡制造商的责任并应注明可以承受紫外线的程度。
卡的任何一面暴露于100KeV的中等能量X-射线(每年0.1Gy的累积剂量)后,应不引起该卡的失效。
注:这相当于人暴露其中能接受的最大值的年累积剂量的近似两倍。
按照ISO/IEC 10373-6中描述的测试方法(其中短边和长边的最大偏移为hwA=20mm,hwB=10mm)测试后,PICC应能继续正常工作。
按照ISO/IEC 10373-6中描述的测试方法(其中旋转角度α等于15°)测试后,PICC应能继续正常工作。
a)在下表给出的平均磁场强度的磁场内暴露后,PICC应能继续正常工作。
表格 51:磁场强度与频率
频率范围(MHz) |
平均磁场强度(A/m) |
平均时间(min) |
0.3~3.0 |
1.63 |
6 |
3.0~30 |
4.98/f |
6 |
30~300 |
0.163 |
6 |
磁场的峰值强度被限制在磁场平均强度的30倍。
b)在12A/m、13.56MHz频率的磁场中暴露后,PICC应能继续正常工作。
在下表给出的平均电场强度的电场内暴露后,PICC应能继续正常工作。
表格 52:电场强度与频率
频率范围(MHz) |
平均电场强度(V/m) |
平均时间(min) |
0.3—3.0 |
0.614 |
6 |
3.0—30 |
1842/f |
6 |
30—300 |
61.4 |
6 |
电场的峰值强度被限制在电场平均强度的30倍。
按照ISO/IEC 10373-6中描述的测试方法(其中测试电压为6kV)测试后,PICC应能继续正常工作。
在640kA/m的静态磁场内暴露后,PICC应能继续正常工作。
警告:磁条上的数据内容可能被这样的磁场擦去。
在0℃到50℃的环境温度范围内,PICC应能正常工作。
PCD和PICC之间的初始对话通过下列连续操作进行:
——PCD的RF工作场激活PICC
——PICC静待来自PCD的命令
——PCD传输命令
——PICC传输响应
这些操作使用下列条款中规定的射频功率和信号接口。
PCD应产生给予能量的RF场,为传送功率,该RF场与PICC进行耦合,为了通信,该RF场应被调制。
RF工作场频率(fc)应为13.56MHz±7kHz。
最小未调制工作场为Hmin,其值为1.5A/m(rms)。
最大未调制工作场为Hmax,其值为7.5A/m(rms)。
PICC应按预期在Hmin和Hmax之间持续工作。
PCD应在制造商规定的位置(工作空间)处产生一个最小为Hmin,但不超过Hmax的场。
另外,在制造商规定的位置(工作空间),PCD应能将功率提供给任意的PICC。
在PICC的任何可能位置内,PCD应不产生高于在5.3.5中规定的交变磁场。
PCD工作场的测试方法在国际标准ISO/IEC 10373-6中规定。
两种通信信号接口A类和B类在下列各条中予以描述。
在检测到A类或B类的PICC存在之前,PCD应选择两种调制方法之一。
在检测到A类或B类的PICC存在之前,即PCD处于闲置状态时,PCD应该轮流使用A类和B类的调制方式,来探测这两类PICC。
在通信期间,直到PCD停止通信或PICC移走,只有一个通信信号接口可以是有效的。然后,后续序列可以使用任一调制方法。
下图是下面几个部分描述概念的示意图。
*也可能数据反相
图表 61:A类、B类接口的通信信号举例
在初始化和防冲突期间,传输的数据波特率应为fc/128(~106kbps)。
使用RF工作场的ASK100%调制原理来产生一个如图6-2所示的“暂停(pause)”状态来进行PCD和PICC间的通信。
PCD场的包络线应单调递减到小于其初始值HINITIAL的5%,并至少在t2时间内保持小于5%。该包络线应符合图表 62。
如果PCD场的包络线不单调递减,则当前最大值和在当前最大值前通过相同值的时间之间的时间应不超过0.5μs。如果当前最大值大于HINITIAL的5%,这种情况才适用。
上冲应保持在HINITIAL的90%和110%之内。
在场超出HINITIAL的5%之后和超出HINITIAL的60%之前,PICC应检测到“暂停(pause)结束”。
注:在设计成一个时间内仅处理一张卡的系统中,t4不必加以考虑。
图表 62
:暂停
注:该定义适用于所有调制包络定时。
图表 63:暂停结束的定义
定义了下面的序列:
序列X |
在64/fc时间后,一个“暂停(pause)”应出现。 |
序列Y |
在整个位持续时间(128/fc),没有调制出现。 |
序列Z |
在位持续时间开始时,一个“暂停(pause)”应出现。 |
上面的序列用于编码下面的信息:
逻辑“1” |
序列X |
逻辑“0” |
序列Y带有下列两种异常情况: 序列Y,除了下列两种异常情况: ⅰ)如果有两个或两个以上的连续“0”,则序列Z应从第二个“0”处开始被使用。 ⅰ)如果有两个或两个以上的连续“0”,则从第二个“0”开始的所有连续的“0”被序列Z表达。
ⅱ)如果在起始帧后的第一位是“0”,则序列Z应被用来表示它,并且以后直接紧跟着任何个“0”。 ⅱ)如果在起始帧后的第一位是“0”,它以及它之后直接紧跟着的所有的“0”用序列Z表达。
|
通信的开始 |
序列Z |
通信的结束 |
逻辑“0”,后面跟随着序列Y
|
没有信息 |
至少两个序列Y |
在初始化和防冲突期间,传输的数据波特率应为fc/128(~106kbps)。
PICC应能经由电感耦合区域与PCD通信,在该区域中,所加载的载波频率能产生频率为fs的副载波。该副载波应能通过切换PICC中的负载来产生。
在以测试方法描述的方法测试时,负载调制幅度应至少为30/H1.2 mV(峰值),其中H是以A/m为单位的磁场强度的(rms)值。
PICC负载调制的测试方法在国际标准ISO/IEC 10373-6中定义。
副载波负载调制的频率fc应为fc/16(~847kHz),因此,在初始化和防冲突期间,一个位持续时间等于8个副载波周期。
每一个位持续时间均以已定义的与副载波相关的相位开始。位周期以已加载的副载波状态开始。
副载波由“接通”/“断开”键控按6.4.2.5定义的序列来调制。
位编码应是带有下列定义的曼彻斯特编码:
序列D |
对于位持续时间的第1个1/2(50%),载波应以副载波来调制。 |
序列E |
对于位持续时间的第2个1/2(50%),载波应以副载波来调制。 |
序列F |
对于1个位持续时间,载波不以副载波来调制。 |
逻辑“1” |
序列D |
逻辑“0” |
序列E |
通信开始 |
序列D |
通信结束 |
序列F |
没有信息 |
没有副载波 |
在初始化和防冲突期间,传输的数据波特率应为fc/128(~106kbps)。容差和位边界在第7章中定义。
借助RF工作场的ASK10%调幅来进行PCD和PICC间的通信。
调制指数最小应为8%,最大应为14%。
调制波形应符合图表 64,调制的上升、下降沿应该是单调的。
图表 64
:类调制波形
位编码格式是带有如下定义的逻辑电平的NRZ-L:
逻辑“1”: 载波场高幅度(没有使用调制)。
逻辑“0”: 载波场低幅度。
在初始化和防冲突期间,传输的数据波特率应为fc/128(~106kbps)。
PICC应能经由电感耦合区域与PCD通信,在该区域中,所加载的载波频率能产生频率为fs的副载波。该副载波应能通过切换PICC中的负载来产生。
在以测试方法描述的方法测试时,负载调制幅度应至少为30/H1.2 mV(峰值),其中H是以A/m为单位的磁场强度的rms值。
PICC负载调制的测试方法在国际标准ISO/IEC 10373-6中定义。
副载波负载调制的频率fc应为fc/16(~847KHz),因此,在初始化和防冲突期间,一个位持续时间等于8个副载波周期。
PICC仅当数据被发送时才产生一副载波。
副载波应按图表 65中所描述的进行BPSK调制。移相应仅在副载波的上升或下降沿的标称位置发生。
图表 65:允许的移相(PICC内部副载波负载切换)
位编码应是NRZ-L,其中,逻辑状态的改变应通过副载波的移相(180°)来表示。
在PICC帧的开始处,NRZ-L的初始逻辑电平是通过下面的序列建立的:
在来自PCD的任何命令之后,在保护时间TR0内,PICC应不生成副载波。TR0应大于64/fs。
然后,在延迟TR1之前,PICC应生成没有相位跃变的副载波,建立了副载波相位基准Φ0。TR1应大于80/fs。
副载波的初始相位状态Φ0应定义为逻辑“1”,从而第一个相位跃变表示从逻辑“1”到逻辑“0”的跃变。
随后逻辑状态根据副载波相位基准来定义:
Φ0 |
逻辑状态1 |
Φ0+180° |
逻辑状态0 |
PICC耦合天线可以有任何形状和位置,但应如图表 66所示围绕区域。
图表 66:PICC最小耦合区
当PICC暴露于未调制的工作场内(见第6 章),它能在5ms内接受一个请求。
例如:
当类型A PICC接收到任何类型B命令时,它能在5ms内接受一个REQA。
当类型B PICC接收到任何类型A命令时,它能在5ms内接受一个REQB。
为了检测进入其激励场的PICC,PCD发送重复的请求命令并寻找ATQ。请求命令应按任何顺序使用这里描述的REQA和REQB,此外,也可能使用10.5中描述的其他编码。这个过程被称为轮询。
本章描述了适用于类型A PICC的比特冲突检测协议。
本章定义了通信初始化和防冲突期间使用的字节、帧与命令的格式和定时。关于比特表示和编码,参考第6 章。
帧延迟时间(FDT)定义为在相反方向上所发送的两个帧之间的时间。
帧保护时间(FGT)定义为最小帧延迟时间。
PCD所发送的最后一个暂停的结束与PICC所发送的起始位范围内的第一个调制边沿之间的时间,它应遵守图表 71中定义的定时,此处n为一整数值。
图表 71:PICC到PCD的帧延迟时间
图表 71:PCD到PICC的帧延迟时间
表格 71定义了n和依赖于命令类型的FDT的值以及这一命令中最后发送的数据位的逻辑状态。
表格 71:PCD到PICC的帧延迟时间
命令类型 |
n(整数值) |
FDT |
|
|
|
最后一位=(1)b |
最后一位=(0)b |
REQA命令 WAKE-UP命令 ANTICOLLISION命令 SELECT命令 |
9 |
1236/fc |
1172/fc |
所有其它命令 |
≥9 |
(n*128+84)/fc |
(n*128+20)/fc |
注:值n=9意味着场中的所有PICC应以防冲突所需的同步方式进行响应。
对于所有的其他命令,PICC应确保起始位范围内的第一个调制边沿与图表 71中定义的位格对齐。
PICC所发送的最后一个调制与PCD所发送的第一个暂停之间的时间,它应至少为1172/fc。
请求保护时间定义为两个连续请求命令的起始位间的最小时间。它的值为7000/fc。
对于比特冲突检测协议,定义下列帧类型:
请求和唤醒帧用来初始化通信并按以下次序组成:
通信开始
7个数据位发送,LSB首先发送。(标准REQA的数据内容是‘26’,WAKE-UP请求的数据内容是‘52’)
通信结束
不加奇偶校验位。
图表 72:REQA帧
标准帧用于数据交换并按以下次序组成
通信开始
n*(8个数据位+奇数奇偶校验位),n≥1。每个数据字节的LSB首先被发送。每个数据字节后面跟随一个奇数奇偶校验位。
通信结束
图表 73:标准帧
当至少两个PICC发送不同比特模式到PCD时可检测到冲突。这种情况下,至少一个比特的整个位持续时间内,载波以副载波进行调制。
面向比特的防冲突帧仅在比特帧防冲突环期间使用,并且事实上该帧是带有7个数据字节的标准帧,它被分离成两部分:第1部分用于从PCD到PICC的传输,第2部分用于从PICC到PCD的传输。
下列规则应适用于第1部分和第2部分的长度:
规则1:数据位之和应为56
规则2:第1部分的最小长度应为16个数据位
规则3:第1部分的最大长度应为55个数据位
从而,第2部分的最小长度应为1个数据位,最大长度应为40个数据位。
由于该分离可以出现在一个数据字节范围内的任何比特位置,故定义了两种情况:
FULL BYTE情况:在完整数据字节后分离。在第1部分的最后数据位之后加上一个奇偶校验位。
SPLIT BYTE情况:在数据字节范围内分离。在第1部分的最后数据位之后不加奇偶校验位。
下面全字节情况和分离字节情况的例子定义了位的组织结构和位传输的次序。
注:这些例子包含NVB和BCC的正确值。
图表 74:面向比特的防冲突帧的比特组织结构和传输,FULL BYTE情况
图表 75
:面向比特的防冲突帧的比特组织结构和传输,SPLIT BYTE情况
对于SPLIT BYTE,PCD应忽略第二部分的第一个奇偶校验位。
CRC_A编码和校验过程在ITU-T建议的V.41第2段中定义。用来生成校验位的生成多项式为x16 + x12 + x5 + 1。初始值应为‘6363’。CRC_A应被添加到数据字节中并通过标准帧来发送。
注:其他描述可以从考虑了如下修改后的ISO/IEC 3309派生:
·初始值:‘6363’而不是‘FFFF’
·计算后寄存器内容应不取反。
示例参考附 录 D。
下列各部分提供了专门针对比特冲突检测协议的类型A的PICC状态的描述。
图表 76:类型A PICC状态图(提示的)
注:更详细的类型A PICC状态图可以在附 录 F中得到。
在POWER-OFF状态中,由于缺少载波能量,PICC不能被激励并且应不发射副载波。
IDLE状态
在7.1 中定义的最大延迟内激活工作场后,PICC应进入其IDLE状态。在这种状态中,PICC被加电,并且能够解调和识别从PCD来的有效REQA和WAKE-UP命令。
一旦收到有效REQA或WAKE-UP报文则立即进入该状态,用其UID选择了PICC时则退出该状态。在这种状态中,比特帧防冲突或其他任选的防冲突方法都可以使用。所有串联级别都在这一状态内处理以取得所有UID CLn。
通过使用其完整UID选择PICC来进入该状态。
该状态通过7.2.3.4中定义的HALT命令或本部分中未定义的应用特定命令来进入。在这种状态中,PICC应仅响应使PICC转换为READY状态的WAKE-UP命令。
注:处于HALT状态的PICC将不参与任何进一步的通信,除非使用了WAKE-UP命令。
PCD用来管理与几个PICC通信的命令是:
REQA
WAKE-UP
ANTICOLLISION
SELECT
HALT
这些命令使用上面描述的字节和帧格式。
REQA命令由PCD发出,以探测用于类型A PICC的工作场。
WAKE-UP命令由PCD发出,使已经进入HALT状态的PICC回到READY状态。它们应当参与进一步的防冲突和选择规程。
表格 72示出了使用请求帧格式的REAQA和WAKE-UP命令的编码。
表格 72:请求帧的编码
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
‘26’ = REQA |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
‘52’ = WAKE-UP |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
‘35’ =任选时间槽方法 |
|
|
|
|
|
|
|
见10.5 |
1 |
0 |
0 |
× |
× |
× |
× |
‘40’ to ‘4F’ = 专有的 |
1 |
1 |
1 |
1 |
× |
× |
× |
‘78’ to ‘7F’ = 专有的 |
所有其他 |
RFU |
这些命令在防冲突环期间使用。ANTICOLLISION和SELECT命令由下列内容组成:
选择代码SEL(1个字节)
有效位的数目NVB(1个字节)
根据NVB的值,UID CLn的0到40个数据位
SEL规定了串联级别CLn。
NVB规定了PCD所发送的CLn的有效位的数目。
注:只要NVB没有规定40个有效位,若PICC保持在READY状态中,该命令就被称为ANTICOLLISION命令。
如果NVB规定了UID CLn的40个数据位(NVB=‘70’),则应添加CRC_A。该命令称为SELECT命令。如果PICC已发送了完整的UID,则它从READY状态转换到ACTIVE状态并在其SAK-响应中指出UID(唯一标识符)完整。否则,PICC保持在READY状态中并且该PCD应以递增串联级别启动一个新的防冲突环。
HALT命令由四个字节组成并应使用标准帧来发送。
图表 77
:HALT命令帧
如果PICC在HALT帧结束后1ms周期期间以任何调制表示响应,则该响应应解释为‘不确认’。
选择序列的目的是获得来自PICC的UID以及选择该PICC以便进一步通信。
图表 78:PCD的初始化和防冲突流程图
在PCD发送请求命令(REQA)之后,所有处于IDLE状态的PICC以其在两个数据字节中编码了可用防冲突类型的请求应答(ATQA)表示同步地进行响应,。
如果有多个卡应答,冲突可能出现。PCD应把ATQA内的冲突解码为一个(1)b,其结果是所有ATQA的逻辑“或”。
有关例子在附 录 F中给出。
表格 73:ATQA的编码
MSB LSB |
|||||||||||||||
b16 |
b15 |
b14 |
b13 |
b12 |
b11 |
b10 |
b9 |
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
RFU |
UID长度比特帧 |
RFU |
比特帧防冲突 |
规则1:位b7和b8编码了UID长度(单个、两个或三个)
规则2:b1、b2、b3、b4或b5中的一个应置为(1)b以指出比特帧防冲突。
表格 74:比特帧防冲突用的b7和b8的编码
b8 |
b7 |
含义 |
0 |
0 |
UID长度:单个 |
0 |
1 |
UID长度:两个 |
1 |
0 |
UID长度:三个 |
1 |
1 |
RFU |
表格 75:比特帧防冲突用的b1-b5的编码
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
1 |
0 |
0 |
0 |
0 |
比特帧防冲突 |
0 |
1 |
0 |
0 |
0 |
比特帧防冲突 |
0 |
0 |
1 |
0 |
0 |
比特帧防冲突 |
0 |
0 |
0 |
1 |
0 |
比特帧防冲突 |
0 |
0 |
0 |
0 |
1 |
比特帧防冲突 |
所有其它 |
RFU |
下面算法应适用于防冲突环:
步骤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状态。
步骤15:PCD应检验SAK(选择确认)的串联比特是否被设置,以决定带有递增串联级别的进一步防冲突环是否应继续进行。
如果PICC的UID是已知的,则PCD可以跳过步骤2~10来选择该PICC,而无需执行防冲突环。
图表 79:PCD防冲突环流程图
注:循环编号对应算法步骤。
长度:1字节
可能值:‘93’,‘95’,‘97’
表格 76:SEL的编码
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
‘93’:选择串联级别1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
’95’:选择串联级别2 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
’97’:选择串联级别3 |
1 |
0 |
0 |
1 |
所有其他 |
RFU |
长度:1字节
较高4位称为字节计数,规定所有被8分开的有效数据位的数,包括被PCD发送的NVB和SEL。这样,字节计数的最小值是2而最大值是7。
较高4位称为字节计数,指定所有有效数据位(包括被PCD发送的NVB和SEL)的数目被8除后所得的整数。这样,字节计数的最小值是2而最大值是7。
较低4位称为比特计数,规定由PCD发送的模8所有有效数据位的数。
较低4位称为比特计数,指定所有有效数据位(包括被PCD发送的NVB和SEL)的数目被8除后所得的余数。
表格 77:NVB的编码
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
0 |
0 |
1 |
0 |
- |
- |
- |
- |
字节计数=2 |
0 |
0 |
1 |
1 |
- |
- |
- |
- |
字节计数=3 |
0 |
1 |
0 |
0 |
- |
- |
- |
- |
字节计数=4 |
0 |
1 |
0 |
1 |
- |
- |
- |
- |
字节计数=5 |
0 |
1 |
1 |
0 |
- |
- |
- |
- |
字节计数=6 |
0 |
1 |
1 |
1 |
- |
- |
- |
- |
字节计数=7 |
- |
- |
- |
- |
0 |
0 |
0 |
0 |
比特计数=0 |
- |
- |
- |
- |
0 |
0 |
0 |
1 |
比特计数=1 |
- |
- |
- |
- |
0 |
0 |
1 |
0 |
比特计数=2 |
- |
- |
- |
- |
0 |
0 |
1 |
1 |
比特计数=3 |
- |
- |
- |
- |
0 |
1 |
0 |
0 |
比特计数=4 |
- |
- |
- |
- |
0 |
1 |
0 |
1 |
比特计数=5 |
- |
- |
- |
- |
0 |
1 |
1 |
0 |
比特计数=6 |
- |
- |
- |
- |
0 |
1 |
1 |
1 |
比特计数=7 |
当NVB规定40个有效位并且当所有这些数据位与UID CLn相配时,SAK由PICC来发送。
SAK通过标准帧来发送,后随CRC_A。
SAK |
CRC_A |
1字节 |
2字节 |
图表 710:选择确认(SAK)
PCD应校验位b3以判定UID是否完整。位b3和b6的编码在表7-8中给出。
表格 78:SAK的编码
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
× |
× |
× |
× |
× |
1 |
× |
× |
串联比特设置:UID不完整 |
× |
× |
1 |
× |
× |
0 |
× |
× |
UID完整,PICC遵循ISO/IEC 14443-4 |
× |
× |
0 |
× |
× |
0 |
× |
× |
UID完整,PICC不遵循ISO/IEC 14443-4 |
如果UID不完整,PICC应保持READY状态并且PCD应以递增的串联级别来初始化新的防冲突环。
如果UID完整,PICC应发送带有清空的串联比特的SAK并从READY状态转换到ACTIVE状态。当提供了附加信息时,PICC应设置SAK的第6位b6。
附加信息的定义不是本标准本部分的课题,将在第8节中定义。
UID由4、7或10个UID字节组成。因此,PICC最多应处理3个串联级别,以得到所有UID字节。在每个串联级别内,由5个数据字节组成的UID的一部分应被发送到PCD,3个或4个UID字节被发送到PCD。根据最大串联级别,定义了UID长度的三个类型。该UID长度必须与下表一致。
表格 79:UID长度
最大串联级别 |
UID长度 |
字节数 |
1 |
单个 |
4 |
2 |
两个 |
7 |
3 |
三个 |
10 |
对于UID内容,使用下列定义:
UID CLn: 根据串联级别n,UID的一部分,由5个字节组成,3≥n≥1
UIDn: UID的字节#n,n≥0
BCC:UID CLn校验字节,4个先前字节的“异或”值
CT:串联标记,‘88’
UID是一固定的唯一数或由PICC动态生成的随机数。UID的第一个字节(uid0)分配后随UID字节的内容。
表格 710:单个长度的UID
uid0 |
描述 |
‘08’ |
uid1到 uid3是动态生成的随机数 |
‘x0’-‘x7’
‘x9’-‘xE’ |
专有的固定数
|
‘18’-‘F8’ ‘xF’ |
RFU |
串联标记CT的值‘88’应不用于单个长度UID中的uid0。
表格 711:两个和三个长度的UID
uid0 |
描述 |
制造商ID 根据ISO/IEC 7816-6/AM1 |
每一制造商对唯一编号的其他字节的值的唯一性负责 |
在ISO/IEC 7816-6/AM1中为“私用”标出的值‘81’到‘FE’在本上下文中应不予允许。
图表 711
:串联级别的使用
注:串联标记的用途是迫使造成与具有较小UID长度的PICC冲突。因此,UID0或UID3都不应具有串联标记的值。
下列算法应适用于PCD以获得完整UID:
步骤1:PCD选择串联级别1
步骤2:应执行防冲突环
步骤3:PCD应检验SAK的串联比特
步骤4:如果设置了串联比特,PCD应增加串联级别并初始化一个新的防冲突环
步骤5:当使用其完整UID来选择PICC时,PICC应发送带有清空串联比特的SAK,并从READY状态转换到ACTIVE状态
本章定义了类型B PICC防冲突和通信初始化期间使用的字节、帧和命令的定时。关于比特表示和编码参考第6 章。
PICC和PCD之间的数据字节通过字符来发送和接收,在防冲突序列期间,字符的格式如下:
一个低电平起始位
8个数据位发送,首先发送LSB
一个高电平停止位
因此,用一个字符执行一个字节的发送需要10etu,如下图所示
图表 712:字符格式
一个字符范围内的比特边界应出现在(n–0.125)etu和 (n+0.125)etu之间,其中n是起始比特的下降沿之后的比特边界数(1≤N≤9)。
一个字符与下一个发送的字符利用额外的保护时间(EGT)来隔开。
由PCD发送给PICC的两个连续字符之间的EGT应为0到57µs之间的任何值。
由PICC发送给PCD的两个连续字符之间的EGT应具有0到19µs之间的任何值。
PCD和PICC按帧发送字符。帧通常用SOF(帧的起始)和EOF(帧的结束)定界。关于异常情况见7.3.10.2。
SOF |
字符 |
EOF |
图表 713:帧格式
SOF包括:
一个下降沿,
后面紧跟10个etu的逻辑0,
后面紧跟位于下一个etu内任何地方的一个上升沿,
后面紧跟至少为2个etu(但不超过3个etu)的逻辑1。
图表 714:SOF
EOF包括:
一个下降沿,
后面紧跟10个etu的逻辑0,
后面紧跟位于下一个etu内任何地方的一个上升沿,
图表 715:EOF标识符
注:收到假EOF的概率很低,并且对应于在错误收到停止位的情况下传输的‘00’字符。
在PCD数据传输之后,PICC开始的通信应遵守下图中定义的定时。
最小延迟TR0(在PCD EOF与PICC副载波接通之间的)和TR1(在PICC副载波接通和第一个比特传输之间的)可在防冲突会话开始时定义(见ATTRIB命令的编码)。TR0和TR1的最小值在第6章中定义。TR1的最大值为200/fs。TR0的最大值在7.3.10中定义。
图表 716:PICC副载波SOF
仅当PICC打算开始发送信息时,它才可以接通副载波。
在PICC数据传输和EOF之后,PCD开始的通信应遵守下图中的定时。
在EOF传输之后,PICC应断开它的副载波。副载波信号应
在EOF结束之前不能停止
在EOF结束之后的2个etu内被停止。
PICC EOF开始(下降沿)和PCD SOF开始(下降沿)之间的最小延迟为14etu。
图表 717:PICC到PCD的EOF
Data字节 (N 字节) |
CRC_B (2字节) |
图表 718:帧范围内CRC_B的位置
如果接收到的帧带有一个有效的CRC_B值,该帧才应被认为是正确的。
帧CRC_B是k个数据位的函数,该k个数据位由帧中的所有数据位组成,但不包括起始位、停止位、字节间的延迟、SOF和EOF以及CRC_B本身。由于数据按字节编码,因此比特数k是8的倍数。
对于差错校验,帧包括了两个CRC_B字节,在数据字节之后,EOF之前。CRC_B在ISO/IEC 3309中定义。寄存器初始内容为全1:‘FFFF’。这两个CRC_B字节出现在k/8个数据字节之后和在EOF之前。
举例参考附 录 D。
PCD通过在本章中详述的命令集合对防冲突序列进行管理。
PCD是与一个或多个PICC通信时的主控方,它通过发出REQB命令来启动卡的通信活动,以便提示PICC进行响应。
在防冲突序列期间,可能发生两个或两个以上的PICC同时响应:这就是冲突。命令集和允许PCD处理冲突序列以便及时分离PICC传输。
在完成防冲突序列后,PICC通信将完全处于PCD的控制之下,每次只允许一个PICC通信。
防冲突方案以时间槽的定义为基础,要求PICC在时间槽内用最小标识数据进行应答。时间槽数被参数化,范围从1到某一整数。在每一个时间槽内,PICC响应的概率也是可控制的。在防冲突序列中,PICC仅被允许应答一次。从而,即便在PCD场中有多个卡,在一个时间槽内也仅有一个卡应答,从而,即便在PCD场中有多个卡,在某一个时间槽内也可能仅有一个卡应答,并且于是PCD在这个时间槽内能捕获标识数据。根据标识数据,PCD能够与被标识的卡建立一个通信信道。
防冲突序列允许选择一个或多个PICC以便在任何时候进行进一步的通信。
命令集合允许在PCD级实现不同的防冲突管理策略。这个策略处在应用设计者的控制下,并且可包括:
概率的(响应概率小于或等于1的重复性单个时间槽提示),
伪确定性的(扫描所有多个时间槽,以便在防冲突序列期间使所有在场的卡应答的概率最大),
可动态进行的这些方法的组合。
在防冲突序列期间,PICC具体的行为是根据不同的状态及状态间的转换条件确定的。
图表 719:PICC状态转换流程图举例(提示的)
注1:R是PICC在1到N(N的编码见7.3.7.4)范围内选择的一个随机数。
注2:选项1-对于PICC不支持Slot-MARKER命令(概率接近方法)。
选项2-对于PICC支持Slot-MARKER命令(时间槽接近方法)
下述退出条件和转换适用于任何状态:
如果RF场消失,则PICC返回到POWER-OFF状态。
下列备注适用于专门针对防冲突序列的任何状态(除ACTIVE状态外):
使用前几节中定义的缺省通信参数。
除发送前几节中规定的响应帧, PICC应不发射副载波。
当PICC加电并正确复位时,它收听从PCD收到的任何命令帧。
若来自PCD的帧是有效的(正确的CRC_B),则PICC执行要求的动作和/或根据其状态进行响应。注意,在防冲突命令中,帧中数据的前三位是(101)b(防冲突前缀字节的前三位)。
PICC不应答任何不以(101)b(防冲突前缀字节的前三个位)开始的命令帧。
PICC仅对收到的有效帧进行反应(当检测到传输差错时不发送响应)。
描述:
在POWER-OFF状态下,PICC因缺乏载波能量而不加电。
状态退出条件和转换:
如果PICC处于一个能量大于Hmin(见第6章)的激励磁场,则它应在不大于tORB的延迟范围内进入其IDLE状态。
描述:
在IDLE状态下,PICC是加电的,它收听帧并应识别REQB信息。
状态退出条件和转换:
一旦收到一个有效REQB命令帧,如果有ATQB的话,PICC就定义一个唯一的时间槽用来发送它的ATQB(有效的请求意味着具有REQB命令和正确匹配AFI(应用族识别符,应用的卡预选准则)的有效帧。见REQB命令规范)。
如果定义的时间槽是第一个时间槽,则PICC应发送一个ATQB响应帧。
PICC的ATQB一被发送,它就进入READY-DECLARED状态。
如果定义的时间槽不是第一个时间槽,当用时间槽接近方法时,则PICC进入READY-REQUESTED状态。
如果定义的时间槽不是第一个时间槽,当用概率接近方法时,返回IDLE状态。
描述:
在READY-REQUESTED状态下,PICC是加电的,并且定义了一个唯一的时间槽用来发送其ATQB(如果有)。
它收听帧并应识别REQB和Slot-MARKER报文。
状态退出条件和转换:
当用时间槽接近方法时,一旦收到一个有效Slot-MARKER帧,如果PICC定义的时间槽与时间槽标记匹配。则它应对ATQB进行响应。在特定时间槽内,应答的概率应不大于1/N(N是收到的最后一个REQB的参数)。
PICC的ATQB一被发送,它就进入READY-DECLARED状态。
当用时间槽接近方法时,如果PICC定义的时间槽与时间槽标记不匹配,则该PICC就保持在READY-REQUESTED状态。
一旦收到有效REQB命令帧,状态退出条件和转换按在IDLE状态下接收到有效REQB命令帧。
描述:
在READY-DECLARED状态下,PICC是加电的,并且发送了与收到的最后一个有效REQB报文相对应的其ATQB。
它收听帧并应识别REQB和ATTRIB报文。
状态退出条件和转换:
一旦收到带有ATTRIB命令的有效帧,当且仅当ATTRIB命令中的PUPI与PICC的PUPI匹配时,PICC才应进入ACTIVE状态。
若ATTRIB命令中的PUPI与PICC的PUPI不匹配,则PICC仍保持在READY-DECLARED状态。
一旦收到有效REQB命令帧,状态退出条件和转换按在IDLE状态下接收到有效REQB命令帧。
一旦收到匹配的HALT命令,PICC应进入HALT状态。
描述:
PICC是加电的,并且自从信道号(CID)已经通过ATTRIB命令已分配给该PICC以来,PICC便进入高层模式。
它收听正确格式化(正确的CID和有效的CRC_B)的任何高层报文。
PICC应不在收到任何带有无效CRC_B或带有另一个CID(不是所分配的那个CID)的帧以后发射副载波。
状态退出条件和转换:
当收到有效的HALT命令帧时,PICC进入HALT状态。
特定备注:
应该不应答有效REQB或Slot-MARKER帧。
应该不应答带有ATTRIB命令的有效帧。
在高层协议中,可以定义特定的命令用来把PICC返回到其他状态(IDLE或HALT)。只有在收到这样的命令以后,PICC才可以返回到这些状态。
描述:
PICC仅响应使它回到IDLE状态的WAKE-UP命令。
状态退出条件和转换:
如果RF场消失,则PICC返回到POWER-OFF状态。
四个基本的命令可用来管理多结点通信信道:
REQB
Slot-MARKER
ATTRIB
HALT
所有这四个命令都使用了上面详述的比特和字节格式。
这些命令以及PICC对这些命令的响应在下列各条中描述。
所收到的带有错误格式的帧(错误的帧标识符或无效的CRC_B)应忽略。
为了区分防冲突命令和应用命令,所有用于防冲突阶段的命令都以序列:(101)b开始。
一旦收到一个有效REQB帧(N为定义时间槽编号的REQB参数):
若N=1并且AFI=0,则PICC应该应答ATQB并进入READY-DECLARED状态。
若N不为1,则PICC应该以概率为1/N来应答ATQB。
若AFI不为0,则仅带有由AFI所指出的应用类型的PICC可以应答。
一旦收到一个有效Slot-MARKER帧:
若PICC内部定义的时间槽与时间槽标记号匹配,则它应该应答ATQB。
在一个特定的时间槽内的响应概率不应大于1/N(N为收到的最后一个REQB的参数)。
由PCD所发出的REQB命令用来探测类型B PICC的场。
时间槽编号(或每个时间槽内的响应概率)N作为一个参数包含在REQB命令中,以优化给定应用的防冲突算法。每个不处于ACTIVE或HALT状态(即处于IDLE或READY状态)的PICC应处理该报文,并选择它将在哪个时间槽(每个时间槽被选中的概率都为1/N)内返回它的ATQB响应信息。
REQB命令由PCD发出,长度为5个字节,格式为:
Apf(在REQB中使用的防冲突前缀f) (1字节) |
AFI(应用族识别符,应用的卡预选准则。) (1字节) |
PARAM(属性格式中的参数) (1字节) |
CRC_B (2字节) |
图表 720:REQB命令格式
注:为了有更多的时间在线地处理信息,要求经常处理的信息位置靠前。
防冲突前缀字节APf=‘05’=(0000 0101)b。
AFI(应用族标识符)代表由PCD所瞄准的应用类型。AFI可用来在ATQB之前预先选择PICC:只有那些具有由AFI所指出的类型的应用的PICC才可以应答AFI不等于‘00’的REQB命令。
当AFI等于‘00’,所有PICC应处理REQB。
AFI的最高有效半字节可用来编码按下表定义的某个特定的应用族或所有应用族。
AFI的最低有效半字节可用来编码某个特定应用子族或所有应用子族。不同于0的子族代码是专有的。
表格 712:AFI的编码
AFI 最高有效半字节 |
AFI 最低有效半字节 |
含义-PICC 响应来自 |
举例/注释 |
‘0’ |
‘0’ |
所有族和子族 |
没有应用预选 |
‘X’ |
‘0’ |
族X的所有子族 |
广泛的应用预选 |
‘X’ |
‘Y’ |
仅族X的第Y个子族 |
|
‘0’ |
‘Y’ |
仅专有的子族Y |
|
‘1’ |
‘0’, ‘Y’ |
运输 |
集团运输,汽车,航空公司,… |
‘2’ |
‘0’, ‘Y’ |
金融 |
IEP,银行,零售,… |
‘3’ |
‘0’, ‘Y’ |
标识 |
门禁控制,… |
‘4’ |
‘0’, ‘Y’ |
电信 |
公用电话,GSM,… |
‘5’ |
‘0’, ‘Y’ |
医学 |
|
‘6’ |
‘0’, ‘Y’ |
多媒体 |
因特网服务,… |
‘7’ |
‘0’, ‘Y’ |
博彩 |
|
‘8’ |
‘0’, ‘Y’ |
数据存储 |
可移植文件,… |
‘9’-‘F’ |
‘0’, ‘Y’ |
RFU |
|
注:1、 如果AFI=‘00’,则所有的PICC都应响应(没有预先选择)。
2、X=‘1’到‘F’,Y=‘1’到‘F’。
RFU |
|
|
|
|
||||||
b8=0 |
b7=0 |
b6=0 |
b5=0 |
b4=0 |
b3 |
b2 |
b1 |
图表 721:PARAM的编码
b4=0:“正常请求”(PICC在Idle状态或Ready状态下处理该请求)
b4=1:“请求所有”(PICC在Idle状态或Ready状态或HALT状态下处理该请求)
b1到b3用来编码对应下表的时间槽N的数。
表格 713:N的编码
b3b2b1 |
N |
000 001 010 011 100 101 11× |
1=20 2=21 4=22 8=23 16=24 RFU RFU |
注:对于每个PICC,在第一个时间槽内响应(ATQB)的概率应为1/N。因此,如果PCD中使用了概率接近的方法,则N不可用来调整时间槽的编号,而是在这个唯一的时间槽内PICC返回它的ATQB的概率。
在REQB命令之后,PCD可发送至多(N-1)个时间槽标记来定义每个时间槽的开始。为了确保良好的可靠性,每个时间槽标记包含两个CRC_B字节。
不强制PICC支持该命令。在这种情况下(概率接近方法),PICC应忽略任何Slot-MARKER命令。PICC仅可在第一个时间槽内发送其ATQ。
时间槽标记可以:
在PCD收到的ATQB报文结束之后被发送,以便标记下一个时间槽的开始。
如果没有收到ATQB(如果已知该时间槽为空,则不必等到该时间槽结束),则较早地被发送。
该命令由PCD发送,大小为3字节,格式:
APn (1字节) |
CRC_B (2字节) |
图表 722:Slot-MARKER命令格式
Slot-MARKER的第一个字节不同于REQB字节APf。
APn=(nnnn 0101)b,其中nnnn是时间槽标记的编号,范围从1到15,范围从2到16。
注:不强制时间槽标记按递增的时间槽编号顺序来发送。
对REQB和Slot-MARKER命令的响应都被称作ATQB(请求应答)。
ATQB有固定长度(14个字节)和限定的持续时间。
仅对于ATQB, 第6 章中定义的TR0应不大于256/fs。
ATQB的格式为:
‘50’ (1字节) |
PUPI (4字节) |
应用数据 (4字节) |
协议信息 (3字节) |
CRC_B (2字节) |
图表 723:ATQB格式
伪唯一PICC标识符(PUPI)可用来区分防冲突期间的不同PICC。这4字节数可以是PICC动态产生的一个数或一个多样化的固定数,PUPI只能在IDLE状态时改变。
该字段用来通知PCD在PICC上当前安装了哪些应用。这个信息使得在有多个PICC存在时,PCD能选择想要的PICC。
该字段指示了卡所支持的参数。它的具体格式如下:
比特速率能力 (8位) |
最大帧长度 (4位) |
协议类型 (4位) |
FWI (4位) |
RFU (2位) |
FO (2位) |
图表 724:协议信息格式
比特速率能力(8位):见下表:
表格 714:PICC支持的比特速率
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
含义 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
在两个方向上PICC仅支持106kbits/s |
1 |
- |
- |
- |
0 |
- |
- |
- |
从PCD到PICC和从PICC到PCD强制相同的比特速率 |
- |
- |
- |
1 |
0 |
- |
- |
- |
PICC到PCD,1etu=64/fc,支持的比特速率为212kbit/s |
- |
- |
1 |
- |
0 |
- |
- |
- |
PICC到PCD,1etu=32/fc,支持的比特速率为424kbit/s |
- |
1 |
- |
- |
0 |
- |
- |
- |
PICC到PCD,1etu=16/fc,支持的比特速率为847kbit/s |
- |
- |
- |
- |
0 |
- |
- |
1 |
PCD到PICC,1etu=64/fc,支持的比特速率为212kbit/s |
- |
- |
- |
- |
0 |
- |
1 |
- |
PCD到PICC,1etu=32/fc,支持的比特速率为424kbit/s |
- |
- |
- |
- |
0 |
1 |
- |
- |
PCD到PICC,1etu=16/fc,支持的比特速率为847kbit/s |
最大帧长度(4位):见下表
表格 715:最大帧长度
PICC可接收的最大帧长度编码如下:
ATQB中的最大帧长度代码 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9-F |
最大帧长度(字节) |
16 |
24 |
32 |
40 |
48 |
64 |
96 |
128 |
256 |
RFU>256 |
协议类型(4位):见表7-14
表格 716:PICC支持的协议类型
PICC支持的协议类型定义如下:
b4 |
b3 |
b2 |
b1 |
含义 |
0 |
0 |
0 |
1 |
PICC支持ISO/IEC14443-4 |
0 |
0 |
0 |
0 |
ISO/IEC14443-4除外 不支持ISO/IEC14443-4 |
其他值是RFU
FWI:帧等待时间整数(4位),见第8 章
FO:帧选项(2位)
表格 717:PICC支持的帧选项
b2 |
b1 |
含义 |
- |
1 |
PICC支持的NAD PICC支持CID |
1 |
- |
PICC支持的CID PICC支持NAD |
PCD发送的ATTRIB命令应包括选择单个PICC所要求的信息。
收到一个带有其标识符的ATTRIB命令的PICC就成为选中的,并分配到一个专用信道。在选中之后,该PICC仅响应第8章中定义的包括其唯一CID的命令。
PCD发出的ATTRIB的格式如下:
‘1D’ (1字节) |
标识符 (4字节) |
参数1 (1字节) |
参数2 (1字节) |
参数3 (1字节) |
CID (1字节) |
高层INF (任选-可变长度) |
CRC_B (2字节) |
图表 725:ATTRIB格式
该标识符是PICC发送的ATQB中的PUPI的值。
TR0 |
TR1 |
EOF |
SOF |
RFU |
|||
b8 |
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
图表 726:PARAM 1的编码
若无其他规定,所有RFU位应被置为0。
EOF/SOF
b3和b4指示PCD有能力抑制从PICC到PCD的EOF或SOF中断,该能力可以减少通信开销。对PICC,抑制EOF和/或SOF是任选的。b3和b4的编码如下:
表格 718:SOF/EOF处理
b3 |
要求SOF断开 |
|
|
b4 |
要求EOF断开 |
0 |
是 |
|
|
0 |
是 |
1 |
否 |
|
|
1 |
否 |
TR0
TR0向PICC指示在PCD发送的命令结束之后,进行响应之前的最小延迟。6.5.2.5规定了TR0的缺省值为64/fs。
表格 719:TR0编码
TR0 |
副载波传输前的最小延迟 |
00 01 10 11 |
64/fs(缺省值) 48/fs 16/fs RFU |
注:该延迟取决于PCD的性能:它是当从发送切换到接收时PCD所要求的。
TR1
TR1向PICC指示副载波调制开始和数据传输开始之间的最小延迟。6.5.2.5规定了TR0的缺省值为80/fs。
表格 720:TR1编码
TR1 |
无调制的最小副载波持续时间 |
00 01 10 11 |
80/fs(缺省值) 64/fs 16/fs RFU |
注:该延迟取决于PCD的性能:它是PCD为与PICC同步所要求的。
b1到b4可用来编码下表中规定的可被PCD接收到的最大帧长度。
表格 721:参数2的b1到b4的编码
ATQB中最大帧长度代码 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9-F |
最大帧长度(字节) |
RFU |
RFU |
32 |
40 |
48 |
64 |
96 |
128 |
256 |
RFU>256 |
b5到b8用于比特速率选择,如下表所规定。
表格 722:参数2的b5到b8的编码
b6 b5 |
含义 |
00 01 10 11 |
PCD到PICC,letu=128/fc,比特速率为106kbit/s PCD到PICC,letu=64/fc,比特速率为212kbit/s PCD到PICC,letu=32/fc,比特速率为424kbit/s PCD到PICC,letu=16/fc,比特速率为847kbit/s |
b8 b7 |
含义 |
00 01 10 11 |
PICC到PCD,letu=128/fc,比特速率为106kbit/s PICC到PCD,letu=64/fc,比特速率为212kbit/s PICC到PCD,letu=32/fc,比特速率为424kbit/s PICC到PCD,letu=16/fc,比特速率为847kbit/s |
b4 b3 b2 b1=0001
b8 b7 b6 b5=RFU=0000
最低有效半字节(b4到b1)被称为卡识别符(CID),并定义了在0到14范围内寻址PICC的逻辑号。值15为RFU。CID由PCD规定并对所有在同一时刻处于ACTIVE状态的PICC是唯一的。
任何高层命令都可以包括在内。
不强制PICC成功地处理在本上下文中的任何命令。
但是如果不包含任何应用命令,PICC仍应成功地处理这种报文。
PICC应使用高层协议格式对第一个正确地被标识出的PUPI(带有效CRC_B)ATTRIB命令进行应答。
PICC应使用下面描述的格式对任何有效的ATTRIB命令进行应答。
CID (1字节) |
高层响应 (任选-不同长度) |
CRC_B (2字节) |
图表 727:对ATTRIB命令的应答格式
注:长度等于高层数据加上3个协议字节的总数。
如下图所示:PICC应使用一个空的高层响应来应答空的ATTRIB命令。
‘1D’ (1字节) |
标识符 (4字节) |
参数1到3 (1字节) |
CID (1字节) |
CRC_B (2字节) |
图表 728:PCD发送到PICC的ATTRIB命令
CID (1字节) |
CRC_B (2字节) |
图表 729:PICC对ATTRIB的应答
注:
·对任何ATTRIB命令正确格式化的(有效CID和CRC_B字段)应答是PCD检测PICC选择已成功的手段。
·只要PICC响应满足上面描述的格式,就可以指示允许在本上下文中PICC不支持高层命令的高层响应。
该命令用于将PICC置为HALT状态,因而对正常REQB没有更多的响应,从而不再响应REQB。
对该命令应答后,PICC仅对Wake up REQB命令应答(见7.3.7 )。
PCD发出的HALT命令格式如下:
‘50’ (1字节) |
识别符 (4字节) |
CRC_B (2字节) |
图表 730:HALT命令格式
标识符为PICC发送的ATQB中PUPI的值。
对来自PICC的HALT命令的应答的格式如下:
‘00’ (1字节) |
CRC_B (2字节) |
图表 731:PICC对HALT的应答
应使用下列激活序列:
——如第7 章中所定义的PICC激活序列(请求、防冲突环和选择)。
——为获得ATS,在开始应校验到SAK字节。SAK在第7 章中定义。
——如果没有获得ATS,使用第7 章中定义的HALT命令,PICC可被置为HALT状态。
——如果获得了ATS,在接收到SAK后,PCD可发送RATS作为下一条命令。
——PICC应发送其ATS作为对RATS的应答。如果在选择后直接接收到RATS,则PICC应仅应答RATS。
——如果PICC在ATS中支持任何变化的参数,PCD可使用PPS请求作为接收到ATS后的下一条命令,并用其来改变参数。
——PICC应发送PPS响应作为对PPS请求的应答。
如果PICC在ATS中不支持任何变化的参数,则它无需执行PPS。
下图示出了从PCD角度来看的类型A PICC激活序列。
图表 81:从PCD角度来看的类型A PICC激活
本节定义了带有所有字段的RATS(见下图)。
开始字节
参数字节
编码FSDI和CID
图表 82:选择应答请求
参数字节由两部分组成(见下图):
——最高有效半字节b8到b5称为FSDI,它用于编码FSD。FSD定义了PCD能收到的帧的最大长度。FSD的编码在表8-1中给出。
——最低有效半字节b4到b1命名为CID,它定义编址了的PICC的逻辑号在0到14范围内。值15为RFU。CID由PCD规定,并且对同一时刻处在ACTIVE状态中的所有PICC,它应是唯一的。CID在PICC被激活期间是固定的,并且PICC应使用CID作为其逻辑标识符,它包含在接收到的第一个无差错的RATS。
图表 83:RATS参数字节的编码
表格 81:FSD到FSDI的转换
FSDI |
‘0’ |
‘1’ |
‘2’ |
‘3’ |
‘4’ |
‘5’ |
‘6’ |
‘7’ |
‘8’ |
‘9’-‘F’ |
FSD (字节) |
16 |
24 |
32 |
40 |
48 |
64 |
96 |
128 |
256 |
RFU >256 |
本章定义了带有其所有可用字段的ATS(选择应答)(见下图)。
在已定义字段中的一个没有在PICC发送的ATS中出现的情况下,应应用该字段的缺省值。
图表 84:ATS的结构
长度字节TL以下面的顺序跟随着可选后续字节的可变号码:
——格式字节T0,
——接口字节TA(1),TB(1),TC(1)和
——应用信息字节T1到TK。
长度字节TL是强制的,它规定了传送的ATS(包括其本身)的长度。两个CRC字节并不包括在TL中。ATS的最大长度应不超出指示的FSD。因此TL的最大值应不超过FSD-2。
格式字节T0是强制的可选的,并且当长度字节大于1,它便出现。当该格式字节出现时,ATS能仅包含下列可选字节。仅仅当该格式字节存在时,ATS才可以包含紧随的可选字节。
T0由三部分组成(见下图):
——最高有效位b8应置为0,其他值为RFU,等于1为RFU。
——包含Y(1)的位b7到b5指示接口字节TC(1),TB(1)和TA(1)的出现。
——最低有效半字节b4到b1称为FSCI,它用于编码FSC。FSC定义了PICC能接收的帧的最大长度。FSCI的缺省值为2,这导致了一32字节的FSC。FSC的编码等于FSD的编码(见表格 81)。
图表 85:格式字节的编码
接口字节TA(1)由四部分组成(见下图):
——最高有效位b8编码了为每个方向处理不同除数(D)的可能性。当该位被置为1时,PICC不能为每个方向处理不同除数。D影响了位持续时间 etu :1 etu = 128 / ( D * fc )。
——位b7到b5为PICC到PCD方向编码了PICC的位速率能力,称为DS。其缺省值应为(000)b。
——位b4被置为(0)b,其他值为RFU。
——位b3到b1为PCD到PICC方向编码了PICC的位速率能力,称为DR。其缺省值应为(000)b。
图表 86:接口字节TA(1)的编码
为每个方向选择特定除数可以使用PPS由PCD来完成。
接口字节TB(1)运送信息以定义帧等待时间和启动帧保护时间。
接口字节TB(1)由两部分组成:
——最高有效半字节b8到b5称为FWI,它编码FWT(见8.3.2)。
——最低有效半字节b4到b1称为SFGI,它编码了一乘数值用于定义SFGT。SFGT定义了在发送了ATS之后,准备接收下一个帧之前PICC所需的特定保护时间。SFGI在0到14范围内编码。值15为RFU。值0指示无需SFGT,在1到14范围内的值用于用下面给出的公式计算SFGT。SFGI的缺省值为0。
图表 87:接口字节TB(1)的编码
SFGT用下面的公式计算:
SFGT=(256×16/fc)×2SFGI
SFGTMIN=第7章中所定义的最小值
SFGTDEFAULT=第7章中所定义的最小值
SFGTMAX=~4949ms
接口字节TC(1)规定了协议的参数。
特定接口字节TC(1)由两部分组成(见下图):
——最高有效位b8到b3为000000b,所有其他值为RFU。
——位b2和b1定义了在PICC支持的开端字段中的可选字段。允许PCD跳过已被指出被PICC支持的字段,但PICC不支持的字段应不被PCD传输。缺省值应为(10)b,它指出支持CID和不支持NAD。
图表 88:接口字节TC(1)
历史字节T1到Tk是可选的并包含了通用信息。ATS的最大长度给出了历史字节的最大可能数目。ISO/IEC 7816-4规定了历史字节的内容。
PPS请求包含着被格式字节和一参数字节跟随的开始字节(见下图)。
图表 89:协议和参数选择请求
PPSS包含两部分(见下图):
——最高有效半字节b8到b5应置为‘D’并标识了PPS。
——最低有效半字节b4到b1称为CID,它定义了已编址的PICC的逻辑号。
图表 810:PPSS的编码
PPS0指示可选字节PPS1的出现(见下图)。
图表 811:PPS0的编码
PPS1由三部分组成(见下图):
——最高有效半字节b8到b5为(0000)b,所有其他值为RFU。
——位b4,b3称为DSI,它编码了已选择的从PICC到PCD的除数整数(D)。
——位b2,b1称为DRI,它编码了已选择的从PCD到PICC的除数整数(D)。
图表 812:PPS1的编码
对于可能的DS和DR的定义,见8.1.2.4。
D的编码在下表中给出。
表格 82:DRI,DSI到D的转换
DRI,DSI |
(00)b |
(01)b |
(10)b |
(11)b |
D |
1 |
2 |
4 |
8 |
PPS响应确认接收到的PPS请求(见下图),并仅包开始字节(见8.1.3.1)。
图表 813:协议和参数选择响应
激活帧等待时间为PICC在接收到的来自PCD的帧的结尾之后开始发送其响应帧定义了最大时间,其值为65536/fc(~4833μs)。
注:在任何方向上两个帧之间的最小时间在第7章中定义。
当PCD发送了RATS并接收到有效ATS,PCD应继续工作。
在任何其他情况下,在它应使用如8.4中定义的停活序列前,PCD可以重新传输RATS。在停活序列失败的情况下,它可以使用第7章中定义的HLTA命令。
当PICC被最后一条命令选择,并且
收到有效RATS,PICC应
——发送回其ATS,并且
——使RATS失效(停止响应接收到的RATS)。
收到其它的除了HALT命令的任何块(有效或无效),PICC应
——忽略该块,并且
——保持在接收模式。
当PCD发送了PPS并接收到有效PPS响应,PCD应激活选择的参数并继续工作。
在任何其他情况下,PCD可以重新传输PPS请求并继续工作。
当PICC接收到RATS,发送了其ATS,并且
a)接收到有效PPS请求,PICC应
——发送PPS响应,
——使PPS请求失效(停止响应接收到的PPS请求)并
——激活接收到的参数。
b)接收到无效块,PICC应
——使PPS请求失效(停止响应接收到的PPS请求)并
——保持在接收模式。
c)接收到除了PPS请求的有效块,PICC应
——使PPS请求失效(停止响应接收到的PPS请求)并
——继续工作。
当PCD发送了包含CID=n不等于0的RATS,并且
a)接收到指示CID被支持的ATS,PCD应
——发送包含CID =n的块给该PICC,并
——当该PICC处于ACTIVE状态时,对于进一步的RATS,不使用CID=n。
b)接收到指示CID不被支持的ATS,PCD应
——发送不包含CID的块给该PICC,并
——当该PICC处于ACTIVE状态时,不激活任何其他PICC。
当PCD发送了包含CID等于0的RATS,并且
c)接收到指示CID被支持的ATS,PCD应
——发送包含CID等于0的块给该PICC,并
——当该PICC处于ACTIVE状态时,不激活任何其他PICC。
d)接收到指示CID不被支持的ATS,PCD应
——发送不包含CID的块给该PICC,并
——当该PICC处于ACTIVE状态时,不激活任何其他PICC。
类型B PICC的激活序列在第7章中描述。
半双工块传输协议符合无触点卡环境的特殊需要,并使用第7章中定义的帧格式。
帧格式的其他相关元素有:
——块格式;
——最大帧等待时间;
——功率指示,和
——协议操作。
本协议根据OSI参考模型的原理压条法分层原理设计,需特别注意穿越边界的交互作用的最小限度。四层定义如下:
——根据第7章交换字节的物理层。
——按本章中定义进行交换块的数据链路层。
——为使系统开销最小而与数据链路层结合的会话层
——处理命令的应用层,它涉及在两个方向上至少一个块或块链的交换。
注:应用选择的使用如ISO/IEC 7816-5中所定义。不推荐在多应用的PICC中使用隐含的应用选择。
块格式(见下图)由一个开端域(强制)、一个信息域(可选)和一个结束域(强制)组成。
开端域 |
信息域 |
结束域 |
||
PCB |
[CID] |
[NAD] |
[INF] |
EDC |
1字节 |
1字节 |
1字节 |
|
2字节 |
注:括弧中的项目指示可选需求。
图表 814:块格式
开端域是强制的,最多由三个字节构成:
——协议控制字节(强制),
——卡标识符(可选),
——结点地址(可选)。
PCB用于传送控制数据传输所需要的信息。
协议定义了块的三种基本类型:
——用于为应用层的使用传送信息的I-块。
——用于传送确认或不确认的R-块。R-块不包含INF域。确认涉及最后接收到的块。
——用于在PCD和PICC间交换控制信息的S-块。两种不同类型的S-块定义如下:
1)包含1字节长INF域的等待时间延迟扩展,和
2)不包含INF域的DESELECT。
PCB的编码依赖于它的类型,如下图所定义。此处没有定义的PCB编码在第5、6、7章的其他章节使用或为RFU。I-块、R-块和S-块的编码在图表 815、图表 816、图表 817中给出。
图表 815:I-块PCB的编码
图表 816:R-块PCB的编码
图表 817:S-块PCB的编码
CID域用于识别特定的PICC,它由三部分组成(见下图):
——最高有效位b8,b7用于从PICC到PCD的功率水平指示。对于PCD到PICC的通信,这两位应被置为0。功率水平指示的定义见8.3.4 。
——位b6和b5用于传送附加信息,它没有被定义并应置为(00)b,所有其他值为RFU。
——位b4到b1编码CID。
图表 818:卡标识符的编码
类型A CID的编码在8.1.1中给出,类型B 的在第7章中给出。
PICC对CID的处理描述如下:
不支持CID的PICC应
——忽略任何包含CID的块。
支持CID的PICC应
——通过使用其CID响应包含其CID的块。
——忽略包含其他CID的块。
——假若其CID为0,亦通过不使用CID响应不包含CID的块。
在开端域里的NAD被保存用于建立和编址不同的逻辑连接。当位b8和b4被置为0时,NAD的用途应为适应来自ISO/IEC 7816-3的定义。所有其他值为RFU。
下列定义应适用NAD的用途:
a)NAD域应仅用于I-块。
b)当PCD使用NAD时,PICC也应使用NAD。
c)在链接期间,NAD仅在链的第一个块内传输。
d)PCD应不使用NAD编址不同的PICC(CID应被用于编址不同的PICC)。
INF于是可选的。当它存在时,INF域传送I-块中的应用数据或非应用数据和S-块中的状态信息。信息域的长度通过计算整个块的字节数减去开端域和结束域得出。
该域包含传输块的EDC。EDC为如第7章中定义的CRC。
FWT给PICC定义了在PCD帧结束后开始其响应帧的最大时间(见下图)。
图表 819:帧等待时间
注:在任何方向上两个帧之间的最小时间在第7章中定义。
FWT通过下面的公式计算:
FWT=(256×16/fc)×2FWI
其中FWI的值在0到14之间,15为RFU。对于类型A,若TB(1)被省略,则FWI的缺省值为4,给出的FWT值约为4.8ms。
对于FWI=0,FWT= FWTMIN (~302μs)
对于FWI=14,FWT= FWTMAX (~4949μs)
FWT应用于检测传输差错或无响应的PICC。如果来自PICC的响应的开始没有在FWT内被接收到,则PCD收回发送的权利可以重新发送。
类型B FWI域的值在ATQB中的设置如第7章中所定义。类型A FWI域的值在ATS中设置(见8.1.2.5)。
当PICC需要比定义的FWT更多的时间用于处理接收到的块时,应使用S(WTX)请求等待时间扩展。S(WTX)请求包含1字节长INF域,它由两部分组成(见下图):
——最高有效位b8,b7编码功率水平指示(见8.3.4)。
——最低有效位b6到b1编码WTXM。WTXM在1到59范围内编码。值0和60到63为RFU。
图表 820:S(WTX)请求的INF域编码
PCD应通过发送包含1字节长INF域的S(WTX)来确认,该INF域由两部分组成(见下图)并包含了与在请求中接收到的相同的WTXM:
——最高有效位b8,b7为(00)b,所有其他值为RFU。
——最低有效位b6到b1编码了用于定义临时FWT的确认的WTXM值。
图表 821:S(WTX)响应的INF域编码
FWT的响应的临时值通过下面的公式计算:
FWTTEMP= FWT×WTXM
PICC需要的时间FWTTEMP在PCD发送了S(WTX)响应之后开始。
当公式得出的结果大于FWTMAX时,应该使用FWTMAX。
临时FWT仅在下一个块被PCD接收到时才应用。
临时FWT的作用时间仅持续到PCD接收到下一个块为止。
功率水平指示通过使用插入在CID(当存在时)中的两位来编码,并在S-块中被PICC发送(见8.3.1.1.2和8.3.3 )。
表格 83:功率水平指示的编码
(00)b |
PICC不支持功率水平指示 |
(01)b |
对于完整功能性,功率不充分 |
(10)b |
对于完整功能性,功率充分 |
(11)b |
对于完整功能性,功率超出 |
注:由PCD进行的功率水平指示的解释是可选的。
在激活序列后,PICC应等待一仅PCD才有权力发送的命令。在发送了块之后,PCD应转换到接收模式并在转换回传输模式之前等待块。PICC可以传输块仅响应接收到的块(对时间延迟是察觉不到的)。在响应后,PICC应返回到接收模式。
在当前命令/响应对没有完成或帧等待时间超出而没有响应时,PCD不应初始化一新的命令/响应对。
多激活特征允许PCD保持几个PICC同时在ACTIVE状态。对于停活PICC和激活另一张PICC,由于省去了停活和激活操作,这允许几个PICC间直接转换而无须另外的时间。
多激活的举例见附 录 G。
注:对每个已激活的PICC,PCD需要处理分离的块号。
链接过程允许PCD或PICC通过把信息划分成若干块来传输不符合分别由FSC或FSD定义的单块的信息。每一块的长度应分别小于或等于FSC或FSD。
块的链接通过链接I-块中PCB的位(M)来控制。每一个带链接位集为1的I-块应被R-块确认。
链接的特性在图表 822中给出,16字节长字符串分成三块来传输。
记号:
I(1)x |
带链接位设置和块号x的I-块 |
I(0)x |
链接位未设置的带块号x的I-块 |
R(ACK)x |
指示确认的R-块 |
注:本例没有使用可选字段NAD和CID。
图表 822:链接
规则A:对每一张激活的PICC,PCD块号应被初始化为0。
规则B:当带有的块号等于当前块号的I-块或R(ACK)块被接收到时,PCD在可选地发送块前为该PICC锁定当前块号。PCD在发送块前,令该PICC的当前块号取反。
规则C:在激活时,PICC块号应被初始化为1。
规则D:当I-块被接收到(独立于其块号),PICC在发送块前锁定其块号。
规则E:当带有块号不等于当前PICC的块号的R(ACK)块被接收到时,PICC在发送块前锁定其块号。
规则1:首块应由PCD来发送。
规则2:当I-块指示链接当被标识为链接的I-块已被接收到时,块应由R(ACK)块来确认。
规则3:S-块仅成对使用。S(…)请求块总是跟随着S(…)响应块(见8.3.3和8.4)。
规则4:当接收到无效块或FWT超时,则R(NAK)块被发送(PCD链接或S(DESELECT)情况除外)。
规则5:在PICC链接的情况下,当接收到无效块或FWT超时,R(ACK)块被发送。
规则6:当接收到R(ACK)块,如果其块号不等于PICC的当前块号,则最后的I-块被重新传送。
规则7:当接收到R(ACK)块,如果其块号等于PCD的当前块号,则继续链接。
规则8:如果S(DESELECT)请求没有被无差错S(DESELECT)响应进行回答,则S(DESELECT)请求可以被重新传送或PICC可以被忽视。
规则9:允许PICC发送S(WTX)块而不发送I-块或R(ACK)块。
规则10:当I-块没有指示链接已被接收到时,块应由I-块来确认。
规则11:当接收到R(ACK)块或R(NAK)块,如果其块号等于PICC的当前块号,则最后的块被重新传送。
规则12:当接收到R(NAK)块,如果其块号不等于PICC的当前块号,则R(ACK)块被发送。
规则13:当接收到R(ACK)块,如果其块号不等于PICC的当前块号,则继续链接。
当检测到差错时,应试图使用下列恢复规则。本章中的定义支配块处理规则(见8.3.5.3)。
下列差错应被PCD检测到:
a)传输差错(帧差错或EDC差错)或FWT超时
PCD应试图通过以下顺序示出的技术进行差错恢复:
——块的重新传输(可选),
——S(DESELECT)请求的使用,
——忽视PICC。
b)协议差错(违反了PCB编码或违反了协议规则)
PCD应试图通过以下顺序示出的技术进行差错恢复:
——S(DESELECT)请求的使用,
——忽视PICC。
下列差错应被PICC检测到:
a)传输差错(帧差错或EDC差错),
b)协议差错(违反了协议规则)。
PICC应尽量没有差错恢复。当传输差错或协议差错发生时,PICC始终应返回接收模式,在任何时候它都应接收S(DESELECT)请求。
注:R(NAK)块不由PICC发送。
PCD和PICC间的交易完成之后,PICC应被置为HALT状态。
PICC的停活通过使用DESELECT命令来完成。
DESELECT命令象协议的S-块那样编码,并由PCD发送的S(DESELECT)请求块和PICC作为确认发送的S(DESELECT)响应组成。
停活帧等待时间给PICC定义了接收到来自PCD的S(DESELECT)请求帧的末端后开始发送其S(DESELECT)响应的最短长时间,其值为65536/fc(~4833μs)。
注:在任何方向上帧之间的最短时间在第7章中定义。
当PCD发送了S(DESELECT)请求并接收到了S(DESELECT)响应,则PICC已被成功地置为了HALT状态并且分配给它的CID也被释放。
当PCD没有接收到S(DESELECT)响应,则PCD可以重新进行停活序列。
参见《电子钱包电子存折规范》卡片部分“数据元和命令”章节。
本节描述以下的命令-响应APDU:
——关闭非接触通道
——激活非接触通道
此命令的目的是将卡片的非接触方式暂时关闭。此时,卡片如果有接触接口,则接触接口的操作应该不受任何影响。当卡片的非接触通道被关闭以后,除了激活非接触通道指令和取随机数指令,其它任何指令以非接触方式送入卡片后,卡片都响应6D00。
此命令使用应用维护密钥保护。
关闭非接触通道命令报文编码见下表:
表格 91:关闭非接触通道命令报文
代码 |
值 |
CLA |
‘84’ |
INS |
‘70’ |
P1 |
‘80’ |
P2 |
‘04’ |
Lc |
‘04’ |
Data |
报文鉴别码(MAC)数据元;根据《电子钱包/电子存折规范》中的规定编码 |
Le |
不存在 |
命令报文数据域包括根据《电子钱包/电子存折规范》中的规定进行编码的报文鉴别码(MAC)数据元。
响应报文数据域不存在。
此命令执行成功的状态码是‘9000’。
IC卡可能回送的警告状态码如下表所示:
表格 92:关闭非接触通道警告状态
SW1 |
SW2 |
含义 |
62 |
00 |
无信息提供 |
62 |
81 |
写EEPROM错误 |
IC卡可能回送的错误状态码如下表所示:
表格 93:关闭非接触通道错误状态
SW1 |
SW2 |
含义 |
64 |
00 |
状态标志未变 |
65 |
81 |
内存失败 |
69 |
82 |
不满足安全状态 |
69 |
87 |
安全报文数据项丢失 |
69 |
88 |
安全报文数据项不正确 |
6A |
88 |
P1,P2不正确 |
6A |
81 |
卡片锁定 |
此指令的目的是将关闭的非接触方式激活。此指令允许以接触和非接触两种方式发到卡片中。当卡片收到此指令,并且卡片的当前状态符合执行此指令的安全要求,卡片将激活非接触通道。
此命令使用应用维护密钥保护。
激活非接触通道命令报文编码见下表:
表格 94:激活非接触通道命令报文
代码 |
值 |
CLA |
‘84’ |
INS |
‘70’ |
P1 |
‘00’ |
P2 |
‘04’ |
Lc |
‘04’ |
Data |
报文鉴别码(MAC)数据元;根据《电子钱包/电子存折规范》中的规定编码 |
Le |
不存在 |
命令报文数据域包括根据《电子钱包/电子存折规范》中的规定进行编码的报文鉴别码(MAC)数据元。
响应报文数据域不存在。
此命令执行成功的状态码是‘9000’。
在非接触通道工作正常的情况下,卡片收到此指令,卡片返回9000。
IC卡可能回送的错误状态码如下表所示:
表格 95:激活非接触通道错误状态
SW1 |
SW2 |
含义 |
64 |
00 |
状态标志未变 |
65 |
81 |
内存失败 |
69 |
82 |
不满足安全状态 |
69 |
87 |
安全报文数据项丢失 |
69 |
88 |
安全报文数据项不正确 |
6A |
88 |
P1,P2不正确 |
6A |
81 |
卡片锁定 |
本标准并不排斥把其它现有标准附加到PICC,一些限制可以适用于PICC的凸印。
在制造过程通过附加印刷之后,要求按规格定制PICC,应注意确保用于印刷的区域具有适合于印刷技术或所使用印刷机的足够质量。
ISO/IEC 7811-1:1995 |
识别卡——记录技术——第1部分:凸印。 |
ISO/IEC 7811-2:1995 |
识别卡——记录技术——第2部分:磁条。 |
ISO/IEC 7811-3:1995 |
识别卡——记录技术——第3部分:ID-1型卡上凸印字符的位置。 |
ISO/IEC 7811-4:1995 |
识别卡——记录技术——第4部分:ID-1型卡上只读磁道——磁道1和2的位置。 |
ISO/IEC 7811-5:1995 |
识别卡——记录技术——第5部分:ID-1型卡上读写磁道——磁道3的位置。 |
ISO/IEC 7811-6:1995 |
识别卡——记录技术——第6部分:磁条——高矫顽磁性。 |
ISO/IEC 7812-1:1993 |
识别卡——发卡者的标识——第1部分:编码体系。 |
ISO/IEC 7812-2:1993 |
识别卡——发卡者的标识——第2部分:应用和注册规程。 |
ISO/IEC 7813:1995 |
识别卡——金融交易卡。 |
ISO/IEC 7816-1:1998 |
识别卡——带触点的集成电路卡——第1部分:物理特性。 |
ISO/IEC 7816-2:1998 |
识别卡——带触点的集成电路卡——第2部分:接触的尺寸和位置。 |
ISO/IEC 7816-3:1997 |
识别卡——带触点的集成电路卡——第3部分:电信号和传输协议。 |
ISO/IEC 10373-6 |
识别卡——测试方法。 |
ISO/IEC 10536-1:1992 |
识别卡——无触点集成电路卡——第1部分:物理特性。 |
ISO/IEC 10536-2:1995 |
识别卡——无触点集成电路卡——第2部分:耦合区域的尺寸和位置。 |
ISO/IEC 10536-3:1992 |
识别卡——无触点集成电路卡——第3部分:电信号和重设置过程。 |
本例示出了在下列假设基础上该场内两个PICC的选择序列:
·PICC#1带有UID长度:单个,UID0的值为‘10’
·PICC#2带有UID长度:两个
注:通信开始,通信结束和奇偶校验位为简单起见没有示出。
图C-1 比特帧防冲突的选择序列
图C-1的说明
请求 |
PCD发送REQUEST命令 所有的PICC以它们的ATQA进行响应: PICC#1指示比特帧防冲突,UID长度:单个 PICC#2指示比特帧防冲突,UID长度:两个 |
防冲突循环 |
PCD发送ANTICOLLISION命令: |
串联级别1 |
SEL规定了比特帧防冲突和串联级别1 NVB的值‘20’规定PCD不会发送UID CL1 因此,场内所有的PICC都会以它们的UID CL1进行响应 由于串联标记的值‘88’引起第一次冲突发生在比特位置# 4 PCD发送另一个包括UID CL1的前三位的ANTICOLLISION命令,该UID CL1是冲突发生前收到的,UID CL1后面紧跟一个(1)b。 从而,PCD将值‘24’赋给NVB 这4位对应于PICC#2的UID CL1的前4位 PICC#2以它的UID CL1的其余36位进行响应。由于PICC#1不响应,因此没有冲突发生 由于PCD“知道”PICC#2的UID CL1的所有比特,因此它对PICC#2发送SELECT命令 PICC#2以SAK进行响应,指出UID是不完整的 因此,PCD增加串联级别 |
防冲突循环, |
PCD发送另一个ANTICOLLISION命令: |
串联级别2 |
SEL规定了比特帧防冲突和串联级别2 NVB复位到‘20’以迫使PICC#2以它的完整的UID进行响应 PICC#2以它的UID CL2的全部40位进行响应 PCD对串联级别2的PICC#2发送SELECT命令, PICC#2以SAK进行响应,指出UID是完整的,并且从READY状态转换到ACTIVE状态 |
本附录用于解释说明,同时表示了存在于物理层的比特模式。之所以包括本附录,是为了检验第7章中类型A的CRC_A编码的实现情况。
编码和解码的过程可由带有合适的反馈门的16级循环移位寄存器方便地完成。根据ITU-T的建议,附件1、图I-1/V.41和图I-2/V.41,寄存器的触发器应编号为FF0至FF15。FF0是最左边的触发器,数据从FF0移入。FF15是最右边的触发器,数据从FF15移出。
表D-1定义了寄存器的初始内容。
表D-1 初始值为‘6363’的16位移位寄存器的初始内容
FF0 |
FF1 |
FF2 |
FF3 |
FF4 |
FF5 |
FF6 |
FF7 |
FF8 |
FF9 |
FF10 |
FF11 |
FF12 |
FF13 |
FF14 |
FF15 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
因此,FF0对应于最高有效位,FF15对应于最低有效位。
例1: 数据的传输,第1个字节=‘00’,第2个字节=‘00’,附加的CRC_A。
计算出的CRC_A=‘1EA0’
第1个发送的比特
S |
0000 0000 |
1 |
0000 0000 |
1 |
0000 0101 |
1 |
01111 1000 |
1 |
E |
|
‘00’ |
P |
‘00’ |
P |
‘A0’ |
P |
‘1E’ |
P |
|
图D-1 CRC_A编码举例1
表D-2 值为‘1EA0’的16位移位寄存器的内容
FF0 |
FF1 |
FF2 |
FF3 |
FF4 |
FF5 |
FF6 |
FF7 |
FF8 |
FF9 |
FF10 |
FF11 |
FF12 |
FF13 |
FF14 |
FF15 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
例2: 数据块的传输,第1个字节=‘12’,第2个字节=‘34’,附加的CRC_A。
计算出的CRC_A=‘CF26’
第1个发送的比特
S |
0100 1000 |
1 |
0010 1100 |
0 |
0110 0100 |
0 |
11111 0011 |
1 |
E |
|
‘12’ |
P |
‘34’ |
P |
‘26’ |
P |
‘CF’ |
P |
|
图D-2 CRC_A编码举例2
表7B-3 值为‘CF26’的16位移位寄存器的内容
FF0 |
FF1 |
FF2 |
FF3 |
FF4 |
FF5 |
FF6 |
FF7 |
FF8 |
FF9 |
FF10 |
FF11 |
FF12 |
FF13 |
FF14 |
FF15 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
本附录用于解释说明,同时表示了存在于物理层的比特模式。之所以包括本附录,是为了检验第7章中类型B的CRC_B编码的实现情况。更详细的内容参考ISO/IEC 3309、CCITT X.25和V.48#8.1.1.6.1。
初始值=‘FFFF’。
例1:数据的传输,第1个数据字节=‘00’,第2个数据字节=‘00’,第3个数据字节=‘00’,附加的CRC_B。
计算出的CRC_B=‘CCC6’
|
|
第1个数据字节 |
第2个数据字节 |
第3个数据字节 |
CRC_B |
|
|
帧= |
SOF |
‘00’ |
‘00’ |
‘00’ |
‘CC’ |
‘C6’ |
EOF |
图D-3 CRC_B编码举例1
例2:数据的传输,第1个数据字节=‘0F’,第2个数据字节=‘AA’,第3个数据字节=‘FF’,附加的CRC_B。
计算出的CRC_B=‘FCD1’
|
|
第1个数据字节 |
第2个数据字节 |
第3个数据字节 |
CRC_B |
|
|
帧= |
SOF |
‘0F’ |
‘AA’ |
‘FF’ |
‘FC’ |
‘D1’ |
EOF |
图D-4 CRC_B编码举例2
例3:数据的传输,第1个数据字节=‘0A’,第2个数据字节=‘12’,第3个数据字节=‘34’, 第4个数据字节=‘56’,附加的CRC_B。
计算出的CRC_B=‘2CF6’
|
|
第1个数据字节 |
第2个数据字节 |
第3个数据字节 |
第4个数据字节 |
CRC_B |
|
|
帧= |
SOF |
‘0A’ |
‘12’ |
‘34’ |
‘56’ |
‘2C’ |
‘F6’ |
EOF |
图D-5 CRC_B编码举例3
#include
#include
#include
#include
#define CRC_A 1
#define CRC_B 2
#define BYTE unsigned char
unsigned short UpdateCrc(unsigned char ch, unsigned short *lpwCrc)
{
ch = (ch^(unsigned char)((*lpwCrc) & 0x00FF));
ch = (ch^(ch<<4));
*lpwCrc = (*lpwCrc >> 8)^((unsigned short)ch << 8)^((unsigned
short)ch<<3)^((unsigned short)ch>>4);
return(*lpwCrc);
}
void ComputeCrc(int CRCType, char *Data, int Length,
BYTE *TransmitFirst, BYTE *TransmitSecond)
{
unsigned char chBlock;
unsigned short wCrc;
switch(CRCType) {
case CRC_A:
wCrc = 0x6363; // ITU-V.41
break;
case CRC_B:
wCrc = 0xFFFF; // ISO 3309
break;
default:
return;
}
do {
chBlock = *Data++;
UpdateCrc(chBlock, &wCrc);
} while (--Length);
if (CRCType == CRC_B)
wCrc = ~wCrc; // ISO 3309
*TransmitFirst = (BYTE) (wCrc & 0xFF);
*TransmitSecond = (BYTE) ((wCrc >> 8) & 0xFF);
return;
}
BYTE BuffCRC_A[10] = {0x12, 0x34};
BYTE BuffCRC_B[10] = {0x0A, 0x12, 0x34, 0x56};
unsigned short Crc;
BYTE First, Second;
FILE *OutFd;
int i;
int main(void)
{
printf("CRC-16 reference results 3-Jun-1999\n");
printf("by Mickey Cohen - [email protected]\n\n");
printf("Crc-16 G(x) = x^16 + x^12 + x^5 + 1\n\n");
printf("CRC_A of [ ");
for(i=0; i<2; i++) printf("%02X ",BuffCRC_A[i]);
ComputeCrc(CRC_A, BuffCRC_A, 2, &First, &Second);
printf("] Transmitted: %02X then %02X.\n", First, Second);
printf("CRC_B of [ ");
for(i=0; i<4; i++) printf("%02X ",BuffCRC_B[i]);
ComputeCrc(CRC_B, BuffCRC_B, 4, &First, &Second);
printf("] Transmitted: %02X then %02X.\n", First, Second);
return(0);
}
本附录描述了应用于类型A PICC的时间槽检测协议。不要求支持类型A和类型B的轮询的PCD支持该检测协议以作为强制性防冲突协议,如7.1中所描述。
见第4章。下列术语和缩略语是专门针对第7章的。
ATQA_t 对类型A_时间槽请求的应答
ATQ-ID 对REQ-ID的应答
CID_t 类型A_时间槽的卡识别符
HALT_t 类型A_时间槽的HALT命令
REQA_t 类型A_时间槽的REQuest命令
REQ-ID REQuest-ID命令
SAK_t 类型A_时间槽的选择确认
SEL_t 类型A_时间槽的SELect命令
Type A_时间槽轮询复位时间等于7.1中的类型A轮询复位时间
一旦收到REQA_t,等待32+/-2etu后,PICC返回ATQA_t。PCD可能识别不出ATQA_t的编码。
请求保护时间定义为两个连续请求命令的起始比特之间的最短时间,其值应为0.5ms。
帧保护时间定义为在相反方向上两个连续帧的最后一位的上升沿和起始位的下降沿之间的最短时间。其值应为10etu。
第一个时间槽开始于REQ-ID后的32etu内。每个时间槽长度为104etu,包括94etu的ATQ-ID接收和其后的10etu的帧保护时间。
见7.2.1.7和表7-2。REQA_t的数据内容为‘35’。
每个数据字节的LSB首先被发送。每个数据字节没有奇偶校验位。CRC_B在7.3.2中定义。
S |
数据:n*8数据比特(没有奇偶校验位) |
CRC_B 2字节 |
E |
|||
1字节 命令或响应 |
(0或1字节) (参数1) |
(0或1字节) (参数1) |
(0或18字节) (参数1) |
下面条款提供了类型A_时间槽PICC的状态。
在POWER-OFF状态下,由于缺少载波,PICC不被激活并且不发射副载波。
该状态在场被激活5ms延迟后进入。
该状态通过REQA_t进入。
该状态通过带有完整UID和CID_t的SEL_t进入。PCD从PICC获得SAK_t信息。
这一状态通过HALT_t从ACTIVE状态进入。在这一状态下,PICC是静默的。
用到了4对命令和响应的集。
类型 |
名称 |
编码(b8-b1) |
含义 |
命令 |
REQA_t |
(b7-b1) (0110101)b(=‘35’) |
请求PICC类型A时间槽来应答ATQA_t。REQA_t伴随着两个参数。 |
响应 |
ATQA_t |
‘00’到‘FF’的任何一个字节内容 |
对REQA_t的应答。PCD能识别出类型A时间槽PICC的存在。然而,不要求PCD识别出ATQA_t的编码。 |
命令 |
REQ-ID |
(00001000)b(=‘08’) |
请求PICC向若干时间槽中的某一个应答它的UID。 REQ-ID跟随者2个参数。 |
响应 |
ATQ-ID |
(00000110)b(=‘06’) |
向4个时间槽中的某一个应答8字节UID。ATQ-ID伴随着8字节UID。 |
命令 |
SEL_t |
(01000NNN)b,(NNN=CID_t No.(0-7)) (01100NNN)b,(NNN+8=CID_t No.(8-15)) |
选择带有其UID的PICC并设置CID_t。SEL_t伴随着8字节UID。 |
响应 |
SAK_t |
(1000XXX)b(=’8X’,除非另有规定,否则’X’=’0’) |
确认SEL_t* |
命令 |
HALT_t |
(00011NNN)b,(NNN=CID_t No.(0-7)) (00111NNN)b,(NNN+8=CID_t No.(8-15)) |
暂停带有其CID_t的PICC并释放其CID_t。 |
响应 |
对HALT_t的响应 |
(00000110)b=(‘06’) |
确认HALT_t |
*附加信息可用。详细内容在第8章中规定。
REQ_ID命令的参数
参数 |
含义 |
|
P1 |
b8-b7 |
时间槽长度,b7=1:对于8字节UID,b8=0 |
b6-b1 |
时间槽的数目,b3=1:对于4个时间槽,其他的=0 |
|
P2 |
‘00’ |
序列流程图由下面的图E-1示出。
图E-1 时间槽-类型A PCD 防冲突流程图
本提示附录描述了类型A的详细状态图,包括没有在本标准主要部分定义的子状态。该状态图考虑了本部分的若干命令引起的所有可能的状态转换。传输差错处理并不包括在内。
下列符号应用于图F-1示出的详细状态图。
REQA |
REQA命令 |
WUP |
WAKE-UP命令 |
AC |
ANTICOLLISION命令(与UID匹配) |
nAC |
ANTICOLLISION命令(与UID不匹配) |
SEL |
SELECT命令(与UID匹配) |
nSEL |
SELECT命令(与UID不匹配) |
HALT |
HALT命令 |
DESEL |
DESELECT命令,在第8章中定义 |
遵循第7章但不使用第8章的PICC可以通过专有命令跳出SELECTED状态。
图F-1 详细的PICC类型A状态图
下表描述了对三张PICC使用多激活的例子。
表G-1 多激活
PCD动作 |
PICC1状态 |
PICC2状态 |
PICC3状态 |
给场提供功率 |
|
|
|
三张PICC进入该场 |
IDLE |
IDLE |
IDLE |
激活带CID=1的PICC |
ACTIVE(1) |
IDLE |
IDLE |
带CID=1的任何数据传输 |
ACTIVE(1) |
IDLE |
IDLE |
… |
|
|
|
激活带CID=2的PICC |
ACTIVE(1) |
ACTIVE(2) |
IDLE |
带CID=1,2的任何数据传输 |
ACTIVE(1) |
ACTIVE(2) |
IDLE |
… |
|
|
|
激活带CID=3的PICC |
ACTIVE(1) |
ACTIVE(2) |
ACTIVE(3) |
带CID=1,2,3的任何数据传输 |
ACTIVE(1) |
ACTIVE(2) |
ACTIVE(3) |
… |
|
|
|
带CID=3的S(DESELECT)命令 |
ACTIVE(1) |
ACTIVE(2) |
HALT |
带CID=2的S(DESELECT)命令 |
ACTIVE(1) |
HALT |
HALT |
带CID=1的S(DESELECT)命令 |
HALT |
HALT |
HALT |
… |
|
|
|
本附录给出了一些无差错操作和差错处理的设定。
任何块 ===> 正确接收到
任何块 =≠=> 错误接收到
任何块 = => 没有接收到(FWT超时)
分界线 最小协议操作的结束
I(1)x 带链接位设置和块号x的I-块
I(0)x 链接位未设置的带块号x的I-块
R(ACK)x 指示确认的R-块
R(NAK)x 指示不确认的R-块
S(…) S-块
对目标PICC,设定中的块编号都以PCD的当前块号开始。为便于表述,PICC激活序列后设定才开始,因此当前块号对PCD来说以0开始,对PICC来说以1开始。
设定1 I-块交换
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
3. |
|
I(0)1 |
===> |
|
1 |
规则D |
4. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定2 等待时间扩展
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=== |
S(WTX) 请求 |
|
规则9 |
3. 规则3 |
|
S(WTX) 响应 |
===> |
|
|
|
4. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
5. |
|
I(0)1 |
===> |
|
1 |
规则D |
6. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定3 DESELECT
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
3. |
|
S(DESELECT)请求 |
===> |
|
|
|
4. |
|
|
<=== |
S(DESELECT)响应 |
|
规则3 |
设定4 PCD使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(1)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
I(0)1 |
<=== |
R(ACK)0 |
|
规则2 |
3. 规则7 |
|
I(0)1 |
===> |
|
1 |
规则D |
4. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
5. |
|
I(0)0 |
===> |
|
0 |
规则D |
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
设定5 PICC使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(1)0 |
|
规则10 |
3. 规则2 |
|
R(ACK)1 |
===> |
|
1 |
规则E |
4. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则13 |
5. |
|
I(0)0 |
===> |
|
0 |
规则D |
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
设定6 协议开始
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
=≠=> |
|
0 |
|
2. 超时 |
|
|
<= = |
- |
|
|
3. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
4. |
无变化 |
|
<=== |
R(ACK)1 |
|
规则12 |
5. 规则6 |
|
I(0)0 |
===> |
|
0 |
规则D |
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
7. |
|
I(0)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定7 I-块交换
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
3. |
|
I(0)1 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)1 |
===> |
|
|
|
6. |
无变化 |
|
<=== |
R(ACK)0 |
|
规则12 |
7. 规则6 |
|
I(0)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
9. |
|
I(0)0 |
===> |
|
0 |
规则D |
10. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
设定8 I-块交换
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
I(0)0 |
|
规则10 |
3. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
4. 规则B |
1 |
|
<=== |
I(0)0- |
|
规则11 |
5. |
|
I(0)1 |
===> |
|
1 |
规则D |
6. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定9 I-块交换
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
I(0)0 |
|
规则10 |
3. 规则4 |
|
R(NAK)0 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则11 |
7. |
|
I(0)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定10 等待时间扩展请求
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
S(WTX)请求 |
|
规则9 |
3. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
4. |
|
|
<=== |
S(WTX)请求 |
|
规则11 |
5. 规则3 |
|
S(WTX)响应 |
===> |
|
|
|
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
7. |
|
I(0)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定11 等待时间扩展请求
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
S(WTX)请求 |
|
规则9 |
3. 规则4 |
|
R(NAK)0 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. |
|
|
<=== |
S(WTX)请求 |
|
规则11 |
7. 规则3 |
|
S(WTX)响应 |
===> |
|
|
|
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定12 等待时间扩展请求
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=== |
S(WTX)请求 |
|
规则9 |
3. 规则3 |
|
S(WTX)响应 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. |
|
|
<=== |
S(WTX)请求 |
|
规则11 |
7. 规则3 |
|
S(WTX)响应 |
===> |
|
|
|
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定13 等待时间扩展请求
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=== |
S(WTX)请求 |
|
规则9 |
3. 规则3 |
|
S(WTX)响应 |
===> |
|
|
|
4. |
|
|
<=≠= |
I(0)0 |
|
规则10 |
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则11 |
7. |
|
I(0)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定14 等待时间扩展请求
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=== |
S(WTX)请求 |
|
规则9 |
3. 规则3 |
|
S(WTX)响应 |
===> |
|
|
|
4. |
|
|
<=≠= |
I(0)0 |
|
规则10 |
5. 规则4 |
|
R(NAK)0 |
=≠=> |
|
|
|
6. 超时 |
|
|
<= = |
- |
|
|
7. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则11 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定15 DESELECT
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
I(0)0 |
0 |
规则D |
2. 规则B |
|
|
<=== |
I(0)0 |
|
规则10 |
3. |
|
S(DESELECT)请求 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则8 |
|
S(DESELECT)请求 |
===> |
|
|
|
6. |
|
|
<=== |
S(DESELECT)响应 |
|
规则3 |
设定16 PCD使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(1)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
R(ACK)0 |
|
规则2 |
3. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
4. 规则B |
1 |
|
<=== |
R(ACK)0 |
|
规则11 |
5. 规则7 |
|
I(1)1 |
===> |
|
1 |
规则D |
6. 规则B |
0 |
|
<=== |
R(ACK)1 |
|
规则2 |
7. 规则7 |
|
I(0)0 |
===> |
|
0 |
规则D |
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定17 PCD使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(1)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
R(ACK)0 |
|
规则2 |
3. 规则7 |
|
I(1)1 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. |
无变化 |
|
<=== |
R(ACK)0 |
|
规则12 |
7. 规则6 |
|
I(1)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
R(ACK)1 |
|
规则2 |
9. 规则7 |
|
I(0)0 |
===> |
|
0 |
规则D |
10. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
11. |
|
I(0)1 |
===> |
|
1 |
规则D |
12. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定18 PCD使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(1)0 |
===> |
|
0 |
规则D |
2. |
|
|
<=≠= |
R(ACK)0 |
|
规则2 |
3. 规则4 |
|
R(NAK)0 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则4 |
|
R(NAK)0 |
===> |
|
|
|
6. 规则B |
1 |
|
<=== |
R(ACK)0 |
|
规则11 |
7. 规则7 |
|
I(1)1 |
===> |
|
1 |
规则D |
8. 规则B |
0 |
|
<=== |
R(ACK)1 |
|
规则2 |
9. 规则7 |
|
I(0)0 |
===> |
|
0 |
规则D |
10. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则10 |
11. |
|
I(0)1 |
===> |
|
1 |
规则D |
12. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定19 PICC使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(1)0 |
|
规则10 |
3. 规则2 |
|
R(ACK)1 |
=≠=> |
|
|
|
4. 超时 |
|
|
<= = |
- |
|
|
5. 规则5 |
|
R(ACK)1 |
===> |
|
1 |
规则E |
6. 规则B |
0 |
|
<=== |
I(1)1 |
|
规则13 |
7. 规则2 |
|
R(ACK)0 |
===> |
|
0 |
规则E |
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则13 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
设定20 PICC使用链接
注释 |
块号 (0) |
PCD |
|
PICC |
块号 (1) |
注释 |
1. 规则1 |
|
I(0)0 |
===> |
|
0 |
规则D |
2. 规则B |
1 |
|
<=== |
I(1)0 |
|
规则10 |
3. 规则2 |
|
R(ACK)1 |
===> |
|
1 |
规则E |
4. |
|
|
<=≠= |
I(1)1 |
|
规则13 |
5. 规则5 |
|
R(ACK)1 |
===> |
|
无变化 |
|
6. 规则B |
0 |
|
<=== |
I(1)1 |
|
规则11 |
7. 规则2 |
|
R(ACK)0 |
===> |
|
0 |
规则E |
8. 规则B |
1 |
|
<=== |
I(0)0 |
|
规则13 |
9. |
|
I(0)1 |
===> |
|
1 |
规则D |
10. 规则B |
0 |
|
<=== |
I(0)1 |
|
规则10 |
本章给出了由PCD发送的不同的块和帧编码的概览。块的类型在各个帧的第一个字节指出。
第7章中的定义:
REQA (0100110)b(7位)
WUPA (1010010)b(7位)
REQB/WUPB (00000101)b
Slot-MARKER(仅Type B) (××××0101)b
SELECT(仅Type A) (1001××××)b
ATTRIB(仅Type B) (00011101)b
HLTA (01010000)b
HLTB (01010000)b
本章中的定义:
RATS (11100000)b
PPS (1101××××)b
I-块 (00××××××)b(除了(00×××101)b)
R-块 (10××××××)b(除了(1001××××)b)
S-块 (11××××××)b(除了(1110××××)b和(1101××××)b)
下表描述了已定义的块和帧编码的第一个字节。
表I-1 块和帧编码
位 |
I-块PCB |
R-块PCB |
DESELECT |
S-块PCB |
WTX |
REQB/WUPB |
Slot-MARKER |
SELECT |
ATTRIB |
HLTA |
HLTB |
RATS |
PPS |
|
b8 |
0 |
1 |
1 |
0 |
× |
1 |
0 |
0 |
0 |
1 |
1 |
|||
b7 |
0 |
0 |
1 |
0 |
× |
0 |
0 |
1 |
1 |
1 |
1 |
|||
b6 |
0(RFU) |
1 |
0 |
1 |
× |
× |
0 |
0 |
0 |
0 |
1 |
0 |
||
b5 |
链接 |
ACK/NAK |
0 |
1 |
× |
× |
1 |
1 |
1 |
1 |
0 |
1 |
||
b4 |
CID |
CID |
CID |
0 |
0 |
× |
1 |
0 |
0 |
0 |
× |
|||
b3 |
NAD |
0(无NAD) |
0(无NAD) |
1 |
1 |
× |
1 |
0 |
0 |
0 |
× |
|||
b2 |
1 |
1(RFU) |
1(RFU) |
0 |
0 |
× |
0 |
0 |
0 |
0 |
× |
|||
b1 |
块号 |
块号 |
0(RFU) |
1 |
1 |
× |
1 |
0 |
0 |
0 |
× |