PBOC第八部分和第十一部分关于TYPEA总结(二)——传输协议(ISO14443-4)
二、传输协议(ISO14443-4)(8,P50 11,P30)

1、选择应答请求(RATS)

使用RATS命令和PICC协商通讯的最大帧长度(FSD和FSC)、帧等待时间(FWT)和启动帧保护时间(SFGT)。
RATS命令使用带有CRC_A的标准帧进行传输
格式 开始字节+参数(FSDI和CID)(1个字节) +CRCA16
(1)开始字节 E0
参数高4位 FSDI,它用于编码FSD。FSD定义了PCD能收到的帧的最大长度。 一般为5,64字节
低4位 CID ,它定义编址了的PICC的逻辑号在0到14范围内。值15为RFU。
CID由PCD规定,并且对同一时刻处在ACTIVE状态中的所有PICC,它应是唯一的。
CID在PICC被激活期间是固定的,并且PICC应使用CID作为其逻辑标识符,它包含在接收到的第一个无差错的RATS。
PCD设置CID为0表示每次仅支持对一张PICC进行定位。一般为1,
所这参数这个字节普通设置为51。

注意:第十一部分 P30 PCD应设置FSDI为FSDIMIN。FSDIMIN的取值见附录A ,FSDIMIN值为8,即为256字节,PCD的FIFO的长度一般为64字节,此处为什么要设置成8??
一般设置成51。
2、RATS响应(ATS)
ATS使用带有CRC_A的标准帧进行传输

(1)长度字节TL
长度字节TL是必备的,它规定了ATS(包括TL自身)的长度,不包括两个CRC_A字节。
(2)格式字节T0 当长度大于1时便出现,
b8 为0
b7 为1时代表TC(1)被传输
b6 为1时,代表TB(1)被传输
b5 为1时,代表TA(1)被传输
b4~b1 FSCI编码,定义了PICC能接收的帧的最大长度。FSCI的缺省值为2 即32字节

(3)TA(1) 接口字节
传送了PICC支持的位速率能力信息
最高有效位b8编码了为每个方向处理不同除数的可能性。当该位被置为1时,PICC不能为每个方向处理不同除数;
如果b8=1,则仅支持两个方向上相同的位速率除数D((DPICC→PCD) = (DPCD→PICC))如果b8=0,则支持每个方向上不同的位速率除数D应为1
—位b7到b5为PICC到PCD方向编码了PICC的位速率能力,称为DS。缺省值应为(000)b;
——位b4被置为(0)b,其他值为RFU;
—位b3到b1为PCD到PICC方向编码了PICC的位速率能力,称为DR。缺省值应为(000)b。

(4)接口字节TB(1)
传送了定义帧等待时间(FWT)和启动帧保护时间(SFGT)的信息。
(5)接口字节TC(1)
指出PICC是否支持NAD和CID
——最高有效位b8到b3为000000b,所有其他值为RFU;
——位b2和b1定义了在PICC支持的开端字段中的可选字段。允许PCD跳过已被指出被PICC支持的字段,但PICC不支持的字段应不被PCD传输。缺省值应为(10)b,它指出支持CID和不支持NAD。

(6)历史字节:
历史字节T1到Tk是可选的并包含了通用信息。ATS的最大长度给出了历史字节的最大可能数目15个字节。
3、半双工块传输协议
半双工块传输协议符合无触点卡环境的特殊需要
块格式,由一个头域(必备)、一个信息域(可选)和一个尾域(必备)组成

PCD发送的块的总长度应小于或等于FSC(FSC在协议安装时由PICC指定)
(1) 头域
最多由三个字节构成:协议控制字节PCB(必备); 卡标识符CID(可选); 结点地址NAD(可选)。
(2)协议控制字节域PCB
PCB用于传送控制数据传输所需要的信息。
协议定义了块的三种基本类型:
——用于为应用层的使用传送信息的信息块(I-块);
——用于传送确认或不确认的接收准备块(R-块)。R-块不包含INF域。确认涉及最后接收到的块;
——用于在PCD和PICC间交换控制信息的管理块(S-块)。两种不同类型的S-块定义如下:
● 包含1字节长INF域的等待时间延迟,和
● 不包含INF域的DESELECT



(3)卡标识符CID
CID域用于识别特定的PICC,它由三部分组成:
——最高有效位b8,b7用于从PICC到PCD的功率水平指示。对于PCD到PICC的通信,这两位应被置为0。、
——位b6和b5用于传送附加信息,它没有被定义并应置为(00)b,所有其他值为RFU;
——位b4到b1编码CID。

