ISO14443相关的协议

描述

前言

    之前《【NFC专栏】ISO14443A协议》和《【NFC专栏】ISO14443B协议》两篇中我们都有提到ISO14443-4协议,所以ISO14443-4协议是适用于二者的。但并不是所有A卡或B卡都支持ISO14443-4协议。

ISO14443-4简介

    ISO14443-4定义了半双工块传输协议,该协议适用于Type-A和Type-B两种卡。该协议还定义了激活与去激活的流程。

名词解析

ATS: Answer To Select, 选择应答

PPS: Protocol and Parameter Selection,协议和参数选择 RATS: Request for answer to select, 选择应答请求 FSD: Frame Size for proximity coupling Device, PCD的接收帧大小 FWI: Frame Waiting time Integer, 帧等待时间值

SFGI: Start-up Frame Guard time Integer, 启动帧保护时间值

NAD: Node Address,节点地址

PCB: Protocol Control Byte, 协议控制字节

命令介绍

RATS

该命令用于获取PICC的更详细的信息,格式定义如下:

编码

总共4个字节,我们主要关注Parameter字段,它由两部分组成。

编码

(1) FSDI: FSD编码值,即PCD能接收的最大帧大小。定义如下:

编码

(2)CID:用于PICC的寻址,值为0~14。ISO14443B协议中有提到过。

ATS

该命令用于应答RATS。格式定义如下:

编码

(1) TL: TL到Tk的字节数(包含TL本身)。

(2) T0: 定义了后面的字段是否存在,以及PICC能接收的帧大小。

编码

b5~b7每个位表示TA~TC字段是否出现,为1则表示出现。

b1~b4为FSCI,表示PICC能接收的帧的大小,定义和上面的FSDI一样。

(3) TA: 跟速率有关的信息。

编码

bit8定义了不同方向使用不同bit速率处理数据的能力,当该位设置成1时,PICC不支持不同方向的速率不一致。

b5~b7定义了PICC到PCD的速率(DS)。

b1~b3定义PCD到PICC的速率(DR)。

(4) TB: 帧等待时间以及启动帧保护时间。

编码

FWI:帧等待时间(即两个帧之间的等待时间),计算公式如下:

编码

SFGI:启动帧保护时间(PICC发送ATS之后PCD多久才能继续发), 计算公式如下:

编码

(5) TC: 是否支持CID和NAD。

编码

(6) T1~Tk:可选字段,在ISO7816-4中定义。

PPS

该命令用于协议和参数的选择。格式定义如下:

编码

(1) PPSS: 起始字节,定义如下:

编码

高4位固定为1101,CID就是上面介绍的,没有则为0000。

(2)PPS0: 用于指示PPS1是否出现。

编码

b5为1则表示PPS1字段有出现。

(3)PPS1: 选择的速率。

编码

DSI: PICC到PCD的速率

DRI: PCD到PICC的速率

具体定义如下:

编码

1对应的就是106kbit/s, 2对应212kbit/s, 以此类推。

PPS应答

PPS的应答格式如下:

编码

PPSS: 起始字节, 在PPS命令中解释了。

Type A激活协议

编码

(1) 前面几步就是我们在ISO14443A协议中讲过的,主要是看是否支持ISO14443-4,判断是否支持在《【NFC专栏】ISO14443A协议》中有提到。接下来我们主要看支持ISO14443-4的流程。

(2) PCD发送RATS命令,PICC则应答ATS。

(3) 如果卡支持PPS命令,PCD可以PPS命令来修改参数。

(4) 进行半双工协议传输,如果想结束传输,PCD可以发送DESELECT命令。

Type B激活协议 ISO14443B的激活流程在《【NFC专栏】ISO14443B协议》中已经讲过了,在ISO14443-4中没有新增的内容。

半双工块传输协议

进行半双工传输的块格式(帧格式)有两种: 标准块格式和增强型块格式。定义如下:

标准块格式

编码

增强型块格式

编码

两者的区别就在于是否有Length字段,这个字段是用于纠错的。

(1)Length

表示总长度,包含Length,Prologue, Information三个字段。

(2)Prologue

可以包含PCB, CID, NAD,PCB是强制的,CID和NAD是可选的。

PCB:控制传输的信息,它定义了三种不同的block。

I-Block

编码

R-Block

编码

S-Block

编码

I-Block用于传输应用层信息,R-Block用于传输ACK或NACK,S-Block用于交换控制信息。

CID定义如下:

编码

NAD:定义在ISO7816-3。

(3)Information

传输过程中的数据,比如应用数据或状态码等。

(4)Epilogue

EDC: 就是CRC校验值

Chaining传输

Chaining传输可以理解为分段传输,当单个数据包超过帧的最大大小的时候,就要拆分成几个进行传输。比如下面的示意图:

编码

上半部分是发送端,下半部分是接收端。

(1)发送端将完整的数据包拆分成3个I-Block。

(2)接收端收到后判断出是Chaining,则发送R-Block进行应答。到最后一个包正常应答I-Block。

总结

    到此,我们就将ISO14443相关的协议基本都讲完了,当然这是标准的协议,基于该标准的一些卡还有很多特殊的命令和特性,比如Mifare,所以在开发过程中,还要查看卡的datasheet。  

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

全部0条评论

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

×
20
完善资料,
赚取积分