
文章目录前言一、引言二、术语和定义三、Type A 型 PICC 的协议激活一、选择请求应答RATS二、选择应答ATS1、字节结构2、长度字节3、格式字节4、Interface byte TA(1)5、Interface byte TB(1)6、Interface byte TC(1)7、Historical bytes三、协议和参数选择请求PPS 请求1、起始字节PPSS2、参数 0PPS03、参数 1PPS14、协议和参数选择响应PPS 响应5、激活帧等待时间6、错误检测与恢复四、Type B 型 PICC 的协议激活五、半双工块传输协议一、块格式1、Prologue field1、协议控制字节PCB2、卡标识符字段CID3、节点地址字段NAD2、Information field3、Epilogue field二、帧等待时间FWT三、帧等待时间扩展WTX四、功率等级指示五、协议操作1、多激活Multi-Activation2、链接Chaining3、块编号规则4、块处理规则5、错误检测与恢复六、Type A 和 Type B 型 PICC 的 deactivation 协议一、Deactivation帧等待时间二、错误检测与恢复七、示例一、Multi-Activation 示例二、协议场景三、错误处理四、块和帧编码概览八、参考资料前言ISO/IEC 14443是国际标准定义13.56 MHz、近距离0–10cm非接触 IC 卡PICC与读写器PCD的通信规范即NFC底层协议广泛用于公交卡、门禁、银联闪付、手机Pay等。本文介绍14443-4的内容该规范描述定义了 13.56MHz 非接触 IC 卡Type A/B半双工传输协议完成卡激活、数据传输、去激活、差错处理。一、引言ISO/IEC 14443 是一系列描述 ISO/IEC 7810 中定义的识别卡参数以及此类卡用于国际交换使用的国际标准之一。本部分 ISO/IEC 14443 中定义的传输协议能够传输 ISO/IEC 7816-4 中定义的应用协议数据单元。因此应用协议数据单元可按 ISO/IEC 7816-4 中的定义进行映射并可按照 ISO/IEC 7816-5 中的定义使用应用选择。ISO/IEC 14443 旨在允许近耦合卡在符合 ISO/IEC 10536 和 ISO/IEC 15693 的其他非接触式卡存在的情况下运行。ISO/IEC 14443-4 规定了半双工块传输协议该协议针对非接触式环境的特殊需求并定义了协议的激活和停用序列。二、术语和定义1、bit duration位持续时间位持续时间定义为一个基本时间单位etu。etu 通过以下公式计算除数 D 的初始值应为 1。因此初始 etu 为载波频率 fc 在 ISO/IEC 14443-2 中定义。2、block块一种特殊类型的帧包含有效的协议数据格式。有效的协议数据格式包括 I-block、R-block 或 S-block。3、invalid block无效块一种包含无效协议格式的帧类型。超时未接收到帧不被解释为无效块。4、frame帧ISO/IEC 14443-3 中定义的一组位序列。Type A 型 PICC 使用为 Type A 定义的标准帧Type B 型 PICC 使用为 Type B 定义的帧。5、ACK肯定确认6、ATS选择应答7、ATQA请求应答Type A8、ATQB请求应答Type B9、CID卡标识符10、CRC循环冗余校验11、D除数12、DR接收除数PCD 到 PICC13、DRI接收除数整数PCD 到 PICC14、DS发送除数PICC 到 PCD15、DSI发送除数整数PICC 到 PCD16、EDC错误检测码17、etu基本时间单位18、fc载波频率19、FSC近耦合卡帧大小20、FSCI近耦合卡帧大小整数21、FSD近耦合设备帧大小22、FSDI近耦合设备帧大小整数23、FWI帧等待时间整数24、FWT帧等待时间25、FWTEMP临时帧等待时间26、I-block信息块27、INF信息字段28、NAD节点地址29、NAK否定确认30、PCB协议控制字节31、PCD近耦合设备32、PICC近耦合卡33、PPS协议和参数选择34、PPSS协议和参数选择起始35、PPS0协议和参数选择参数 036、PPS1协议和参数选择参数 137、R-block接收就绪块38、R(ACK)包含肯定确认的 R-block39、R(NAK)包含否定确认的 R-block40、RATS选择请求应答41、REQA请求命令Type A42、RFU保留供未来 ISO/IEC 使用43、S-block管理块44、SAK选择确认45、SFGI启动帧保护时间整数46、SFGT启动帧保护时间47、WUPA唤醒命令Type A48、WTX等待时间扩展49、WTXM等待时间扩展乘数三、Type A 型 PICC 的协议激活需应用以下激活序列按照 ISO/IEC 14443-3 定义的 PICC 激活序列请求、防碰撞循环和选择。开始时检查 SAK 字节以确定 ATS 的可用性。SAK 在 ISO/IEC 14443-3 中定义。如果没有 ATS 可用可以使用 ISO/IEC 14443-3 中定义的 HLTA 命令将 PICC 设置为 HALT 状态。如果有 ATS 可用PCD 在收到 SAK 后可发送 RATS 作为下一个命令。PICC 应发送其 ATS 作为对 RATS 的应答。只有当 RATS 在选择后直接收到时PICC 才应答 RATS。如果 PICC 支持 ATS 中的任何可更改参数PCD 在收到 ATS 后可使用 PPS 请求作为下一个命令来更改参数。PICC 应发送 PPS 响应作为对 PPS 请求的应答。如果 PICC 不支持 ATS 中的任何可更改参数则不需要实现 PPS。下图显示了 Type A 型 PICC 的 PCD 激活序列一、选择请求应答RATS本条定义了 RATS 及其所有字段参数字节由两部分组成高半字节b8 至 b5称为 FSDI用于编码 FSD。FSD 定义了 PCD 能够接收的最大帧大小。FSD 的编码见下表。低半字节b4 至 b1称为 CID定义被寻址 PICC 的逻辑编号范围为 0 至 14。值 15 为 RFU。CID 由 PCD 指定对于同时处于 ACTIVE 状态的所有 PICC 应是唯一的。CID 在 PICC 处于活动状态期间固定PICC 应使用接收到的第一个无错 RATS 中包含的 CID 作为其逻辑标识符。二、选择应答ATS本条定义了 ATS 及其所有可用字段。如果 PICC 发送的 ATS 中缺少某个定义的字段则应应用该字段的默认值。1、字节结构长度字节 TL 后跟可变数量的可选后续字节顺序如下格式字节 T0、接口字节 TA(1)、TB(1)、TC(1) 和历史字节 T1 至 Tk。2、长度字节长度字节 TL 是强制的指定所传输 ATS 的长度包括自身。两个 CRC 字节不包括在 TL 中。ATS 的最大大小不得超过指示的 FSD。因此TL 的最大值不得超过 FSD - 2。3、格式字节格式字节 T0 是可选的只要长度大于 1 就存在。只有存在此格式字节时ATS 才能包含以下可选字节。T0 由三部分组成最高位 b8 应设置为 0。值 1 为 RFU。位 b7 至 b5 包含 Y(1)指示后续接口字节 TC(1)、TB(1) 和 TA(1) 的存在。低半字节 b4 至 b1 称为 FSCI用于编码 FSC。FSC 定义 PICC 接受的最大帧大小。FSC 的默认值为 2对应 FSC 为 32 字节。FSC 的编码与 FSD 相同。4、Interface byte TA(1)接口字节 TA(1) 由四部分组成最高位 b8 编码支持每个方向使用不同除数的能力。当该位设置为 1 时PICC 无法处理每个方向的不同除数。位 b7 至 b5 编码 PICC 在 PICC 到 PCD 方向上的比特率能力称为 DS。默认值应为 (000)b。位 b4 应设置为 (0)b其他值为 RFU。位 b3 至 b1 编码 PICC 在 PCD 到 PICC 方向上的比特率能力称为 DR。默认值应为 (000)b。每个方向特定除数 D 的选择可由 PCD 使用 PPS 完成。5、Interface byte TB(1)接口字节 TB(1) 传递用于定义帧等待时间和启动帧保护时间的信息。接口字节 TB(1) 由两部分组成高半字节 b8 至 b5 称为 FWI用于编码 FWT。低半字节 b4 至 b1 称为 SFGI编码用于定义 SFGT 的乘数值。SFGT 定义 PICC 在发送 ATS 后准备接收下一帧所需的特定保护时间。SFGI 的编码范围为 0 到 14。值 15 为 RFU。值 0 表示不需要 SFGT值 1 到 14 用于使用以下公式计算 SFGT。SFGI 的默认值为 0。SFGT 通过以下公式计算6、Interface byte TC(1)接口字节 TC(1) 指定协议的一个参数。接口字节 TC(1) 由两部分组成最高位 b8 至 b3 应为 (000000)b所有其他值为 RFU。位 b2 和 b1 定义 PICC 支持序言字段中的哪些可选字段。允许 PCD 跳过 PICC 支持的字段但 PICC 不支持的字段不得由 PCD 传输。默认值应为 (10)b表示支持 CID不支持 NAD。7、Historical bytes历史字节 T1 至 Tk 是可选的用于指定一般信息。ATS 的最大长度给出了历史字节的最大可能数量。ISO/IEC 7816-4 规定了历史字节的内容。三、协议和参数选择请求PPS 请求PPS 请求包含起始字节后跟两个参数字节。1、起始字节PPSSPPSS 由两部分组成高半字节 b8 至 b5 应设置为 ‘D’标识 PPS。低半字节 b4 至 b1 称为 CID定义被寻址 PICC 的逻辑编号。2、参数 0PPS0PPS0 指示可选字节 PPS1 的存在。位 b5 应设置为 10 为 RFU。位 b8 至 b6 应设置为 (000)b所有其他值为 RFU。当位 b5 设置为 1 时PPS1 被传输。位 b4 至 b1 应设置为 (0000)b所有其他值为 RFU。3、参数 1PPS1PPS1 由三部分组成高半字节 b8 至 b5 应为 (0000)b所有其他值为 RFU。位 b4 和 b3 称为 DSI编码从 PICC 到 PCD 方向选择的除数整数。位 b2 和 b1 称为 DRI编码从 PCD 到 PICC 方向选择的除数整数。D 的编码见下表4、协议和参数选择响应PPS 响应PPS 响应对接收到的 PPS 请求进行确认并且仅包含起始字节。5、激活帧等待时间激活帧等待时间定义了 PICC 在接收到来自 PCD 的帧结束后开始发送其响应帧的最长时间其值为注任意方向上帧之间的最小时隙在 ISO/IEC 14443-3 中定义。6、错误检测与恢复1、RATS 和 ATS 的处理PCD 规则当 PCD 发送了 RATS 并收到有效的 ATS 时PCD 应继续操作。在任何其他情况下PCD 可在使用停用序列之前重传 RATS。如果此停用序列失败PCD 可使用 ISO/IEC 14443-3 中定义的 HLTA 命令。PICC 规则当 PICC 被最后一条命令选中后收到有效的 RATSPICC 应回送其 ATS并禁用 RATS停止响应接收到的 RATS。收到任何其他有效或无效的块HLTA 命令除外PICC 应忽略该块并保持接收模式。2、PPS 请求和 PPS 响应的处理PCD 规则当 PCD 发送了 PPS 请求并收到有效的 PPS 响应时PCD 应激活选定的参数并继续操作。在任何其他情况下PCD 可重传 PPS 请求并继续操作。PICC 规则当 PICC 已收到 RATS、发送了其 ATS 后收到有效的 PPS 请求PICC 应发送 PPS 响应禁用 PPS 请求停止响应接收到的 PPS 请求并激活接收到的参数。收到无效块PICC 应禁用 PPS 请求停止响应接收到的 PPS 请求并保持接收模式。收到除 PPS 请求外的有效块PICC 应禁用 PPS 请求停止响应接收到的 PPS 请求并继续操作。3、激活期间 CID 的处理当 PCD 发送的 RATS 包含 CID n ≠ 0 时收到指示支持 CID 的 ATSPCD 应向此 PICC 发送包含 CID n 的块并且在此 PICC 处于 ACTIVE 状态期间不得将 CID n 用于进一步的 RATS。收到指示不支持 CID 的 ATSPCD 应向此 PICC 发送不包含 CID 的块并且在此 PICC 处于 ACTIVE 状态期间不得激活任何其他 PICC。当 PCD 发送的 RATS 包含 CID 0 时收到指示支持 CID 的 ATSPCD 可向此 PICC 发送包含 CID 0 的块并且在此 PICC 处于 ACTIVE 状态期间不得激活任何其他 PICC。收到指示不支持 CID 的 ATSPCD 应向此 PICC 发送不包含 CID 的块并且在此 PICC 处于 ACTIVE 状态期间不得激活任何其他 PICC。四、Type B 型 PICC 的协议激活Type B 型 PICC 的激活序列在 ISO/IEC 14443-3 中描述。五、半双工块传输协议半双工块传输协议针对非接触式卡环境的特殊需求使用 ISO/IEC 14443-3 中定义的帧格式。帧格式的其他相关元素包括块格式最大帧等待时间功率指示协议操作。本协议根据 OSI 参考模型的分层原则设计特别注意最小化跨边界交互。定义了四层物理层根据 ISO/IEC 14443-3 交换字节。数据链路层交换本条定义的块。会话层与数据链路层结合以最小化开销。应用层处理命令涉及至少一个块或块链在任一方向上的交换。注应用选择可按 ISO/IEC 7816-5 中的定义使用。不建议在多应用 PICC 上使用隐式应用选择。一、块格式块格式包括Prologue field强制、information field 可选和epilogue field强制。1、Prologue field序言字段是强制的包含最多三个字节协议控制字节强制卡标识符可选节点地址可选。1、协议控制字节PCBPCB 用于传输控制数据传输所需的信息。协议定义了三种基本类型的块I-block信息块用于传输供应用层使用的信息。位 b2块编号应设置为 1。位 b5如果设置为 1表示后面有 NAD。位 b4如果设置为 1表示后面有 CID。位 b3如果设置为 1表示链接。位 b1 和 b6 应设置为 0。R-block接收就绪块用于传输肯定或否定确认。R-block 从不包含 INF 字段。确认针对最后接收到的块。位 b2块编号。位 b5如果设置为 0表示 ACK如果设置为 1表示 NAK。位 b3、b4、b6 应设置为 0。S-block管理块用于在 PCD 和 PICC 之间交换控制信息。定义了两种不同类型的 S-block等待时间扩展包含 1 字节长的 INF 字段。DESELECT不包含 INF 字段。位 b5 和 b4编码 S-block 类型如 WTX、DESELECT 等。PCB 的编码取决于其类型由以下图表定义。此处未定义的 PCB 编码要么用于 ISO/IEC 14443 的其他条款要么为 RFU。2、卡标识符字段CIDCID 字段用于标识特定的 PICC由三部分组成1、最高两位 b8 和 b7 用于指示 PICC 从 PCD 接收到的功率水平指示。对于 PCD 到 PICC 的通信这两位应设置为 (00)b。2、位 b6 和 b5 用于传输未定义的附加信息应设置为 (00)b所有其他值为 RFU。3、位 b4 至 b1 编码 CID。PICC 对 CID 的处理如下不支持 CID 的 PICC应忽略任何包含 CID 的块。支持 CID 的 PICC应使用其 CID 响应包含其 CID 的块。应忽略包含其他 CID 的块。如果其 CID 为 0也应通过不使用 CID 来响应不包含 CID 的块。3、节点地址字段NAD序言字段中的 NAD 保留用于建立和寻址不同的逻辑连接。当位 b8 和 b4 都设置为 0 时NAD 的使用应符合 ISO/IEC 7816-3 的定义。所有其他值为 RFU。NAD 的使用应适用以下定义a) NAD 字段应仅用于 I-block。b) 当 PCD 使用 NAD 时PICC 也应使用 NAD。c) 在链接期间NAD 应仅在链的第一个块中传输。d) PCD 不得使用 NAD 来寻址不同的 PICC应使用 CID 来寻址不同的 PICC。e) 当 PICC 不支持 NAD 时应忽略任何包含 NAD 的块。2、Information fieldINF 字段是可选的。当存在时INF 字段在 I-block 中传输应用数据在 S-block 中传输非应用数据和状态信息。信息字段的长度通过计算整个块的字节数减去序言和结尾字段的长度得出。3、Epilogue field结尾字段包含所传输块的 EDC即 ISO/IEC 14443-3 中定义的 CRC。二、帧等待时间FWTFWT 定义了 PICC 在 PCD 帧结束后开始发送其响应帧的时间。注任意方向上帧之间的最小时隙在 ISO/IEC 14443-3 中定义。FWT 通过以下公式计算其中 FWI 的取值范围为 0 到 14值 15 为 RFU。对于 Type A如果省略 TB(1)FWI 的默认值为 4对应的 FWT 约为 4.8 ms。FWI 0 时FWT FWT_MIN约 302 μs。FWI 14 时FWT FWT_MAX约 4949 ms。PCD 应使用 FWT 值来检测协议错误或无响应的 PICC。如果在 FWT 内未收到 PICC 响应的开始PCD 获得重传权。Type B 的 FWI 字段位于 ISO/IEC 14443-3 定义的 ATQB 中。Type A 的 FWI 字段位于 ATS 中。三、帧等待时间扩展WTX当 PICC 需要比定义的 FWT 更多的时间来处理接收到的块时应使用 S(WTX) 请求来请求等待时间扩展。S(WTX) 请求包含 1 字节长的 INF 字段由两部分组成最高两位 b8 和 b7 编码功率等级指示。低位 b6 至 b1 编码 WTXM。WTXM 的编码范围为 1 到 59。值 0 和 60 到 63 为 RFU。PCD 应通过发送 S(WTX) 响应进行确认该响应也包含 1 字节长的 INF 字段由两部分组成并包含与请求中收到的相同的 WTXM最高位 b8 和 b7 应为 (00)b所有其他值为 RFU。低位 b6 至 b1 编码被确认的 WTXM 值用于定义临时 FWT。相应的临时 FWT 值通过以下公式计算PICC 请求的时间 FWT_TEMP 从 PCD 发送 S(WTX) 响应后开始。当公式计算结果高于 FWT_MAX 时应使用 FWT_MAX。临时 FWT 仅适用于直到 PCD 收到下一个块为止。四、功率等级指示功率等级指示按下表所示编码使用嵌入在 CID 字段当存在时和 PICC 发送的 S-block 中的两位。注PCD 对功率等级指示的解释是可选的。五、协议操作激活序列后PICC 应等待块因为只有 PCD 有权发送。发送块后PCD 应切换到接收模式并在切换回发送模式之前等待一个块。PICC 只能响应接收到的块进行传输它对时间延迟不敏感。响应后PICC 应返回接收模式。PCD 不得在当前命令/响应对完成之前或帧等待时间超时无响应之前发起新的命令/响应对。1、多激活Multi-Activation多激活功能允许 PCD 同时保持多个 PICC 处于 ACTIVE 状态。它允许直接在多个 PICC 之间切换无需额外时间来停用一个 PICC 和激活另一个 PICC。注PCD 需要为每个激活的 PICC 维护独立的块编号。2、链接Chaining链接功能允许 PCD 或 PICC 通过将信息分成多个块来传输无法放入单个块分别由 FSC 或 FSD 定义的信息。每个块的长度应分别小于或等于 FSC 或 FSD。I-block PCB 中的链接位控制块的链接。每个设置了链接位的 I-block 应通过 R-block 确认。下表显示了使用三个块传输 16 字节字符串的链接功能。I(1)x设置了链接位的 I-block块编号为 xI(0)x未设置链接位的 I-block链的最后一个块块编号为 xR(ACK)x表示肯定确认的 R-block。3、块编号规则1、PCD 规则规则 A对于每个激活的 PICCPCD 块编号应初始化为 0。规则 B当收到块编号等于当前块编号的 I-block 或 R(ACK) 块时PCD 应在可选地发送块之前切换该 PICC 的当前块编号。2、PICC 规则规则 CPICC 块编号应在激活时初始化为 1。规则 D当收到 I-block无论其块编号如何时PICC 应在发送块之前切换其块编号。规则 E当收到块编号不等于 PICC 当前块编号的 R(ACK) 块时PICC 应在发送块之前切换其块编号。4、块处理规则1、通用规则规则 1第一个块应由 PCD 发送。规则 2当收到指示链接的 I-block 时该块应通过 R(ACK) 块确认。规则 3S-block 仅成对使用。S(…) 请求块之后必须紧跟 S(…) 响应块。2、PCD 规则规则 4当收到无效块或发生 FWT 超时时应发送 R(NAK) 块PICC 链接或 S(DESELECT) 情况除外。规则 5在 PICC 链接的情况下当收到无效块或发生 FWT 超时时应发送 R(ACK) 块。规则 6当收到 R(ACK) 块时如果其块编号不等于 PCD 的当前块编号应重传最后一个 I-block。规则 7当收到 R(ACK) 块时如果其块编号等于 PCD 的当前块编号则应继续链接。规则 8如果 S(DESELECT) 请求未得到无错 S(DESELECT) 响应的应答可以重传 S(DESELECT) 请求或忽略该 PICC。3、PICC 规则规则 9允许 PICC 发送 S(WTX) 块代替 I-block 或 R(ACK) 块。规则 10当收到未指示链接的 I-block 时该块应通过 I-block 确认。规则 11当收到 R(ACK) 或 R(NAK) 块时如果其块编号等于 PICC 的当前块编号应重传最后一个块。规则 12当收到 R(NAK) 块时如果其块编号不等于 PICC 的当前块编号应发送 R(ACK) 块。规则 13当收到 R(ACK) 块时如果其块编号不等于 PICC 的当前块编号且 PICC 处于链接中则应继续链接。5、错误检测与恢复当检测到错误时应尝试以下恢复规则。本条中的定义优先于块处理规则。PCD 应检测以下错误1、传输错误帧错误或 EDC 错误或 FWT 超时PCD 应按所示顺序尝试以下技术进行错误恢复应用 PCD 规则使用 S(DESELECT) 请求忽略 PICC。2、协议错误违反 PCB 编码或违反协议规则PCD 应按所示顺序尝试以下技术进行错误恢复使用 S(DESELECT) 请求忽略 PICC。PICC 应检测以下错误1、传输错误帧错误或 EDC 错误。2、协议错误违反协议规则。PICC 不应尝试错误恢复。当发生传输错误或协议错误时PICC 应始终返回接收模式并且应随时接受 S(DESELECT) 请求。注R(NAK) 块从不由 PICC 发送。六、Type A 和 Type B 型 PICC 的 deactivation 协议在 PCD 和 PICC 之间的交易完成后PICC 应被设置为 HALT 状态。PICC 的停用通过使用 DESELECT 命令完成。DESELECT 命令编码为协议的 S-block由 PCD 发送的 S(DESELECT) 请求块和 PICC 作为确认发送的 S(DESELECT) 响应组成。一、Deactivation帧等待时间停用帧等待时间定义了 PICC 在接收到来自 PCD 的 S(DESELECT) 请求帧结束后开始发送其 S(DESELECT) 响应帧的最长时间其值为65536/fc (~4,8 ms).注任意方向上帧之间的最小时隙在 ISO/IEC 14443-3 中定义。二、错误检测与恢复当 PCD 发送了 S(DESELECT) 请求并收到了 S(DESELECT) 响应时PICC 已成功设置为 HALT 状态且分配给它的 CID 被释放。当 PCD 未能收到 S(DESELECT) 响应时PCD 可重试停用序列。七、示例一、Multi-Activation 示例下表描述了三个 PICC 使用多激活的示例。二、协议场景提供了一些无错操作和错误处理的场景。这些场景可用于构建一致性测试的测试用例。符号说明场景中的块编号始终以目标 PICC 的 PCD 当前块编号开始。为便于呈现场景从 PICC 激活序列之后开始因此 PCD 的当前块编号从 0 开始PICC 的当前块编号从 1 开始。无误操作场景 1I-block 交换场景 2等待时间扩展场景 3DESELECT场景 4PCD 使用链接场景 5PICC 使用链接三、错误处理I-block 交换场景 6协议开始场景 7I-block 交换场景 8I-block 交换场景 9I-block 交换等待时间扩展请求场景 10等待时间扩展请求场景 11等待时间扩展请求场景 12等待时间扩展请求场景 13等待时间扩展请求场景 14等待时间扩展请求DESELECT场景 15DESELECTChaining场景 16PCD使用链场景 17PCD使用链场景 18PCD使用链场景 19PCD使用链场景 20PCD使用链四、块和帧编码概览本条概述了 PCD 发送的不同块和帧编码。块或帧的类型由第一个字节指示。ISO/IEC 14443-3 中的定义本部分 ISO/IEC 14443 中的定义表 C.1 — 块和帧编码八、参考资料ISO 10536ISO 14443ISO 15693ISO 18092ISO 7810ISO 7811ISO 7812ISO 7813ISO 7816NFC Forum