【IoT】NFC 之 RC522 PICC 识别过程

简介: NFC基础

识别过程:寻卡-->防冲突-->选卡-->操作卡

PCD 是接近式卡,PICC 是接近式耦合设备。

在通信过程中实际上是使用 PCD 命令控制 RC522 发出 PICC 命令与卡进行交互。

20190516094737664.png

1、寻卡

有两个寻卡的命令:

definePICC_REQIDL 0x26 // 寻天线区内未进入休眠状态

definePICC_REQALL 0x52 // 寻天线区内全部卡

0x26 命令是读取完卡后还会再次读取,除非在某次读取完成后系统进入休眠(Halt)。

0x52 命令是读取完卡后会等待卡离开开线作用范围,直到再次进入。

如果寻卡成功后,程序将进入防冲突操作。

2、防冲突

防冲突操作就是将防冲突命令通过 PcdComMF522 函数与 PICC 卡进行交互。

防冲突命令是两个字节,其中第一字节为 Mifare_One 卡的防冲突命令字 PICC_ANTICOLL1 (0x93),第二个字节为 0x20。

在防冲突环节使用的命令由连个字节组成:

选择代码SEL(1个字节),SEL规定了串联级别CLn。

有效位的数目 NVB(1个字节),NVB 规定了 PCD 所发送的 CLn 的有效位的数目。

注:只要 NVB 没有规定 40 个有效位,若 PICC 保持在 READY 状态中,该命令就被称为 ANTICOLLISION 命令。

如果 NVB 规定了 UID CLn 的 40 个数据位(NVB=‘70’),则应添加 CRC_A。该命令称为 SELECT 命令。

如果 PICC 已发送了完整的 UID,则它从 READY 状态转换到 ACTIVE 状态并在其 SAK-响应中指出 UID(唯一标识符)完整。

否则,PICC 保持在 READY 状态中并且该 PCD 应以递增串联级别启动一个新的防冲突环。

3、选卡

在 ISO14443 中整个防冲突和选择环节的过程为:

步骤 1:PCD 为选择的防冲突类型和串联级别分配了带有编码的 SEL;

步骤 2:PCD 分配了带有值为 ‘20’ 的 NVB;

步骤 3:PCD 发送 SEL 和 NVB;

步骤 4:工作场内的所有 PICC 应使用它们的完整的 UID CLn 响应;

步骤 5:假设场内的 PICC 拥有唯一序列号,那么,如果一个以上的 PICC 响应,则冲突发生。如果没有冲突发生,则步骤 6 到步骤 10 可被跳过。

步骤 6:PCD 应识别出第一个冲突的位置;

步骤 7:PCD 分配了带有值的 NVB,该值规定了 UID CLn 有效比特数。

这些有效位应是PCD所决定的冲突发生之前被接收到的 UID CLn 的一部分再加上(0)b 或 (1)b。典型的实现是增加 (1)b。

步骤 8:PCD 发送 SEL 和 NVB,后随有效位本身;

步骤 9:只有 PICC 的 UID CLn 中的一部分等于 PCD 所发送的有效位时,PICC 才应发送其 UID CLn 的其余部分;

步骤 10:如果出现进一步的冲突,则重复步骤 6~9。最大的环数目是 32;

步骤 11:如果不出现进一步的冲突,则 PCD 分配带有值为 ‘70’ 的 NVB;

步骤 12:PCD 发送 SEL 和 NVB,后随 UID CLn 的所有 40 个位,后面又紧跟 CRC_A 校验和;

步骤 13:它的 UID CLn 与 40 个比特匹配,则该 PICC 以其 SAK 表示响应;

步骤 14:如果 UID 完整,则 PICC 应发送带有清空的串联级别位的 SAK,并从 READY 状态转换到 ACTIVE 状态;

步骤15:PCD 应检验 SAK(选择确认)的串联比特是否被设置,以决定带有递增串联级别的进一步防冲突环是否应继续进行。

如果 PICC 的 UID 是已知的,则 PCD 可以跳过步骤 2~10 来选择该 PICC,而无需执行防冲突环。

卫朋

人人都是产品经理受邀专栏作家,CSDN 嵌入式领域新星创作者、资深技术博主。2020 年 8 月开始写产品相关内容,截至目前,人人都是产品经理单渠道阅读 56 万+,鸟哥笔记单渠道阅读200 万+,CSDN 单渠道阅读 210 万+,51CTO单渠道阅读 180 万+。

卫朋入围2021/2022年人人都是产品经理平台年度作者,光环国际学习社区首批原创者、知识合作伙伴,商业新知 2021 年度产品十佳创作者,腾讯调研云2022年达人榜第三名。

文章被人人都是产品经理、CSDN、华为云、运营派、产品壹佰、鸟哥笔记、光环国际、商业新知、腾讯调研云等头部垂直类媒体转载。文章见仁见智,各位看官可策略性选择对于自己有用的部分。

相关文章
|
传感器 物联网 数据安全/隐私保护
|
5月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2022 42
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
404 1
|
8月前
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
11月前
|
安全 物联网 物联网安全
揭秘区块链技术在物联网(IoT)安全中的革新应用
揭秘区块链技术在物联网(IoT)安全中的革新应用
|
11月前
|
安全 物联网 网络安全
智能设备的安全隐患:物联网(IoT)安全指南
智能设备的安全隐患:物联网(IoT)安全指南
949 12
|
11月前
|
传感器 存储 物联网
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点
在物联网(IoT)快速发展的今天,C语言作为物联网开发中的关键工具,以其高效、灵活、可移植的特点,广泛应用于嵌入式系统开发、通信协议实现及后端服务构建等领域,成为推动物联网技术进步的重要力量。
403 1
|
11月前
|
存储 安全 物联网
C# 在物联网 (IoT) 应用中的应用
本文介绍了C#在物联网(IoT)应用中的应用,涵盖基础概念、优势、常见问题及其解决方法。重点讨论了网络通信、数据处理和安全问题,并提供了相应的代码示例,旨在帮助开发者更好地利用C#进行IoT开发。
490 3
|
11月前
|
传感器 监控 安全
物联网(IoT):定义、影响与未来
物联网(IoT):定义、影响与未来
1448 3
|
11月前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
471 4