概述
目录
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,操作更方便哦
最后
以上就是糟糕蜻蜓为你收集整理的IC卡读写模块(MFRC522) 简介调试&QT实现的全部内容,希望文章能够帮你解决IC卡读写模块(MFRC522) 简介调试&QT实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复