RC522 - NFC刷卡模块

article/2025/8/23 1:21:50

RC522 - NFC刷卡模块

芯片介绍/引脚介绍

MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。是 NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。

非接触式 IC 卡又称射频卡,由 IC 芯片、感应天线组成,封装在一个标准的 PVC 卡片内,芯片及天线无任何外露部分。是世界上最近几年发展起来的一项新技术,它成功的将射频识别技术和 IC 卡技术结合起来,结束了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。卡片在一定距离范围(通常为 5—10cm)靠近读写器表面,通过无线电波的传递来完成数据的读写操作。

RC522-引脚图

其可以由SPI,I2C,UART驱动,本笔记采用较为常用的SPI通信。

关于SPI通信相关内容,详见协议使用笔记SPI章节。

M1卡介绍

M1 卡分为 16 个扇区,每个扇区由 4 块(块 0、块 1、块 2、块 3)组成,(我们也将 16 个扇区的 64 个块按绝对地址编号为 0~63,存贮结构(其它扇区依此类推)如下图所示:

  • 注意:由于扇区0用于存放厂商代码,已经固化,不可更改,因此我们不使用该扇区。

RC522-M1卡介绍

  • 每个扇区的块 0、块 1、块 2 为数据块,可用于存贮数据。数据块可作两种应用:

    1、用作一般的数据保存,可以进行操作。

    2、用作数据值,可以进行初始化值、加值、减值、读值操作。

M1卡工作原理

  • 名词解释

(Read):读一个块;

**(**Write):写一个块;

(Increment):对数值块进行加值;

(Decrement):对数值块进行减值;

存储(Restore):将块中的内容存到数据寄存器中;

传输(Transfer):将数据寄存器中的内容写入块中;

中止(Halt):将卡置于暂停工作状态。

  • 每个扇区的块 3 为控制块,包括了密码 A、存取控制、密码 B。具体结构如下:

RC522-M1扇区控制

  • 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为 4 个字节,共 32 位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
块0块1块2块3
C1_0C1_1C1_2C1_3
C2_0C2_1C2_2C2_3
C3_0C3_1C3_2C3_3

三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证 KEY A,进行加值操作必须验证 KEY B,等等)。三个控制位在存取控制字节中的位置,以块 0 为例:

76543210
字节6C2_0_bC1_0_b
字节7C1_0C3_0_b
字节8C3_0C2_0
字节9

其中C2_0_b表示C2_0取反

该四字节整体结构如下:

RC522-M1-密码结构

字节6-9位为上图控制块的存取控制,其中0和4代表块0的存取控制,1和5代表块1的存取控制,依此类推。

  • 其中块0-块2的存取控制形式如下:

| 控制块 | 访问条件 |

C1_XC2_XC3_XReadWriteIncrementDecrement/Transfer/Restore
000A/BA/BA/BA/B
010A/BNNN
100A/BBNN
110A/BBBA/B
001A/BNNA/B
011BBNN
101BNNN
111NNNN

(注意:访问条件中填入的内容表示可访问项,其中 A/B 表示 密码A和密码B,A表示密码A,B表示密码B,N表示都不可访问)

例如:当块 x 的存取控制位 C1_x C2_x C3_x = 0 0 1 时,表示:

​ 1、通过密码A或密码B可读取块x中数据,但两个密码都不可写数据

​ 2、通过密码A或密码B都不能使块x中数据增加,但两个密码都可以使块x中数据减少、传送和恢复

  • 块3与其它块不同,其访问形式如下:

| 控制块 | 密码A | 存取控制 | 密码B |

C1_3C2_3C3_3ReadWriteReadWriteReadWrite
000NA/BA/BNA/BA/B
010NNA/BNA/BN
100NBA/BNNB
110NNA/BNNN
001NA/BA/BA/BA/BA/B
011NBA/BBNB
101NNA/BBNN
111NNA/BNNN

(注意:密码A、存取控制、密码B填入读写性质,其中 A/B 表示 密码A和密码B,A表示密码A,B表示密码B,N表示都不可访问)

例如:当块 3 的存取控制位 C1_3 C2_3 C3_3 = 0 0 1 时,表示:

