一、引言

  RFID(Radio Frequency Identification)技术是一种利用无线电信号自动识别特定目标并读写相关数据的无线通信技术。高频RFID技术,特别是工作在13.56MHz的系统,因其在读写距离、数据速率和成本方面的良好平衡,成为了门禁系统、非接触式支付​(如公交卡、校园一卡通)、电子护照、身份证以及物流管理等领域的主流选择。这些应用大多遵循由国际标准化组织(ISO)和国际电工委员会(IEC)联合制定的ISO/IEC 14443标准,该标准定义了邻近式卡(Proximity Card)的通信协议。

二、标准概述

  ISO/IEC 14443标准旨在规范13.56MHz频率下非接触式识别卡(PICC)与读写器(PCD)之间的通信。该标准由物理特性、射频功率与信号接口、初始化和防冲突、​传输协议四个部分组成。

2.1 14443标准A、B对比表

  ISO/IEC 14443标准根据信号接口不同又可分为Type A、Type B两类,两种标准具备两种互不兼容的通信调制方式和协议。

14443-A与14443-B标准比对
14443-A标准 14443-B标准
物理特性 PICC的物理尺寸和机械特征没有区别
射频
功率

信号
接口
工作频率 13.56MHz
通讯速率 106 kbit/s
工作特性 ​抗干扰能力强 ​​ 电源稳定性好,安全性更高
但易受外界环境干扰
向卡片
发送数据
PCD->PICC
​100% ASK (幅移键控)调制
Miller编码
​​ 10% ASK (幅移键控)调制
​NRZ (不归零) 编码
向读卡器
发送数据
PICC->PCD
​OOK(开关键控)调制
​曼彻斯特编码
​​ BPSK(二进制相移键控)调制
​NRZ (不归零) 编码
初始化

防冲突
防冲突 ​基于​比特冲突检测机制 ​​ 基于​时隙ALOHA​ 协议
UID ​通常为4字节或7字节 ​​ PUPI,4字节
传输协议 I/R/S-Block协议
推动厂商 飞利浦、恩智浦 (NXP) 摩托罗拉、意法半导体
应用场景 MIFARE​系列、门禁、交通、票务 居民身份证、公交一卡通

2.2 标准PICC对比表

  在14443-A标准之上,不同的芯片制造商和标准组织开发了多种多样的卡片类型,它们在安全机制、内存结构、操作系统和应用功能上有天壤之别。卡片分为几个主要类型如下:

PICC类型对比
  卡片家族 Mifare家族 CPU卡
协议标准 14443-A 14443-B
类型 Mifare_UltraLight
M0卡
Mifare_Classic
M1卡(S50、S70)
Mifare_Plus Mifare_DESFire CPU卡
安全性 无安全保护,数
据可随意读取
专有的流密码算
法,但已彻底破
解,安全性很低
AES-128加密,Classic的安全升级版,具备密钥管理和访问控制 AES/TDES加密,具备真随机数生成器、安全密钥存储等特性,安全性高 RSA、ECC、DES、AES等多种国际标准算法,安全性极高
数据存储 线性地址空间;页式存储,每页4字节 固定扇区存储;每个扇区4个数据块,每块16字节 固定扇区存储;每个扇区4个数据块,每块16字节 灵活文件系统 复杂文件目录
应用场景 地铁单程票、演唱会门票、NFC标签 门禁卡、公交卡、饭卡 安全性更高的公交卡、门禁 高端一卡通、电子钱包 二代身份证、金融IC卡

三、14443-A标准详解

3.1 标准命令代码

命令编码 命令类型 命令功能
0x00 读写器命令 取消当前指令
0x03 读写器命令 CRC计算
0x04 读写器命令 发送数据
0x08 读写器命令 接收数据
0x0C 读写器命令 发送并接收数据
0x0E 读写器命令 密钥验证
0x0E 读写器命令 读写器复位
0x26 Type_A卡片命令 寻天线区内未进入休眠状态的Type_A卡
0x30 Type_A卡片命令 读取卡片块数据
0x50 Type_A卡片命令 休眠卡片
0x52 Type_A卡片命令 寻天线内全部卡片
0x60 Type_A卡片命令 验证A密钥
0x61 Type_A卡片命令 验证B密钥
0x93 Type_A卡片命令 一次防冲撞
0x95 Type_A卡片命令 二次防冲撞
0xA0 Type_A卡片命令 写入卡片块数据
0xB0 Type_A卡片命令 保存缓冲区中数据
0xC2 Type_A卡片命令 块数据写入缓冲区

3.2 通讯命令协议格式

  PICC通信基本命令包含REQA(寻卡)、WAKE-UP(唤醒寻卡)、ANTICOLLISION(防冲突)、SELECT(选卡)、HALT(休眠)5个命令。通过基本命令建立PICC和PCD的基础通讯链路。