(4)结点地址域NAD
在头域里的NAD被保存用于建立和编址不同的逻辑连接。当位b8和b4被置为0时
下列定义应适用NAD的用途:
——NAD域应仅用于I-块;
——当PCD使用NAD时,PICC也应使用NAD;
——在链接期间,NAD仅在链的第一个块内传输;
——PCD应不使用NAD编址不同的PICC(CID应被用于编址不同的PICC);
——当PCD不支持NAD时,应忽略任何包含NAD的块。
(5)信息域
信息域是可选的。当出现在I块中时,信息域传送的是应用数据,当出现在S块中时,它传送的是非应用数据和状态信息。信息域的长度可以通过计算整个块的长度减去头域和尾域的长度来得到。
(6)尾域
该域包含传输块的EDC。EDC为第7章中定义的CRC。
每个设置链接位的I块必须用R(ACK)块确认
当PCD发送一组链接的I块,每个指示了链接的块的大小应等于FSC
(7)帧等待时间(FWT)
FWT给PICC定义了在PCD帧结束后开始其响应帧的最大时间

注:在任何方向上两个帧之间的最小时间在第7章中定义。 FWT通过下面的公式计算: FWT=(256×16/fc)×2FWI
其中FWI的值在0到14之间,15为RFU。对于Type 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收回发送的权利。
(8)帧等待时间扩展
当PICC需要比定义的FWT更多的时间用于处理接收到的块时,应使用S(WTX)请求等待时间扩展。S(WTX)请求包含1字节长INF域,它由两部分组成(见图57):
——最高有效位b8,b7编码功率水平指示(见8.3.4);
——最低有效位b6到b1编码WTXM。WTXM在1到59范围内编码。值0和60到63为RFU。

PCD应通过发送包含1字节长INF域的S(WTX)来确认,该INF域由两部分组成,并包含了与在请求中接收到的相同的WTXM:
——最高有效位b8,b7为(00)b,所有其他值为RFU;
——最低有效位b6到b1编码了用于定义临时FWT的确认的WTXM值。

FWT的响应的临时值通过下面的公式计算: FWTTEMP= FWT×WTXM PICC需要的时间FWTTEMP在PCD发送了S(WTX)响应之后开始。 当公式得出的结果大于FWTMAX时,应该使用FWTMAX。 临时FWT仅在下一个块被PCD接收到时才应用
(9)功率水平指示
功率水平指示通过使用插入在CID(当存在时)中的两位来编码,并在S-块中被PICC发送
(00)b PICC不支持功率水平指示
(01)b 对于完整功能性,功率不充分
(10)b 对于完整功能性,功率充分
(11)b 对于完整功能性,功率超出
4、协议操作
(1)多激活
多激活特征允许PCD保持几个PICC同时在ACTIVE状态。对于停活PICC和激活另一张PICC,这允许几个PICC间直接转换而无须另外的时间。多激活的举例见附录G。
注:对每个已激活的PICC,PCD需要处理分离的块号。
(2)链接
链接过程允许PCD或PICC通过把信息划分成若干块来传输不符合分别由FSC或FSD定义的单块的信息。每一块的长度应分别小于或等于FSC或FSD。 块的链接通过链接I-块中PCB的位(M)来控制。每一个带链接位集的I-块应被R-块确认。