​ 1、密码 A:不可读,验证 KEYA 或 KEYB 正确后,可写(更改)

​ 2、存取控制:验证 KEYA 或 KEYB 正确后,可读、可写

​ 3、密码 B:验证 KEYA 或 KEYB 正确后,可读、可写

数据读写流程

RC522-数据读写流程

  • 复位应答

M1 射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为 M1 射频卡,即验证卡片的卡型。

  • 防冲撞机制

当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。

  • 选择卡片

选择被选中的卡的序列号,并同时返回卡的容量代码。

  • 三次互相确认

选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验)

示例代码移植

如无示例代码,可以点此下载。

  • 该代码为80C52的示例代码,使用着仅需将引脚设置为自己使用的引脚,调用自己的初始化函数,再解决几个类型不匹配的错误即可使用,移植过程过于简单,此处不再赘述。

示例函数调用说明

部分函数说明

void InitializeSystem(void);		//引脚初始化
void PcdReset(void);			    //硬件置位
void PcdAntennaOff(void);			//关闭天线
void PcdAntennaOn(void);			//开启天线
char PcdRequest(unsigned char req_code,unsigned char *pTagType)		//寻卡
char PcdAnticoll(unsigned char *pSnr)							  //防冲撞
char PcdSelect(unsigned char *pSnr)								  //选卡
char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr)//验证扇区密码
char PcdWrite(unsigned char addr,unsigned char *pData)				//写块
char PcdRead(unsigned char addr,unsigned char *pData)				//读块
char PcdBakValue(unsigned char sourceaddr, unsigned char goaladdr)	 //块备份
//具体流程参考示例代码

http://chatgpt.dhexx.cn/article/lJmBbLtW.shtml

相关文章

STM32--RFID无线射频技术(RC522刷卡模块)

文章目录 1、RFID的概念2、RFID的工作原理(1)RFID中间件的概念(2)RFID中间件具有以下特点:(3)RFID中间件的意义: 3、RFID频率划分(1)RFID低频特性(2)RFID高频…

STM32——NFC门禁模块(RC522)

文章目录 1. 前言(包括一些个人理解)2. RC522门禁工作过程3. CubeMx配置3.1 SPI通讯的配置3.2 SDA和REST引脚的配置 4. 外设代码函数编写4.1 主函数能调用的接口函数4.2 二级内部调用函数4.3 第三级最底层函数4.4 头文件 5. 使用教程 1. 前言&#xff08…

RC522(RFID)读写驱动

文章目录 1、RC522驱动原理2、手机APP查看卡信息3、驱动移植4、读写卡5、源码 1、RC522驱动原理 我们常见的RC522大概如下所示,PCB部分是主机,然后白色的和绿色的都是IC卡,IC卡可以存储信息,通过靠近PCB主机部分就可以被感应到从…

RC522模块学习

目录 1.原理简介 2.SPI通信 3.获取卡号实验 3.驱动函数 参考: https://www.cnblogs.com/ivantang/p/3904025.html https://xiaolong.blog.csdn.net/article/details/117075834?spm1001.2014.3001.5506 https://blog.csdn.net/weixin_47316662/article/detai…

Jmeter下载安装配置---测试小白

一,进入官网:http://jmeter.apache.org/ 1.第一步进入官网如下图 2.选择进行下载,下载下来为一个压缩包,解压即可。 3.我下载的是jmeter4.0版本,对应jdk1.8。然后就进行解压。个人认为要注意3点:1.解压之后…

Windows版JMeter下载安装

进入apache官网https://www.apache.org/dist/jmeter/binaries下载Windows版本JMeter;配置环境变量(JMETER_HOMED:\JMeter\apache-jmeter-5.1.1)配置环境变量(classpath%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%…

JMeter下载安装

一、环境准备 1.Jmeter是纯Java开发的, 能够运行Java程序的系统一般都可以运行Jmeter, 如:Windows、 Linux、 mac等。由于是由Java开发,所以自然需要jdk环境。 2.去官方下载JMeter安装包:Apache JMeter - Download Apa…

Mac版本Jmeter下载安装教程

