ISO14443 Type B类型卡的防碰撞过程以及命令解析
一、介绍
本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 Type B协议检测匹配的PICC(Polling For Proximity Cards)命令以及防碰撞过程(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 Family Identifier(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 Data Coding)。它们的编码以及含义如下所示。
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 Buffer Length 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-REQUESTED sub-state时,PICC的响应应该遵循下面规则(N是REQB/WUPB命令中的参数):
—-如果N=1,PICC应该发送ATQB并且进入READY-DECLARED sub-state。
—-如果N>1:PICC可以采用概率法(PCD检测PICC流程图中的Option 1),并且进入空闲态(Idle State);
PICC采用发送Slot-MARKER命令的方法(PCD检测PICC流程图中的Option 2),一直到槽序号等于R,然后PICC发送ATQB并且进入READY-DECLARED sub-state。
五、实例
ISO14443 Type B类型卡的防碰撞过程以及命令解析相关推荐
- ISO14443 Type A类型卡的防碰撞过程以及命令解析
一.介绍 本博文介绍了PCD(Proximity Coupling Device)使用ISO14443-3 Type A协议检测匹配的PICC(Polling For Proximity Cards) ...
- 【射频技术】ISO14443协议A类卡——PCD防止PICC冲突并选出一张PICC的过程
相关知识铺垫: 注意: ①阅读本文之前需要一定的射频知识基础 ②类型A表示A型卡(即A型PICC),其实类型A.类型B之类的可以忽略,本文主要就是以A型卡为例讲述PCD防止PICC冲突的过程. PCD ...
- ISO15693类型的命令解析以及防碰撞过程
一.介绍 本博文介绍了符合ISO15693标准的标签类型的检测以及防碰撞过程. 二.协议简介 (2.1)ISO15693介绍了三种模式,它们之间的关系如下所示: (2.2)请求命令格式: SOF Fl ...
- Python Type Hint类型注解
原文地址:https://realpython.com/python-type-checking/ 在本指南中,你将了解Python类型检查.传统上,Python解释器以灵活但隐式的方式处理类型.Py ...
- python列表实现原理_Python动态类型实现原理及过程解析
在python中,我们使用变量时,并没有声明变量的存在和类型.类型是在运行过程中自动决定的. a = 3 python将会执行三步去完成上面这个请求. 1.创建一个对象代表3 2.创建一个变量a,如果 ...
- DataScience:风控场景之金融评分卡模型的构建(逻辑回归)开发(转评分卡)、使用过程(线上实现)之详细攻略
DataScience:风控场景之金融评分卡模型的构建(逻辑回归)&开发(转评分卡).使用过程(线上实现)之详细攻略 目录 风控场景之金融评分卡模型的构建(逻辑回归)&开发(转评分卡) ...
- DataScience:风控场景之金融评分卡模型的简介、构建(逻辑回归)开发(转评分卡)、使用过程(线上实现)之详细攻略
DataScience:风控场景之金融评分卡模型的简介.构建(逻辑回归)&开发(转评分卡).使用过程(线上实现)之详细攻略 目录 逻辑回归之金融评分卡模型的简介.构建.开发.使用过程 1.金融 ...
- Thymeleaf模板引擎处理日期输入框回显问题type=“date“类型的坑 和 单选按钮、复选框的回显
type="date"类型的日期输入框的默认格式为"yyyy/MM/dd",但是如果使用Thymeleaf的日期格式化工具类的时候使用"yyyy/MM ...
- 数据库存取BLOB类型音乐文件的过程及常见错误
数据库存取BLOB类型音乐文件的过程及常见错误 数据库端的准备工作: 新建表,用来存放音乐文件:mymusic 第一列:id 类型:int 第二列:music 类型:blob 将音乐文件存入数据库 / ...
最新文章
- 【Java基础】容器
- django 的用户验证及登录状态保持
- 【BZOJ】【2154】Crash的数字表格
- Thymelaf中使用select进行消息的回显
- Subversion的权限控制
- Vue项目实战09 : vue3.0实现点击切换验证码(组件)及校验
- NPOI office操作
- JavaWeb基础—JS学习小结
- vue的双向绑定原理及实现
- Mariadb 二进制半自动安装脚本
- 扩散(洛谷-P1661)
- 收藏 | 超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
- Bean复制的几种框架性能比较(BeanUtils、PropertyUtils、BeanCopier)
- cgi java编程_Java的CGI数据编码改如何编写
- 学习笔记10--自动驾驶汽车软件架构
- python爬取糗百第一页的笑话
- bin和cue怎么合并_bin和cue格式的文件怎么用?
- 搜狗推送接口-搜狗推送口子
- 刘易斯拐点对中国经济的影响
- KVM之父的新作ScyllaDB:用C++开发的Cassandra兼容列数据库,性能提升10倍