LZY825597017 发表于 2023-12-1 09:44:37

RC522_32位单片机

本帖最后由 LZY825597017 于 2023-12-1 09:44 编辑


1-硬件概述
https://haohaodada.com/new/bbs/data/attachment/forum/202103/04/143730zf9gjw6q3hjqvj4g.png


RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。MFRC522利用了先进的调制和解调概念,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO014443A帧和错误检测。

2-IC卡介绍
常用的IC卡一般是M1卡,也称为S50卡,S50卡内部有16个分区,每分区有AB两组密码,总容量为8Kbit。
第0个扇区第0块用于存放厂商代码,意见固话,不可更改。
每个扇区的块0、块1、块2为数据块,可以用于存储数据。数据块可以进行读写操作。
每个扇区的块3为控制块,包括了密码A、存储控制、密码B。具体结构如下:


每个扇区的密码和控制位都是独立的,可以根据实际需求设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据和控制块)存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有一个相应的三个控制位。

3-引脚定义

https://haohaodada.com/new/bbs/data/attachment/forum/202103/04/143730l1iijq8p1jjokjek.png

https://haohaodada.com/new/bbs/data/attachment/forum/202103/04/143731ijhgg77g7jg8gmf1.png

4-电路原理图

https://haohaodada.com/new/bbs/data/attachment/forum/202103/04/143731nxoqmhwjjvxjoqx3.png

5-硬件连接


6-图形化模块
1.RC522初始化 - 初始化RC522引脚
2.RC522返回值#define   MI_OK                           0#define   MI_NOTAGERR         (-1)#define   MI_ERR                        (-2)
3.RC522寻卡(感应区内所有符合14443A标准的卡)ct:数组指针,寻到卡后,将卡类型传递给ct(一般用两字节数组接收)卡类型:             0x4400 = Mifare_UltraLight             0x0400 = Mifare_One(S50)             0x0200 = Mifare_One(S70)             0x0800 = Mifare_Pro(X)             0x4403 = Mifare_DESFire
4.RC522防冲撞(附近有多张卡时选择与其中建立联系,获取卡片序列号)sn:数组指针,防冲撞成功后,将卡类型传递给sn(一般用四字节数组接收)
5.RC522选卡sn:传入参数,数组指针,四字节的卡片序列号
6.RC522验证卡密码模式:验证A密码或验证B密码(密码A、B与控制块有关)块地址:0-63 (一个扇区 -4块,M50卡共16扇区)密码:key,数组指针(一般用6字节数组)序列号:sn,需要通信卡的序列号空白卡密码A、B均为0xff,0xff,0xff,0xff,0xff,0xff(初学者不建议对控制块进行修改,一旦密码A\B或者控制字节出错就需要专业工具破解很麻烦)(控制块地址3、7、11...)密码A、B与控制块如下图:
7.RC522读数据块地址:0-63 (一个扇区 -4块,M50卡共16扇区)buf:读取的16字节传递buf(一般用16字节数组)
8.RC522写数据块地址:0-63 (一个扇区 -4块,M50卡共16扇区)buf:写的16字节数组指针(一般用16字节数组)
9.RC522扣款/充值命令词:选择扣款或者充值功能块地址:0-63 (一个扇区 -4块,M50卡共16扇区)(选择一个数据块作为钱包)buf:金额(四字节,注意4字节增(减)值,低位在前)注意:当你定义好M1卡的某一块为钱包时,需要对其进行初始化,先将下面的数据写入到钱包(指定块)内,写入成功后该卡片则获取到了充值与扣款的资格。unsigned char RFID1={0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};
10.RC522钱包备份
源地址块地址:0-63 (需要备份钱包地址)
目标地址块地址:0-63 (钱包地址备份新地址)

7-范例(CH32V003)
空白卡读写以及钱包使用案例:

读写测试:两张卡读写,前4字节卡序列号,后16字节存储数据

充值扣款:金额(第5-8字节且低位在前)


8-注意事项
1、连接线:确定连接顺序正确且连接线本身没有问题
2、使用范例没有反应:检查硬件问题、检查卡是否为M50等符合的卡片、电源检查等等,如果还是有问题建议使用逻辑分析仪检查时序
3、读写之前能用,后面突然读不出来:检查是否修改过密码,即对控制块写(默认权限是可以写控制块的3、7、11等),尝试读取其他扇区数据块
4、读取控制块密码A返回6字节全为0?如下图:(控制字节仅用到前3个字节)

控制字节bit位对应表:

得出:
因此密码A不可读(读出全为0)





页: [1]
查看完整版本: RC522_32位单片机