14443-4
传输协议激活
RATS-Request for answer to select
第3节14443-3中,当PCD发出选择命令之后,卡片返回SAK,指示PICC是否支持14443-4。
如果PICC支持14443-4,并且PCD需要进入14443-4层,进行协议层的数据传输,那么将会发起RATS请求。
RATS 的编码格式
4.3 ATS - Answer to select
当PCD发出RATS请求之后,PICC应该响应该请求,并返回ATS,其格式如图,主要包括:
(1)长度字节TL (TL是强制存在的,是指传输的RATS的所有的字节长度,包括自身。);
(2)格式字节Fromat byte: T0{
T0是可选的,当TL > 1时T0存在
(1)T0高半字节指示接口字节是否存在;
(2)T0低半字节指示FSCI(编码格式和FSDI相同));
}。
(3)接口字节TA1{
(1)bit8指示PICC收发数据是否采用不同的分频因子D;
(2)b7-b5指示PICC发送数据时,所支持的波特率的能力;
(3)b3-b1指示PICC接收数据时,所支持的波特率的能力。
}、
TB1{
接口字节TB1定义了帧等待时间(FWT)和指定警戒时间(SFGT)
接口字节TB1-FWT:FWT,即帧等待时间,是指PCD发出数据结束,等待PICC响应数据返回的最大时间
接口字节TB1-SFGT :SFGT-指定警戒时间(specific guard time),是指PICC发送ATS之后,准备接收下一个字符所需要的最短间隔时间。
}、
TC1{
接口字节TC1指定了协议参数,即传递应用数据时,其中的协议参数NAD和CID是否存在
};
(4)历史字节;
(5)CRC.
PPS - Protocol and parameter selection request
初始状态时,D=1,通信波特率是最小的值,即为:106 kbit/s。
PCD通过分析PICC返回的ATS值,得到PICC的通信能力,即可发送PPS请求协商一个合适的通信波特率
PPS-Start byte
起始字节PPSS,包括两部分:
(1)bit8-bit5 = PPS ,其值为(1001)b;
(2)bit4-bit1 = CID。
** PPS-Parameter 0
**
PPS0指示PPS1是否存在:
PPS-Parameter 1
PPS1包含三部分:
(1)bit8-bit5为(0000)b;
(2)bit4-bit3 = DSI,即发送分频因子;
(3)bit2-bit1 = DRI,即接收分频因子;
PPS - Protocol and parameter selection response
PPS响应仅仅包含PPSS字节,和PPS请求时的PPSS相同。
如果PICC正确响应了PPSS,后续通信使用协商的波特率进行通信
半双工块传输协议
非接触智能卡要求采用半双工块传输协议传输数据。
半双工块传输协议的设计主要参考了OSI参考模型分层原理:
(1)物理层,在14443-3中定义;
(2)数据链路层;
(3)会话层;
(4)应用层。
1、**块格式-Block format
**
应用层的数据传输都是通过信息块进行传输的,一个信息块主要包含3个域:
(1)序言 - prologue field ;
(2)信息 - information field;
(3)结尾 - epilogue field;
序言 - prologue field 1.1
序言是强制存在的,最多可包含3字节:
(1) Protocol Control Byte - PCB;
(2) Card IDentifier - CID;
(3) Node ADdress - NAD;
1.1.1 序言 - PCB
PCB(Protocol control byte)是指协议控制字节,有三种类型的块:
(1)I-Block:传输信息层数据;
(2)R-Block:传输正向或反向确认
(NAK / ACK);
(3)S-Block:在PCD和PICC之间传输
交换控制信息,包括两种:
1、WTX-Waiting time extension;
2、DESELECT.
1.1.2 序言 - CID
CID - Card identifier field,主要包含3部分:
(1)b8-b7用于指示电源级别,应该设置为(00)b;
(2)b6-b5用于传输额外信息,如果未定义,则(00)b;
(3)b4-b3是CID,即由PCD指定的PICC的逻辑编号,如果PICC不支持CID,则可以忽略该信息。
1.1.3 序言 - NAD
NAD-Node address field,用于建立并标示不同的逻辑连接。有几点需要注意:
(1)NAD只能用在I-Block;
(2)如果PCD使用了NAD,那么PICC也必须使用NAD;
(3)如果存 在多个信息块链接的情况,NAD那么只被传输一次;
(4)如果PICC不支持NAD,可以忽略该字节
**1.2 信息域 - Information field **
信息域是可选的,如果存在,那么该域传输的数据可能为:
(1)在I-Block块中传输的是应用数据;
(2)在S-Block块中传输的是状态信息,比如为1字节的WTX(参考PCB字节编码规则)。
**1.3 结尾 – Epilogue field **
结尾包含2字节的EDC,即14443-3中定义的CRC
**2 帧等待时间-Frame waiting time **
帧等待时间(FWT)是指PCD发出数据结束后,PICC必须在FWT时间范围内做出响应。
该信息在ATS的TB1中,即PICC响应RATS命令时,返回给PCD的,因此,该等待时间FWT由PICC决定。
3 帧等待时间延长-Frame waiting time extension
当PICC处理命令较长时间时,超过了帧等待时间(FWT),则需要在FWT之内发送一个S-Block信息块,其中的INF域是1个字节的WTX.
**4 协议操作- Protocol operation
**
前面主要讲述的是半双工块传输协议的块的结构,包含了序言域、信息域、结束域。
问题提出:
(1)一个信息块最大的字节数为多少?
(2)是不是一个小与256字节的应用数据就可以使用一个帧传输?
(3)如何传递一个比较大的应用数据,比如1K?
**4.1 链接 - chaining
**
当传输一个较长的数据时,需要使用多个链接块进行传输时,并需要遵循一定的规则。
4.1 链接 - chaining
PCD : Block numbering 规则:
(1)PCD初始的block number为0;
(2)当收到PICC的I-Block或R(ACK) block时,如果和当前使用的Block number相等时,则需要切换当前的block number;
PICC : Block number规则:
(1)PICC初始的block number为1;
(2)当收到I-Block时,PICC需要切换该值;
(3)当R(ACK) 的Block number和PICC的不一样时,PICC需要切换该值。