
学习一下 NFC 的基础知识 ...... 矜辰所致前言最近一直在使用沁恒蓝牙芯片 CH585作为一款蓝牙芯片它居然还支持 NFC支持读卡器 (PCD) 模式和卡 (PICC) 模式无需外接芯片就可以实现 NFC 功能可简化硬件电路设计降低硬件成本和开发难度。博主之前对 NFC 的了解有限所以需要从基础开始好好了解一下 NFC 的一些基础知识所以本文内容就是 NFC 的基础知识学习。我是矜辰所致全网同名尽量用心写好每一系列文章不浮夸不将就认真对待学知识的我们矜辰所致金石为开目录前言一、什么是 NFC1.1 NFC 基本概念1.2 NFC 与 RFID 的关系二、NFC 的三种工作模式三、NFC 协议体系3.1 简化的三层模型3.2 ISO 14443 四个 Part 与 Type A/B 的关系3.3 不同模式对应的协议栈四、常用的 NFC 卡片/标签五、NFC 数据格式5.1 NDEF5.2 NDEF 的结构六、NFC (ISO14443-A) 完整通信流程结语一、什么是 NFC有了 AI 以后这些常见技术的理论基础介绍 AI 会更详细也更加全面本文意在概括总结方便大家查询一些关键点。1.1 NFC 基本概念NFC 全称 Near Field Communication是一种基于 13.56MHz 频段的超短距离高频无线通信技术。它的一些特点电感耦合通信NFC 依赖读写器天线与标签线圈之间的电感耦合方式完成能量传输与数据交互是无源卡片正常工作的核心原理。通信距离极短 近距离才能通信 通讯距离通常在 0~10cm 。被动免供电普通 NFC卡片无电池靠读卡器磁场感应取电工作。双向通信既可以读卡也可以模拟成卡被读卡器读数据传输速率106 / 212 / 424 kbps 。调制方式100% ASKType A搭配 NRZ 基带编码由硬件完成底层解析。NFC 凭借通信距离近、功耗低、无需配对、连接快速的优势被广泛应用于非接触式支付、门禁刷卡、公共交通、智能电子标签、设备快速配对等物联网交互场景。1.2 NFC 与 RFID 的关系RFID 是广义射频识别技术频率范围很广125KHz、13.56MHz、900MHz、2.4GHz。大多为单向识别、通信距离远、功能单一多用于门禁溯源、工业识别、仓储管理等场景。NFC 是从 RFID 发展而来NFC 只工作在 13.56MHz增加了点对点通信能力 。具备贴脸通信、无需复杂配对、低功耗、高安全性的特点主打智能设备一碰即用的轻量化交互场景。二、NFC 的三种工作模式NFC 的通信的三种工作模式读卡器模式Reader/Writer设备主动发射磁场主动读取外部 NFC 卡片/标签。读卡器设备供电 。CH585 对应PCD 模式场景刷卡机、读NTAG标签、读门禁M1卡卡模拟模式Card Emulation设备自身模拟成一张 NFC 卡片被动等待手机/读卡器来读取自己。卡片设备自己供电 。CH585 对应PICC 模式场景手机刷门禁、CH585模拟 NFC 名片、一碰打开网址、蓝牙 OOB 配对点对点模式P2P两台 NFC 设备直接交换数据。应用相对较少。CH585 不支持P2P 。双方都自己供电。三、NFC 协议体系3.1 简化的三层模型为了方便理解结合 CH585 的读卡/卡模拟应用场景我们可以把 NFC 协议栈简化为三层模型物理射频层定义 13.56MHz 载波、调制编码、射频电气特性由芯片 NFC 基带硬件实现。本层负责 13.56 MHz 载波的产生/接收、信号调制与解调、射频场的能量传输。——常用的协议如下ISO/IEC 14443‑ANFC‑A100% ASK 调制 106 kbps 基础速率国内最常用M1 卡、门禁卡、公交卡大多基于此。ISO/IEC 14443‑BNFC‑B10% ASK 调制调制指数 8%~14%NRZ 编码106 kbps调制深度浅、抗干扰更好常用于二代身份证、部分金融卡。这里的 10% 是指调制指数 10%允许 8%‑14% 区间并不是载波衰减到原来 10%ISO/IEC 18092NFCIP‑1 / NFC‑FFeliCa索尼 FeliCa 标准日本交通卡支持P2P 点对点通信速率 212/424kbps。ISO/IEC 15693NFC‑V远距离 RFID可读距离可达 1 米用于资产标签、仓储。——对于 CH585 只支持 ISO14443-A 协议106 kbps 该层由内部 NFC 硬件基带完全实现负责磁场供电、信号收发与底层解调。数字链路层定义寻卡、防碰撞、卡片选择、帧传输交互规则沁恒 CH585 库提供该层基础子程序。本层负责怎么找到卡、怎么不撞车、怎么把数据包拆成帧发出去。——常用的协议如下ISO/IEC 14443-3初始化与防碰撞规定寻卡、防碰撞、选卡的交互流程PCD 发 REQA/WUPA → PICC 回 ATQA → 防碰撞循环获取 UID→ SELECT → SAK。 这是所有 14443-A 设备必须实现的底层握手。 CH585 库主要封装这一部分。ISO/IEC 14443-4传输协议 TCL:在防碰撞选卡之后定义面向连接的数据传输协议块类型I 块/R 块/S 块、帧确认、重传、超时、多应用选择等。14443-3 是开始的握手机制14443-4 是握手完毕后的通讯。NFC Forum Digital ProtocolNFC Forum 在 ISO 标准之上定义的数字协议层和活动规范统一了不同射频技术A/B/F的设备发现、初始化、协议切换流程是多模式 NFC 设备如手机的互通基础。LLCPP2P 模式链路控制协议设备之间连接管理、分帧、多路复用。——对于 CH585 官方 NFC 库已封装该层核心协议逻辑开发者可直接调用 API 完成卡片激活与基础通信。应用层定义标签内存布局、读写命令、NDEF 数据格式包含部分厂商私有协议该层需要开发者自行编写业务代码实现数据解析与交互。本层负责传过去的数据是什么传过去的数据是 NDEF 还是 M1 私有命令是 URL 还是文本是门禁扇区数据还是支付 APDU——常用的协议如下NDEFNFC Data Exchange FormatNFC 数据交换格式NFC 通用数据封装格式 是所有 NFC 标签、P2P、卡模拟互通的数据基础。RTDRecord Type DefinitionRTD 是依附于 NDEF 的不是独立格式定义 NDEF 记录里装的是什么类型的数据文本、URI、SmartPoster、蓝牙 OOB 配对记录等。ISO 7816‑4智能卡 APDU 命令集Type4 标签、DESFire 卡使用。厂商私有命令集MIFARE Classic (M1) 认证 / 读块 / 写块MIFARE DESFire APDUFeliCa 服务‑块指令。.最后还有一个特殊点的Tag Type 1~5 Operation Specifications定义 5 种标签类型的读写操作方式是读卡器操作不同标签的操作手册。Tag Type Operation 规范严格说是跨层的既规定链路层交互细节又规定应用层数据布局。它定义了如何把 NDEF 数据写入不同类型的标签芯片这些规范是给 NFC 控制器/手机 OS 的驱动开发者看的不是给应用开发者看的Type 2基于 NFC-A最常见NTAG 系列CH585 读卡模式主要对象。Type 4基于 14443-A/B ISO 7816-4大容量、支持文件系统和安全应用。——对于 CH585PCD 模式下开发者编写读卡/写卡业务逻辑PICC 模式支持 NDEF 数据交互功能是电子名片、蓝牙 OOB 配对的基础。这些业务逻辑需自行实现。3.2 ISO 14443 四个 Part 与 Type A/B 的关系很多小伙伴搞不懂14443‑A和14443‑2的区别其根源就是两套命名体系混用。首先我们要知道 ISO 14443 不是一个单独的标准而是一组标准分成 4 个 Part Part1物理特性卡片机械、尺寸Part2射频功率和信号接口 → 调制、ASK、编码Type‑A / Type‑B 在这里定义Part3初始化与防碰撞协议 → REQA、防碰撞、SELECT、SAKPart4传输协议 TCL → 块传输、APDU我们用一张图表示一下所以回到我们上面的问题14443-A 和 14443-2 关系14443-2 14443 标准的第 2 部分射频功率与信号接口14443-A 14443 标准中 Type A 这种调制/编码方案它分布在 Part 2、Part 3 里。14443‑A不是等于 Part2Type‑APart2 定义射频调制 Part3 定义 A 类型防碰撞算法两者组合起来才叫 14443‑A。Type‑BPart2 的 B 调制 Part3 的 B 防碰撞。.之前写的 ISO/IEC 14443‑A 其实是 Part 2 Part 3 的 Type A 分支 的统称不是单指某一个 Part 。3.3 不同模式对应的协议栈这里不讨论点对点模式协议栈对照图如下举个 CH585 的简单例子应用层NDEF RTD传输层M1 / Type 2 不需要链路层ISO 14443-3 (NFC-A)物理射频层ISO 14443-2 (NFC-A)四、常用的 NFC 卡片/标签下表汇总市面上常见 NFC 卡片与标签名称标准 / 标签类型容量是否需要认证核心特点典型用途NTAG 213/215/216ISO 14443-ANFC ForumType 2144B ~ 888B❌ 无需认证可选密码保护支持标准NDEF、手机直接识别、成本低、NTAG 213F 可配密码保护智能贴纸、电子名片、WiFi 标签、网址分享、蓝牙配对MIFARE ClassicM1 / S50 / S70ISO 14443-ANXP 私有命令1KB / 4KB✅ 需要 Key A/B16/32 扇区结构、Crypto1 加密已破解、非标准 NDEF、需专用 App 读写小区门禁、电梯卡、校园饭卡、考勤卡国内最泛滥MIFARE UltralightEV1 / CISO 14443-ANFC ForumType 248B ~ 192B❌ 无需认证比 NTAG 更简单、成本最低、可锁定为只读Ultralight C 支持 3DES一次性门票、活动手环、廉价海报标签MIFARE DESFireEV1/EV2/EV3ISO 14443-ANFC ForumType 42KB / 4KB / 8KB✅ 需要 AES 密钥AES 加密、真随机数、支持文件系统、走 APDU、安全性高高安全门禁、银行卡、电子钱包、公交卡新一代FeliCaJIS X 6319-4NFC ForumType 3多种✅ 需要密钥索尼标准、处理速度极快、支持多服务/多应用分区日本交通卡Suica/Pasmo、香港八达通、索尼设备银行卡PBOC/EMVISO 14443-A/BEMVCo 规范视芯片而定✅ 需要支付密钥符合 EMVCo 规范、支持脱机/联机交易、卡片本身即安全元件银联闪付、Visa/Mastercard 非接触支付二代身份证ISO 14443-B较大✅ 国密 SM1 认证符合国标、10% ASK 调制、抗干扰强、不可复制中国大陆居民身份证ISO 15693 标签ISO 15693NFC ForumType 5小 ~ 中可选读取距离最远~1m、防碰撞机制为时隙 ALOHA与 14443-A 的位冲突检测不同图书馆图书、物流托盘、资产管理、仓储盘点CH585 只支持 ISO 14443-A 协议体系下的卡片实际会碰到的主要是三类M1 卡Crypto1 硬件加速门禁场景主力、NTAG 系列NDEF 标签智能贴纸场景属于Type2 卡、Ultralight低成本 Type 2 标签。其中 Type 2 vs M1 卡的关键区别对比项Type 2 标签如 NTAGM1 卡Classic标签类型NFC Forum Type 2不属于 NFC Forum 标准标签类型数据格式标准 NDEF手机直接识别NXP 私有格式手机无法直接读内容是否需要认证读取无需认证部分型号支持可选写密码保护必须 Key A/B 认证才能读扇区结构无扇区线性页式存储每页 4 字节S50 (1K)16 扇区 ×4 块常见S70 (4K)40 扇区前 32 扇区每扇 4 块、后 8 扇区每扇 16 块用途智能贴纸、电子名片、WiFi 标签门禁卡、饭卡、电梯卡手机兼容性极高所有带 NFC 的手机都能读只能读 UID扇区数据需专用 App五、NFC 数据格式5.1 NDEFNDEFNFC Data Exchange FormatNFC 数据交换格式是一套统一数据包封装格式。NDEF 是 NFC 生态里唯一被所有手机操作系统原生支持的数据格式:NFC 的底层射频标准有四种A/B/F/V芯片厂商有 NXP、索尼、ST 等操作系统有 Android、iOS、HarmonyOS。不管你底层是 NFC-A 还是 NFC-F不管你芯片是 NTAG 还是 FeliCa只要数据是 NDEF 格式任何带 NFC 的手机都能读懂。NDEF 是 NFC 世界的通用语言。绝大多数民用 NFC 体验碰手机触发 URL、电子名片、蓝牙配对全部依赖 NDEF面向 APP 开发的教程中APP 层拿到手的就是 NDEF 数据包。但是也要注意一下也不是所有 NFC 场景必须使用NDEF 必须 / 适合 NDEFNTAG/Ultralight (Type2)、CH585PICC_T2T虚拟 Type2 标签、Type3/Type4/Type5 标准标签实现一碰跳转网址、电子名片、蓝牙 OOB 一碰配对。不使用 NDEFMIFARE Classic (M1) 门禁卡使用 NXP 私有扇区数据Type 4 CPU 卡 / 银行卡走 EMVCo ISO 7816-4 APDU不使用 NDEF但 Type 4 NDEF 标签如某些大容量标签仍支持 NDEF。5.2 NDEF 的结构一条 NDEF 消息 (Message) 由一条或多条 NDEF 记录 (Record) 组成。每个 Record 由三部分核心构成Header 头部标记数据起始、结束、长度、多记录标识Type (RTD) 类型定义数据用途网址 / 文本 / 蓝牙配对Payload 载荷真实业务数据结构如下图所示 实际上的 NDEF Record 的完整字节布局如下Header │ Type Len │ Payload Len │ ID Len │ Type │ ID … │ Payload.(1 byte)│ (1 byte) │ (1 or 4 bytes) │(if IL1) │ (变长) │(if IL1) │ (变长)举个 Record 的例子往 NTAG 里写一个 URLhttps://www.example.comD1 55 11 03 77 77 2E 65 78 61 6D 70 6C 65 2E 63 6F 6D│ │ │ │ └──────── “www.example.com” ────────┘│ │ │ └── 前缀码 0x03 自动补全 “https://www.”│ │ └── Payload 长度 17 字节│ └── Type ‘U’URI 记录└── Header 0xD1第一条最后一条短记录Well-Known这个解析后期需要再去研究手机读到这段数据 → 看 Type 是 U → 知道是 URI → 用前缀码补全 → 打开浏览器。六、NFC (ISO14443-A) 完整通信流程最后我们来讲一下 NFC 通讯流程概括来说所有卡片必须走射频 → REQA → ATQA → 防碰撞 → SELECT → SAK 先上一张示意图射频场常驻PCD 持续开启 13.56MHz 射频场磁场常开卡片靠近即可感应取电、上电激活。寻卡请求REQAPCD 循环发送REQA(0x26)含义在场内的 A 卡请应答。卡片应答ATQAPICC 回复 ATQA如 Type20x4400、M10x0004携带信息卡类型、UID 长度、是否支持防碰撞、是否支持 14443-4 协议。防碰撞仲裁核心机制多张卡片同时在场时PCD 发送 0x93 防碰撞帧 NVB通过二进制位比对逐个筛选最终唯一获取整张卡完整 UID屏蔽其他卡片。选中唯一卡片SELECTPCD 携带完整 UID 发送 SELECT 命令指定目标卡片场内其他卡片进入静默状态。卡片就绪应答SAKPICC 返回 SAK 字节决定后续所有通信分支最重要分界点SAK0x00Type2 标签NTAG/Ultralight→ 直接页读写、支持 NDEF。SAK0x08M1 Classic 卡 → 私有 Crypto1 协议需要扇区密钥认证。SAK0x20支持 ISO14443-4 (TCL) → 必须额外发送 RATS 开启传输层Type4 CPU 卡 / 银行卡。针对不同的卡进行不同的处理方式Type2 标签 (NTAG/Ultralight)无认证环节直接读写页数据、解析 NDEF。M1 门禁卡必须执行 KeyA/KeyB 扇区认证认证通过才能读写对应扇区。Type4 CPU 卡执行 RATS 初始化 → 开启 TCL 传输层 → 走 APDU 指令通信。业务读写操作根据卡片类型执行对应操作读 UID、读写存储数据、NDEF 解析、密钥校验、业务交互等卡片休眠HALT通信完成后 PCD 发送 HALT 指令卡片进入休眠不再响应普通指令等待下次 WUPA 唤醒从卡片靠近到读到数据中间有 4~6 次握手交互在 CH585 实际应用中可以通过一些有效手段做到低功耗检卡具体的体现在博主后期 NFC 的文章中会有说明。结语本文主要记录了一些 NFC 基知识同时结合了 CH585 的应用做了一些必要的说明在后面博主会带大家看一看 CH585 的 NFC 使用示例以及 写一写 NFC 关键的天线设计问题的相关博文。好了本文就到这里。谢谢大家