注:本例没有使用可选字段NAD和CID。
5、块处理规则
一般规则
规则1:首块应由PCD来发送。
规则2:当I-块指示链接已被接收到时,块应由R(ACK)块来确认。
规则3:S-块仅成对使用。S(…)请求块总是跟随着S(…)响应块(见8.3.3和8.4)。
6、PCD规则
规则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可以被忽视。
7、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、差错检测和恢复
当检测到差错时,应试图使用下列恢复规则。本章中的定义支配块处理规则(见8.3.5.3)。 下列差错应被PCD检测到: a)传输差错(帧差错或EDC差错)或FWT超时 PCD应试图通过以下顺序示出的技术进行差错恢复:
——块的重新传输(可选);
——S(DESELECT)请求的使用;
——忽视PICC。
b)协议差错(违反了PCB编码或违反了协议规则) PCD应试图通过以下顺序示出的技术进行差错恢复:
——S(DESELECT)请求的使用;
——忽视PICC。
当PCD发送了S(DESELECT)请求并接收到了S(DESELECT)响应,则PICC已被成功地置为了HALT状态并且分配给它的CID也被释放。 当PCD没有接收到S(DESELECT)响应,则PCD可以重新进行停活序列。
PBOC第八部分和第十一部分关于TYPEA总结(二)——传输协议(ISO14443-4)的更多相关文章
- PBOC第八部分和第十一部分关于TYPEA总结(一)——初始化和防冲突(ISO14443-3)
PBOC第八部分和第十一部分关于TYPEA总结(一) ——初始化和防冲突(ISO14443-3) 第八部分 与应用无关的非接触式规范 ISO14443(1~4) 第十一部分 非接触式IC卡通讯规范 在 ...
- 第八十一篇:Vue购物车(二) 名称,图片,价格的渲染
好家伙, 1,为组件封装属性, 需要封装以下属性: 需要定义的属性 属性名 值的类型 商品名 title String 商品图片 pic String 商品价格 price Number 是否勾选 s ...
- 【OpenCV新手教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...
- OpenLayers学习笔记(八)— 类似比例尺的距离环(二)
openlayers 3 地图上创建一个距离环,始终以地图中心为中心,每个环之间的距离类似比例尺,随地图缩放而变化. 添加具有覆盖整个范围的特征的虚拟层,其可以被设置为围绕地图中心的环. 这篇是上一篇 ...
- SQL注入之Sqli-labs系列第五十关,第五十一关,第五十二关,第五十三关(ORDER BY堆叠注入)
0x1第五十关 源码中使用的mysqli_multi_query()函数,而之前使用的是mysqli_query(),区别在于mysqli_multi_query()可以执行多个sql语句,而mysq ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- R in action读书笔记(15)第十一章 中级绘图 之二 折线图 相关图 马赛克图
第十一章 中级绘图 本节用到的函数有: plot legend corrgram mosaic 11.2折线图 如果将散点图上的点从左往右连接起来,那么就会得到一个折线图. 创建散点图和折线图: &g ...
- Struts(十一):OGNL表达式(二)
Map栈 :request,session,application的一个属性值或一个请求参数的值. 若想访问ContextMap里的某个对象的属性,可以使用以下几种之一: #object.proper ...
- Redis学习第八课:Redis高级实用特性(二)
Redis高级实用特性 4.持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式:(1).snapshott ...
随机推荐
- iOS开发-多层嵌套block中如何使用__weak和__strong
1.关于__weak__weak只能在ARC模式下使用,也只能修饰对象(比如NSString等),不能修饰基本数据类型(比如int等)__weak修饰的对象在block中不可以被重新赋值.__weak ...
- 最小n个和(优先队列)
给出两个包含 nn 个整数的数组 AA,BB.分别在 AA, BB 中任意出一个数并且相加,可以得到 n^2n2个和.求这些和中最小的 nn 个. 输入格式输入第一行一个整数 n(1 \le n \l ...
- [Java]字符串数组 与 字符串链表 之间的相互转化
代码: package com.hy; import java.util.Arrays; import java.util.Collections; import java.util.List; pu ...
- C++ STL——stack和queue
目录 一 stack容器 二 queue容器 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 栈和队列作为经典的数据结构,我们再熟悉不过了.C++ ST ...
- LC 593. Valid Square
Given the coordinates of four points in 2D space, return whether the four points could construct a s ...
- jQuery常用Event-API
目的:对web页面(HTML/JSP)进行事件触发,完成特殊效果的处理 window.onload:在浏览器加载web页面时触发,可以写多次onload事件,但后者覆盖前者 ready:在浏览器加载w ...
- AOP获取方法注解实现动态切换数据源
AOP获取方法注解实现动态切换数据源(以下方式尚未经过测试,仅提供思路) ------ 自定义一个用于切换数据源的注解: package com.xxx.annotation; import org. ...
- java基础内存基础详解
堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对 ...
- Qt 字符映射表 显示图标
一.利用字符映射表segmdl2.ttf,窗体显示字符图片. 在win10里面搜“字符映射表”,选择字体segmdl2.ttf,查看图标对应得16进制值.把此字体拷贝到程序的目录下. 二.使用 #if ...
- 纹理特征描述之自相关函数法 纹理粗糙性与自相关函数的扩展成正比 matlab代码实现
图像中通常采用自相关函数作为纹理测度 自相关函数的定义为: 调用自定义函数 zxcor()对砖墙面和大理石面纹理进行分析: 自定义函数 zxcor(): function [epsilon,eta ...