3.2.1 寻卡命令协议(REQA/WAKE-UP)
寻卡命令协议(PCD -> PICC)
请求命令 REQA WAKE-UP
命令说明 探测天线区内未进入休眠的Type_A卡 探测并唤醒处于休眠状态的Type_A卡
请求格式 0x26 0x52
发送方式 7个数据位发送,LSB首先发送(不加奇偶校验)
响应命令 ATQA
命令说明 2字节数据(可判断卡片类型)
Bit1 ~ Bit5:比特帧防冲突;Bit6,Bit9 ~ Bit16:预留
Bit8、Bit7:UID长度(00:级联级别1,4字节;01:级联级别2,7字节;10:级联级别3,10字节;11:预留)
响应格式
卡片类型(低字节在前)
0x44 0x00:Mifare_UltraLight(M0卡,不带加密)
0x04 0x00:Mifare_One(S50)(M1卡,带加密)
0x02 0x00:Mifare_One(S70)(M1卡,带加密)
0x08 0x00:Mifare_Pro(X)(M0卡,不带加密)
0x44 0x03:Mifare_DESFire(M0卡,不带加密)
3.2.2 防冲突命令协议(ANTICOLLISION)
防冲突命令协议(PCD -> PICC)
请求命令 ANTICOLLISION
命令说明 通过位冲突检测获取卡的完整 UID
命令格式:[SEL] [NVB]
SEL 选择代码 0x93(级联级别 1)、0x95(级联级别 2)、0x97(级联级别 3)
4字节UID(一次防冲撞):0x93
7字节UID(两次防冲撞):0x93、0x95
10字节UID(三次防冲撞):0x93、0x95、0x97
NVB 有效位数字节 0x20表示 PCD 发送 32 位 (4 字节) UID 信息
响应命令 ATQA
命令格式:[UID CLn] [BCC]
UID CLn UID数据 当前级联级别的UID数据
BCC UID 校验字节 对当前级联级别的所有 UID 字节进行连续异或(XOR)运算获得​
3.2.3 选卡命令协议(SELECT)
选卡命令协议(PCD -> PICC)
请求命令 SELECT
命令说明 选定指定 UID 卡片
命令格式:[SEL] [NVB] [UID] [BCC]
SEL 选择码 0x93(串联级别 1)、0x95(串联级别 2)、0x97(串联级别 3)
4字节UID(一次选卡):0x93
7字节UID(两次选卡):0x93、0x95
10字节UID(三次选卡):0x93、0x95、0x97
NVB 有效位数字节 固定值0x70,表示发送完整的7字节数据 (SEL+NVB+32位UID片段+BCC )
UID 卡片UID 1字节选卡(4字节)
7字节选卡(4字节、3字节)
10字节选卡(4字节、4字节、2字节)
BCC UID 校验字节 对当前级联级别的所有 UID 字节进行连续异或(XOR)运算获得​
响应命令 SAK
命令格式:1字节(Bit1~Bit8)
Bit2 级联位 0:表示UID完整
1:表示UID尚未完整,还有下一级。读卡器需要继续进行CL2的防冲突循环​
Bit6 协议支持状态 0:不支持 14443-4​ 传输协议
1:支持 14443-4​ 传输协议​
3.2.4 休眠命令协议(HALT)
休眠命令协议(PCD -> PICC)
请求命令 HALT
命令说明 卡片进入休眠状态,不再响应普通寻卡请求
命令格式:[0x50] [0x00][CRC_A]
CRC_A CRC_16校验 完整的 HALT 命令:0x50, 0x00, 0x9D, 0x6D

3.3 应用命令协议格式

3.3.1 密码认证协议

对卡片的某个扇区进行读/写操作前,必须先通过该扇区的密码认证。

密码认证协议(PCD -> PICC)
请求命令 PICC_AUTHENT
命令说明 对指定扇区进行密码认证
命令格式:[Key_Code] [Block_Address] [Key] [UID]
Key_Code Key认证类别 0x60(使用密钥A认证密码)、0x61(使用密钥B认证密码)
Block_Address 认证块地址 同一扇区下的块地址(0~3)仅需进行一次认证
Key 6字节扇区密码 扇区默认密码一般是6个0xFF或6个0x00,密钥A和密钥B可能存在不同密码
UID 4字节UID 选中标签的UID数据(级联级别1)
3.3.2 读取块数据协议
读取块数据协议(PCD -> PICC)
请求命令 PICC_READ
命令说明 读取指定块数据
命令格式:[0x30] [Block_Address] [CRC_A]
Block_Address 读取块地址 每个扇区的前3块用于存储数据可读取;第4块用于存储密钥和访问控制位
CRC_A CRC_16校验 数据CRC校验
3.3.3 写入块数据协议
写入块数据协议(PCD -> PICC)
请求命令 PICC_WRITE
命令说明 数据写入指定块
命令格式:[0xA0] [Block_Address] [CRC_A]
Block_Address 写入块地址 每个扇区的前3块可用于数据写入
CRC_A CRC_16校验 数据CRC校验

  本章详细剖析了ISO/IEC 14443-A标准的核心通信协议,从底层寻卡、防冲突、选卡到上层认证与数据读写,为开发者理解和实现非接触式智能卡应用提供了坚实的理论基础与协议框架;下文将介绍RC522芯片驱动开发实践~

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