前言
上一篇《【NFC专栏】ISO14443A协议》介绍了ISO14443A协议,接下来继续介绍ISO14443B协议。之前介绍过,A和B的协议区别主要在ISO14443-3,所以接下来的内容也是集中在ISO14443-3。
名词解析
PUPI:Pseudo-Unique PICC Identifier,可以理解为A卡中的UID
FWI:Frame Waiting time Integer,帧等待时间整数值
FWT:Frame Waiting Time,帧等待时间
ADC:Application Data Coding,应用数据编码
命令介绍
REQB/WUPB
读卡器发送REQB或WUPB命令来检查是否有卡存在。命令码如下:
(1)APf:防碰撞前缀,固定值为0x05。
(2)AFI: Application Family Identifier,应用族ID,用来指定要检查的PICC类型。值为0时表示所有PICC都要处理REQB/WUPB命令。定义如下:
注:X和Y的取值范围都为0x1~0xF。
AFI被分为高4位和低4位两个部分,通过这两部分的组合来确定PICC类型,可以简单理解为过滤设置。
(3)PARAM:用来指定是REQB还是WUPB, 以及slot(槽)数量。
b4为0时表示REQB,为1时表示WUPB。这两命令和和ISO14443A中的REQA和WUPA类似。WUPB命令是处于IDLE,READY或HALT状态的卡都会应答,而REQB命令只有处于IDLE或READY状态的卡会应答。
b1~b3定义如下:
N主要是要配合Slot-MARKER命令一起解决防碰撞。N可以理解为最大随机值,就比如N=2, PICC会产生随机值1或2,如果是1会马上应答(ATQB),如果是2,就需要再发送Slot-MARKER命令,PICC才会应答。
Slot-MARKER
Slot-MARKER命令格式如下:
(1)APn: 槽(slot)序号, 它的值为(nnnn 0101)b ,低4位是固定的。
ATQB
ATQB是REQB/WUPB和Slot-MARKER的应答命令。命令格式如下:
(1)PUPI: 和A卡中的UID类似。
(2)Application Data:应用数据,具体定义如下:
AFI:上面REQB中有提到了
Number of Applications: 应用数量,高4位与AFI一致,‘0’意味着无应用,‘0xF’意味着15种应用或者更多;低4位代表着应用总数,‘0’意味着没有应用,‘0xF’意味着15种应用或者更多。
(3)Protocol Info:协议信息,具体定义如下:
第一个字节是速率,定义如下:
第二个字节,高4位是最大帧大小,低4位是是否支持ISO14443-4。定义如下:
第三个字节包含: FWI, ADC, FO三个部分,定义如下:
FWI就是帧等待的时间值,意思就是发送完一帧数据之后要等待多久才能继续发。
ADC意思是应用数据编码:
FO: Frame Option, 帧选项:
ATTRIB
该命令用于选择PICC,命令格式如下:
(1)Identifier:就是PUPI
(2)Param1定义如下:
TR0是PICC响应PCD命令的最小延迟时间。定义如下:
TR1是PICC副载波调制开始到数据传输的最小延迟时间。定义如下:
EOF/SOF表示是否需要帧结束标识和帧开始标识。0表示需要,1表示不需要。
(3)Param2定义如下:
b7~b8定义PICC到PCD的速率:
b5~b6定义PCD到PICC的速率:
b1~b4定义最大帧大小:
(4)Param3定义如下:
它的高4位为预留位,值为0;低4位定义了PICC支持的协议类型,就是上面的是否支持ISO14443-4。
(5)Param4定义如下:
它的高4位为预留位,值为0;低4位为CID,它的取值范围为0~14。PCD定义了每个激活的PICC必须要有唯一的CID,如果PICC不支持CID,那么CID的值为(0000)b。
(6)Higher layer INF:高层信息,这字段不是强制的,只有部分特殊卡有。
ATTRIB应答
ATTRIB命令应答格式如下:
(1)第一个字节包含两个部分:
高4位MBLI( Maximum Buffer Length Index), 让PCD知道PICC内部缓冲区对接收链式帧的限制。链式帧就是将大的数据帧拆成多个数据帧。
低4位为PICC返回给PCD的CID,如果PICC不支持CID,则返回(0000)b。
(2)Higher layer Response:根据标签卡情况而定,可能有也可能没有。
HLTB
HLTB命令用来让卡进入休眠状态。命令格式如下:
(1)Identifier:即PUPI。
HLTB应答
HLTB的应答格式如下:
*注意:ISO14443A的HALT是没有应答的,而ISO14443B的HLTB是有应答的。
PCD检测PICC流程
(1)PCD发送REQB或WUPB, 匹配AFI则继续下一步。
(2)N=1时则PICC应答ATQB,如果N为其他数值(R), 则PCD发送Slot Marker命令依次进行匹配, 匹配后PICC应答ATQB。
(3)PCD发送ATTRIB来选择卡,或者发送HLTB让卡进入休眠。
防碰撞流程
ISO14443B的防碰撞过程的原理是基于时隙的。每次PCD发送的REQB /WUPB命令,PICC会产生一个随机值(就是时隙),PICC在哪个时隙响应都有可能(发送ATQB)。通过这种随机概率的方式来进行防碰撞。
防碰撞应答规则
当PICC接收到REQB/WUPB命令后,处于READY-REQUESTED状态时,PICC的响应应该遵循下面规则:
(1)如果N=1,PICC应该发送ATQB并且进入READY-DECLARED状态。
(2)如果N>1:
PICC可以采用概率法(PCD检测PICC流程图中的Option 1),并且进入空闲态(Idle State)。
PICC采用发送Slot-MARKER命令的方法(PCD检测PICC流程图中的Option 2),一直到槽序号等于R,然后PICC发送ATQB并且进入READY-DECLARED 状态。
总结
ISO14443A和ISO14443B部分命令是很相似的,主要区别在于处理防碰撞机制的差异。
审核编辑:刘清
-
adc
+关注
关注
98文章
6412浏览量
543887 -
读卡器
+关注
关注
2文章
409浏览量
39328 -
ISO
+关注
关注
0文章
253浏览量
39535 -
PICC
+关注
关注
0文章
23浏览量
13994
原文标题:【NFC专栏】ISO14443B协议
文章出处:【微信号:嵌入式软件开发交流,微信公众号:嵌入式软件开发交流】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论