二、传输协议(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 ,FSDI值为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可以重新进行停活序列。