51单片机驱动RC522模块

article/2025/8/22 23:25:38
  • 最近在某宝上买了一块RC522模块,试玩了下,读写卡正常。想学习使用新的东西时,有必要了解它的工作原理和工作过程,不清楚或者不知道的可以参考相关数据手册和参考文献,在这里为了节省自己的时间,我只对我的51程序做一个小小的笔记~~
    想要驱动RC522模块对IC卡(这里用的是M1卡型号是S50)进行读写操作,一定要有以下5个步骤:
    一、寻卡
    二、防冲突
    三、选择卡
    四、验证扇区密码(每个扇区都有密匙A和密匙B,验证正确才能对该扇区的某块进行读写)
    五、读/写

在这里插入图片描述

  • 硬件方面与单片机I/O口连好,使用SPI通信的时候NSS就是SDA引脚,IRQ悬空。
  • 主程序如下:
#include "reg52.h"
#include "mfrc522.h"
#include "intrins.h"
#include <string.h>
#include "stdio.h"#define u8 unsigned char
#define u32 unsigned int#define FOSC 12000000L      //System frequency
#define BAUD 2400           //UART baudrate
sbit P11=P1^1;//作为一个辅助LED灯而已
bit CmdValid=0;
u8 status;
u8 pTagType[2];
u8 code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //配带的那张白卡的扇区密码
u8 idata MLastSelectedSnr[4];//这个用来存放卡片的序列号,4个字节
u8 idata RevBuffer[16]; 
u8 me[16]={1,1,1,4,4,4,5,5,5,10,10,10,3,13,5,15};//想在块一写入
void ANT_INIT();
//定时器只是用来做波特率发生器
//使用定时器/计数器2的时候记得要在REG52.h头文件里添加:sfr T2CON  = 0xC8;
//否则会报错
void Timer2Init(void)		//100微秒@12.000MHz
{T2MOD = 0;		//初始化模式寄存器T2CON = 0x34;           //Timer2 start runTL2 = RCAP2L = (65536-(FOSC/32/BAUD)); //Set auto-reload vauleTH2 = RCAP2H = (65536-(FOSC/32/BAUD)) >> 8;TR2 = 1;		//定时器2开始计时
}void main()
{Timer2Init();P11=1;SCON = 0x50;            //8-bit variable UARTES = 1;                 //Enable UART interruptEA = 1;                 //Open master interrupt switchCmdValid=0; PcdReset();			//以下三条是天线的初始化,必须PcdAntennaOff(); PcdAntennaOn();  
//	delay_10ms(250);M500PcdConfigISOType( 'A' );//工作模式“A”while(1){ANT_INIT();}}
void ANT_INIT()
{PcdHalt();PcdRequest(PICC_REQALL,&pTagType);//寻卡成功status=PcdAnticoll(&MLastSelectedSnr);//防冲撞成功PcdSelect(MLastSelectedSnr);PcdAuthState(0x60,1,DefaultKey,MLastSelectedSnr);//status=PcdWrite(1,me);		   //这是写,使用时可以先注释掉下面一行代码//status=PcdRead(1,RevBuffer);//这是读,使用时可以先注释掉上面一行代码if(status==0)SBUF=MLastSelectedSnr[0];//触发串口中断else TI=0;
}
/*----------------------------
UART interrupt service routine
----------------------------*/
void Uart_Isr() interrupt 4 using 1
{											static unsigned char i=0;				 //白卡序列号       : BA A5 EF 0Aif(TI==1){TI=0;for(i=1;i<4;i++){SBUF=MLastSelectedSnr[i];while(!TI);TI=0;}}
}

另外mfrc522.h和RC522.c可以从资料调用过来自己的工程。


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

相关文章

基础篇010.1 STM32驱动RC522 RFID模块之一:基础知识

目录 1. RFID概述 1.1 RFID工作原理 1.2 RFID分类 1.3 RFID模块 1.4 RFID卡片 1.5 IC卡和ID卡介绍 1.6 IC卡和ID的区分 2. Mifare卡结构原理 2.1 Mifare卡概述 2.2 Mifare非接触式 IC 卡性能简介&#xff08;M1&#xff09; 2.2.1 Mifare S50与Mifare S70 2.2.2 S5…

RC522

该文为摘抄其他文章内容&#xff0c;主要为RC500书籍.pdf. 1. 通讯标准 1.1 RFID卡标准&#xff1a; 1.2 ISO/IEC 14443通讯标准&#xff1a; 2. 读写器 3. 卡 3.1 mifare 1卡 3.1.1 Mifare 1硬件结构&#xff1a; ① 射频接口&#xff1a;在 RF 射频接口电路中&#xff0c;包…

arduino rc522模块使用

rfid IC卡 先了解IC卡一些前置知识。 首先我们会有一张ic卡&#xff08;M1类型IC卡&#xff0c;一般买到的都是1K存储空间&#xff09;&#xff0c;在rc522代码中会出现这个&#xff0c;就是对IC卡进行检查PICC_TYPE_MIFARE_4K和PICC_TYPE_MIFARE_1K就是一种卡片类型不同大小…

RC522线圈设计及相关参数的选定

RC522线圈设计及相关参数的选定 LC低通滤波电路&#xff08;蓝色区域&#xff09;NFC天线电路(绿色区域)匹配电路(黄色区域)品质因子阻抗匹配 接收电路&#xff08;浅黄色区域&#xff09;TGND的疑问 LC低通滤波电路&#xff08;蓝色区域&#xff09; TX1、TX2为载波发送引脚。…

基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522

目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3.2 配置调试方式 3.3 配置时钟电路 3.4 配置时钟 3.5 配置GPIO 3.6 配置SPI 3.7 配置串口 3.8 项目配置 4. MDK工程…

STM32—驱动RFID-RC522模块

文章目录 一.S50&#xff08;M1&#xff09;卡介绍1.S50&#xff08;M1&#xff09;卡基础知识2.内部信息3.存取控制4.数据块的存取控制5.控制块的存取控6.工作原理7.M1与读卡器的通信 二.RC522工程代码详解1.RC522与M1通信2.STM32对RC522寄存器的操作3.STM32对RC522的基础通信…

STM32F103+RFID-RC522模块 实现简单读卡写卡demo

目录 前言特别声明:代码下载&#xff1a;功能介绍&#xff1a; 接线STM32STM32F1开发指南(精英版)-库函数版本_V1.2STM32中文参考手册 RFID-RC522RFID射频模块电路原理图 使用图效果图测试程序0 RC522_Handle()最终效果一、先用手机软件NFC Writer读取空卡看看内容1、打开软件和…

使用stm32驱动RC522读取IC卡

stm32驱动RC522 RC522与PN532简介关于STM32驱动方式接线说明程序烧录查看卡号总结 原文链接&#xff1a;https://www.yourcee.com/newsinfo/2924379.html 点击图片购买 RC522与PN532简介 在写这篇文章之前有写过一篇有关于PN532的文章&#xff0c;RC522与PN532在使用上都可以用…

RC522(RFID模块)实践总结

此次使用RC522模块和S50卡实现近场通讯功能&#xff08;开发板与RC522通讯方式为硬件SPI&#xff09;&#xff0c;就实践过程中的一些知识点进行总结&#xff1a; RC522模块和M1卡要点介绍&#xff1b;驱动代码&#xff1b;出现问题及解决方法&#xff1b; 1. RC522模块和M1卡…

RC522应用总结

公司需要做刷卡模块&#xff0c;因此选了RC522做demo程序。下面就RC522知识做简要的总结。 本人使用stm32的硬件spi接口搭建工程&#xff0c;相关的配置如下&#xff1a; spi配置&#xff1a; 引脚配置 SDA -------PA4 SCLK ----PB13 MOSI -------PB15 MISO ------PB14 IRQ —没…

RC522 - NFC刷卡模块

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

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

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

STM32——NFC门禁模块(RC522)

文章目录 1. 前言&#xff08;包括一些个人理解&#xff09;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大概如下所示&#xff0c;PCB部分是主机&#xff0c;然后白色的和绿色的都是IC卡&#xff0c;IC卡可以存储信息&#xff0c;通过靠近PCB主机部分就可以被感应到从…

RC522模块学习

目录 1.原理简介 2.SPI通信 3.获取卡号实验 3.驱动函数 参考&#xff1a; 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下载安装配置---测试小白

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

Windows版JMeter下载安装

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

JMeter下载安装

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

Mac版本Jmeter下载安装教程

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

JMeter-文件下载教程

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