Mac版本Jmeter下载安装教程 1. 下载&安装&启动Jmeter1.1 下载安装包:1.2 解压安装包1.3 启动Jmeter1.4 Jmeter页面 2. Jmeter进一步优化配置2.1 打开&编辑&保存配置文件~/.bash_profile步骤一:打开配置文件~/.bash_profile步骤二&#x…

JMeter-文件下载教程

一、单个下载配置方法 1、先添加线程组 选中测试计划右键添加线程组:测试计划->添加->线程(用户)->线程组 2、添加HTTP请求 ①. 选中线程组右键添加HTTP请求:线程组->添加->取样器->HTTP请求 ②.配置HPPT请求 3、添加BeanShell 取…

jmeter下载与安装教程

jmeter下载与安装教程 下载步骤: 自行百度jmeter下载,找到apache官网;进入网站后,选择左侧Download下的Download Releases;如图所示 2.页面进入新的页面后,点击此页面Binaries标签下的“apache-jmeter-5…

Jmeter下载及安装教程

下载及环境配置 下载 前置条件,电脑得配置Java环境,也就是安装jdk,可百度jdk安装教程。 1、下载地址:Apache JMeter - Download Apache JMeter,(Windows版本下载.zip,Linux版本下载.tgz&…

Jmeter下载安装详细步骤(2021)

Jmeter下载安装详细步骤(2021) 由于项目方有压测需求,因此需要学习Jmeter压测工具的使用,避免遗忘,记录一下Jmeter下载安装的步骤 这里面有个坑就是Jmeter需要依赖JAVA环境,在安装Jmeter之前需要配置好JA…

测试工具:jmeter的下载以及使用

测试不仅要了解项目整体流程,还需要会使用各种测试工具,比如:jmeter压力测试工具。 1.下载地址 https://jmeter.apache.org/download_jmeter.cgi2.下载完直接解压,配置环境 (1)此电脑-右键属性-高级系统设…

Jmeter安装配置详细教程

目录 1、Jmeter下载1.1、下载地址1.2、选择对应版本 2、JDK安装2.1、java环境检查2.2、JDK安装2.2.1、JDK下载2.2.2、JDK安装2.2.3、JDK环境变量配置2.2.4、验证java环境 3、Jmeter环境部署3.1、环境配置 4、验证jmeter5、修改语言5.1、临时性设置5.2、永久性生效 1、Jmeter下载…

Jmeter常用插件下载

一、jmeter Manager jmeter插件下载地址:https://jmeter-plugins.org/wiki/Start/ 二、PerfMon Metrics Collector:服务器性能监控数据采集器 在性能测试过程中,除了监控TPS和TRT,还需要监控服务器的资源使用情况,比…

【Jmeter】Win10 下载安装Jmeter 5.5

1、Jmeter下载 地址: https://jmeter.apache.org/前提:使用jmeter工具之前需要安装java.并配置好java的环境变量。 注意:jdk版本和jmeter版本匹配问题 2、JAVA8 下载 进入官网,https://www.oracle.com/,点击Resour…

jmeter常用插件下载及安装

jmeter常用插件 一、下载及安装 下载地址:https://jmeter-plugins.org/install/Install/ 下载后文件为一个jar包,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。 启动jemter,点击选项,最下面…

jmeter的配置与下载详细教程

目录 1、Jmeter下载 1.1、下载地址 1.2、选择对应版本 2、JDK安装 2.1、java环境检查 2.2、JDK安装 2.2.1、JDK下载 2.2.2、JDK安装 2.2.3、JDK环境变量配置 2.2.4、验证java环境 3、Jmeter环境部署 …

Jmeter的下载与安装

Jmeter的下载与安装 Jmeter工具可以用来做接口和性能测试,在使用之前让我们先来学习一下Jmeter是怎样下载和安装的吧! 安装Jmter之前的准备工作: 1:下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/index.h…

Jmeter下载安装及基本使用

本文将讲述Jmeter的下载安装,并以一个实例来讲解如何使用Jmeter。 一、Jmeter下载及安装部署 下载解压JMeter压缩包下载地址: http://jmeter.apache.org/download_jmeter.cgi JMeter解压之后,…\apache-jmeter-4.0\bin\jmeter.bat&#xff…