查看: 276|回复: 0

RC522_32位单片机

[复制链接]

28

主题

66

帖子

1169

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1169
发表于 2023-12-1 09:44:37 | 显示全部楼层 |阅读模式
本帖最后由 LZY825597017 于 2023-12-1 09:44 编辑

1-硬件概述



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。具体结构如下:
image.png

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

3-引脚定义





4-电路原理图



5-硬件连接
image.png

6-图形化模块
1.  RC522初始化 - 初始化RC522引脚
image.png

2.  RC522返回值
image.png
#define     MI_OK                           0
#define     MI_NOTAGERR           (-1)
#define     MI_ERR                        (-2)

3.  RC522寻卡(感应区内所有符合14443A标准的卡)
image.png
ct:数组指针,寻到卡后,将卡类型传递给ct(一般用两字节数组接收)
卡类型:
             0x4400 = Mifare_UltraLight
             0x0400 = Mifare_One(S50)
             0x0200 = Mifare_One(S70)
             0x0800 = Mifare_Pro(X)
             0x4403 = Mifare_DESFire

4.  RC522防冲撞(附近有多张卡时选择与其中建立联系,获取卡片序列号)
image.png
sn:数组指针,防冲撞成功后,将卡类型传递给sn(一般用四字节数组接收)

5.  RC522选卡
image.png
sn:传入参数,数组指针,四字节的卡片序列号

6.  RC522验证卡密码
image.png
模式:验证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与控制块如下图:
image.png
image.png

7.  RC522读数据
image.png
块地址:0-63 (一个扇区 -4块,M50卡共16扇区)
buf:读取的16字节传递buf(一般用16字节数组)

8.  RC522写数据
image.png
块地址:0-63 (一个扇区 -4块,M50卡共16扇区)
buf:写的16字节数组指针(一般用16字节数组)

9.  RC522扣款/充值
image.png
命令词:选择扣款或者充值功能
块地址:0-63 (一个扇区 -4块,M50卡共16扇区)(选择一个数据块作为钱包)
buf:金额(四字节,注意4字节增(减)值,低位在前)
注意:当你定义好M1卡的某一块为钱包时,需要对其进行初始化,先将下面的数据写入到钱包(指定块)内,写入成功后该卡片则获取到了充值与扣款的资格。
unsigned char RFID1[16]={0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};

10.  RC522钱包备份
image.png
源地址块地址:0-63 (需要备份钱包地址)
目标地址块地址:0-63 (钱包地址备份新地址)

7-范例(CH32V003)
空白卡读写以及钱包使用案例:
image.png
读写测试:两张卡读写,前4字节卡序列号,后16字节存储数据
image.png
充值扣款:金额(第5-8字节且低位在前
image.png

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




image.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-5-2 07:03 , Processed in 0.324846 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表