IC卡读写模块(MFRC522) 简介调试&QT实现

目录

1. 前言

2. 相关知识

3. 基础调试

4. QT实现


1. 前言

本例主要讲解MFRC522和IC卡的相关知识,以及其基础调试(检测模块的可用性),QT实现的已公开源码解析。

 

2. 相关知识

2.1 MFRC522简介

MFRC522是非接触式读写模块,可以理解为IC卡读写模块,常见的使用场景如门禁等

只支持3种通讯方式:①SPI、②I2C、③UART

2.2 S50/S70(IC卡)简介

S50/S70卡,就是常说的IC卡,即MFRC522模块扫描识别的卡。模块主要性能:

①分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,一般将16个扇区的64个块按绝对地址编号为0~63,相关操作也按绝对地址编号操作

②第0扇区的块0,即绝对地址0块,存放厂商代码,已经固化不能更改

③每个扇区的块0/1/2为数据块,可以进行读写操作;块3为控制块

2.3 工作原理

读写器(MFRC522模块)向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据

 

3. 基础调试

电路图:

MFRC522模块,出厂默认为SPI的。如果是使用SPI接口协议,就无需改动;如果使用URAT和I2C,就需要把相应管脚变动。

我下面使用UART接口调试,所以要把R5管脚接地,调试直接把EN管脚焊掉就行了。建议用SPI。

 

基础调试是在Windows下,利用Rc52x PcSerial 2.1软件来测试模块的可使用行。

(1)准备的物品有:

①USB转TTL模块    ②MFRC522模块    ③S50/S70卡(IC卡/白卡)

(2)USB转TTL模块与MFRC522连接图

(3)测试步骤

先把RFID卡放到MFRC522的天线区。

打开Rc52x PcSerial 2.1软件,打开菜单栏的【Port】->【Setting】,选择USB转TTL相应的串口后,点击[Verify],显示OK,然后点击[Apply]。默认波特率9600

在界面上点击Open,再点击Select JCF,选择文件夹中的mifare_reader_invert.jcf文件,在点击Process JCF

具体返回信息看软件文档。简单点说如果没反正ERROR,就是识别成功了。

 

4. QT实现

基础流程:(建议改为如下,公开的源码只执行一次,非循环)

 

主要用到的函数有以下:

PcdReset(...)            //复位RC522
PcdAntennaOn(...)        //开启天线
PcdAntennaOff(...)       //关闭天线
PcdRequest(...)          //寻卡方式
PcdAnticoll(...)         //防冲撞
PcdSelect(...)           //选定卡片
PcdAuthState(...)        //验证卡片密码
PcdRead(...)             //读取M1卡一块数据
PcdWrite(...)            //写数据到M1卡一块
PcdValue(...)            //扣款和充值
PcdBakValue(...)         //备份钱包
PcdHalt(...)             //命令卡片进入休眠状态
PcdComMF522(...)         //通过RC522和ISO14443卡通讯
CalulateCRC(...)         //计算CRC16函数
WriteRawRC(..)           //写RC632寄存器
ReadRawRC(..)            //读RC632寄存器
SetBitMask(..)           //置RC522寄存器位
ClearBitMask(..)         //清RC522寄存器位

通过函数的配合调用,来实现相应的功能。

只提供网络上已公开的源码(需按自己的需要改动,本人源码因公司机密不能提供):

基础流程在mainwindow里实现,驱动在mfrc522类里实现。

需要特别注意就是写和读寄存器的方式,按照你项目需要,是UART,SPI还是I2C改动。

界面如下,基础的卡读写操作都有:

 

链接:https://pan.baidu.com/s/1cQuQGWtj0HDk4vodAvQ5lw 
提取码:t8d6 
复制这段内容后打开百度网盘手机App,操作更方便哦

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值