介绍一下ISO14443B协议

描述

前言

上一篇《【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命令来检查是否有卡存在。命令码如下:

ISO

(1)APf: 防碰撞前缀,固定值为0x05。

(2)AFI: Application Family Identifier,应用族ID,用来指定要检查的PICC类型。值为0时表示所有PICC都要处理REQB/WUPB命令。定义如下:

ISO

注:X和Y的取值范围都为0x1~0xF。

AFI被分为高4位和低4位两个部分,通过这两部分的组合来确定PICC类型,可以简单理解为过滤设置。

(3)PARAM: 用来指定是REQB还是WUPB, 以及slot(槽)数量。

ISO

b4为0时表示REQB,为1时表示WUPB。这两命令和和ISO14443A中的REQA和WUPA类似。WUPB命令是处于IDLE,READY或HALT状态的卡都会应答,而REQB命令只有处于IDLE或READY状态的卡会应答。

b1~b3定义如下:

ISO

N主要是要配合Slot-MARKER命令一起解决防碰撞。N可以理解为最大随机值,就比如N=2, PICC会产生随机值1或2,如果是1会马上应答(ATQB),如果是2,就需要再发送Slot-MARKER命令,PICC才会应答。

Slot-MARKER

Slot-MARKER命令格式如下:

ISO

(1)APn:  槽(slot)序号, 它的值为 (nnnn 0101)b ,低4位是固定的。

ISO

ATQB

ATQB是REQB/WUPB和Slot-MARKER的应答命令。命令格式如下:

ISO

(1)PUPI:  和A卡中的UID类似。

(2)Application Data: 应用数据,具体定义如下:

ISO

AFI: 上面REQB中有提到了

Number of Applications: 应用数量,高4位与AFI一致,‘0’意味着无应用,‘0xF’意味着15种应用或者更多;低4位代表着应用总数,‘0’意味着没有应用,‘0xF’意味着15种应用或者更多。

(3)Protocol Info: 协议信息,具体定义如下:

ISO

第一个字节是速率,定义如下:

ISO

第二个字节,高4位是最大帧大小,低4位是是否支持ISO14443-4。定义如下:

ISO

ISO

第三个字节包含: FWI, ADC, FO三个部分,定义如下:

FWI就是帧等待的时间值,意思就是发送完一帧数据之后要等待多久才能继续发。

ADC意思是应用数据编码:

ISO

FO: Frame Option, 帧选项:

ISO

ATTRIB

该命令用于选择PICC,命令格式如下:

ISO

(1)Identifier:就是PUPI

(2)Param1定义如下:

ISO

TR0是PICC响应PCD命令的最小延迟时间。定义如下:

ISO

TR1是PICC副载波调制开始到数据传输的最小延迟时间。定义如下:

ISO

EOF/SOF表示是否需要帧结束标识和帧开始标识。0表示需要,1表示不需要。

(3)Param2定义如下:

b7~b8定义PICC到PCD的速率:

ISO

b5~b6定义PCD到PICC的速率:

ISO

b1~b4定义最大帧大小:

ISO

(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命令应答格式如下:

ISO

(1)第一个字节包含两个部分:

高4位MBLI( Maximum Buffer Length Index), 让PCD知道PICC内部缓冲区对接收链式帧的限制。链式帧就是将大的数据帧拆成多个数据帧。

低4位为PICC返回给PCD的CID,如果PICC不支持CID,则返回(0000)b。

(2)Higher layer Response: 根据标签卡情况而定,可能有也可能没有。

HLTB

HLTB命令用来让卡进入休眠状态。命令格式如下:

ISO

(1)Identifier: 即PUPI。

HLTB应答

HLTB的应答格式如下:

ISO

*注意:ISO14443A的HALT是没有应答的,而ISO14443B的HLTB是有应答的。

PCD检测PICC流程

ISO

(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部分命令是很相似的,主要区别在于处理防碰撞机制的差异。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分