【IoT】NFC 之 RC522 PICC 识别过程 |
您所在的位置:网站首页 › picc是什么缩写 › 【IoT】NFC 之 RC522 PICC 识别过程 |
识别过程:寻卡-->防冲突-->选卡-->操作卡 PCD 是接近式卡,PICC 是接近式耦合设备。 在通信过程中实际上是使用 PCD 命令控制 RC522 发出 PICC 命令与卡进行交互。 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,而无需执行防冲突环。 refer: https://blog.csdn.net/a827415225/article/details/51898897 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |