基于CW32的RC522刷卡模块的应用实验分享
一、实验简介
1. RC522 刷卡模块是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员,是NXP 公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片。
非接触式IC卡又称射频卡,由IC芯片、感应天线组成,常被用于智能仪表和便携式手持设备中,如“三表”(水表、电表、燃气表)应用。其射频卡技术,将射频识别技术和IC卡技术结合,结束了无源(卡中无电源)和免接触这一难题,为电子器件领域带来突破。卡片在一定距离范围(通常为5—10cm)靠近读写器表面,通过无线电波的传递来完成数据的读写操作。
二、实验器材
本实验使用到了CW32-48F大学计划开发板、TTS语音播报模块、RC522刷卡模块、IC钥匙扣卡及Keil5开发环境。
【RC522刷卡模块与单片机接线】:
3.3V -- 3.3V
RST -- PB15
GND -- GND
IRQ 悬空
MISO -- PB14
MOSI -- PB13
SCK -- PB12
SDA -- PA6
(注:采用SPI通信方式)
【TTS语音播报模块与单片机接线】:
黑线 -- GND
红线 -- 3.3V
黄线 -- PA9
白线 -- PA10
三、原理简介
RC522模块(射频读写器)向IC卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,这样在电磁波激励下,LC谐振电路产生共振,从而使电容内有了电荷;在这个电荷的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内存储,当所积累的电荷达到2V时,此电容可作为电源为其它电路提供工作电压,将卡内数据发射出去或接受读写器的数据。
非接触性IC卡与读卡器之间通过无线电波来完成读写操作。二者之间的通讯频率为13.56MHZ。非接触性IC卡本身是无源卡,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后,与本身的L/C产生一个瞬间能量来供给芯片工作。另一部分则是指令和数据信号,指挥芯片完成数据的读取、修改、储存等,并返回信号给读写器,完成一次读写操作。
四、核心代码
main.c:
#include "main.h"
#include "Uart.h"
#include "stdio.h"
#include "Delay.h"
#include "RC522.h"
#include "Buzzer.h"
#include "Lcd_Driver.h"
#include "LCD_calculate.h"
#define MONRY 100 //IC卡初始金额
uint8_t RecPcd[2]={0}; //存放IC卡类型
uint8_t uid[4]={0}; //存放IC唯一序列号
uint8_t read[16]={0}; //存放读出的数据
uint8_t write[16]={0}; //存放写入的数据
uint8_t DefaultKey[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//密钥(出厂默认)
void Card_Refresh(void) //刷新卡的余额,仅在第一次使用IC卡或者IC金额刷光后使用
{
write[0]=MONRY; //将初始金额存进要写入IC卡的数组中
RC522_PcdWrite(0x01,write);//将数据写入块1
}
int main()
{
char str[16]=""; //存放显示在屏幕上的字符串
Lcd_Init(); //TFT屏幕初始化
UART3_Init(); //串口3初始化,通过串口进行语音播报
Buzzer_Init(); //初始化板载蜂鸣器
RC522_Init(); //初始化RC522刷卡模块
Gui_DrawFont_GBK16(0,0,BLUE,WHITE," BUS "); //显示界面
TFTShowString(2,0,"price: 1 RMB "); //单次刷卡金额
while(1)
{
TFTShowString(4,0,"Waiting card...");
if(RC522_PcdRequest(PICC_REQALL,RecPcd)==MI_OK) //寻卡,有卡就认
{
GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,GPIO_Pin_SET); //寻卡成功则蜂鸣器发出“滴”的一声
Delay_ms(100);
GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,GPIO_Pin_RESET);
if(RC522_PcdAnticoll(uid)==MI_OK)//防冲突,应对同时有多张卡的情况,将被选中卡片的序列号保存到uid中
{
if(RC522_PcdSelect(uid)==MI_OK) //选定序列号为uid的卡片
{
if(RC522_PcdAuthState(PICC_AUTHENT1A,0x01,DefaultKey,uid)==MI_OK)//验证该卡片第一扇区A密钥
{
// Card_Refresh(); //刷新卡的余额
if(RC522_PcdRead(0x01,read)==MI_OK) //1.读取块1(16字节)数据
{
write[0]=read[0]-1; //2.读出数据的第一字节减去(车)票价,存到写入数据的第一字节中
if(RC522_PcdWrite(0x01,write)==MI_OK) //3.写入数据到块1
{
if(RC522_PcdRead(0x01,read)==MI_OK) //4.读出刷卡后块1的数据,进行播报和显示
{
printf("刷卡成功");//语音播报刷卡成功
TFTShowString(4,0,"Brushing card...");
sprintf(str," balance:%d",read[0]);
TFTShowString(6,0,str);//显示卡中余额
}
}
}
}
}
}
}
Delay_s(1); //刷卡间隔
TFTShowString(6,0," "); //覆盖余额显示
}
}
五、效果演示
- |
- +1 赞 0
- 收藏
- 评论 0
本文由出山转载自武汉芯源( CW32生态社区公众号),原文标题为:基于CW32的RC522 刷卡模块的应用,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】基于CW32的AS608指纹模块的应用
AS608是一款集成了指纹图像采集和指纹比对算法的指纹识别模块。它采用了高质量的光学传感器,能够实时采集人体指纹图像,并通过指纹比对算法进行指纹识别。AS608具有高精度、快速、可靠的特点,广泛应用于各种指纹识别场景,如门禁系统、安防系统、考勤系统等。本实验用到了CW32-48F大学计划板、0.96寸OLED显示屏模块、AS608指纹模块及Keil5开发环境。
设计经验 发布时间 : 2023-09-26
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
设计经验 发布时间 : 2023-05-31
ESD测试是什么?武汉芯源的CW32能扛8000V?
ESD测试是确保电子设备在静电放电环境下稳定运行的重要手段之一。通过不断完善测试标准和规范、采用先进的测试设备和技术、加强测试人员的培训和管理等措施,可以进一步提高测试结果的准确性和可靠性。
设计经验 发布时间 : 2024-08-21
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
技术探讨 发布时间 : 2023-04-25
【CW32】基于CW32的GY-33颜色识别模块的应用
GY-33是一种基于TCS34725颜色传感器的颜色识别模块。TCS34725是一种高精度光学传感器,能够检测红、绿、蓝三个基本色的光谱信息,从而实现对物体颜色的准确识别,本实验使用到了CW32F030C8小蓝板、GY-33颜色识别模块、0.96寸OLED显示屏,RGB全彩LED模块、轻触开关模块及Keil5开发环境
厂牌及品类 发布时间 : 2023-09-30
基于CW32的仪表精度测量实现(二):不同的信号采用的滤波算法
对于低频信号可以采用低通滤波器滤波,低通滤波器的主要功能是允许低频信号通过,同时抑制高于某个特定截止频率的高频信号。低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过。
设计经验 发布时间 : 2024-08-17
如何使用CW32单片机通过ESP8266连接OneNET物联网平台,发送温湿度数据到平台,并接受平台的云控制?
本实验使用到了CW32-48F大学计划开发板、DHT11温湿度传感器模块、ESP8266WIFI模块及Keil5开发环境。
设计经验 发布时间 : 2023-12-06
基于CW32的无刷直流空心杯电机有感控制驱动方案
空心杯电机(Hollow-Cup Motor)是一种特殊类型的微型无刷直流电机,具有空心的旋转部分。它通常由外部固定的外壳和内部旋转的空心杯组成。空心杯电机具有较高的功率密度和扭矩输出,适用于一些特定的应用场景,如精密仪器、机器人、医疗设备等。空心杯电机的工作原理是基于无刷直流电机的原理。它采用无刷电机的结构,包括定子(固定部分)和转子(旋转部分)。
应用方案 发布时间 : 2024-05-16
解析CW32单片机的独立看门狗IWDT和窗口看门狗WWDT
看门狗在那些对安全性和稳定性要求较高的应用中特别重要,如工业控制、汽车电子、医疗设备和航空航天等领域。通过使用看门狗,可以大大减少系统因软件故障而导致的长时间不可用或错误操作的风险。本文介绍CW32单片机的两个看门狗:独立看门狗IWDT和窗口看门狗WWDT。
技术探讨 发布时间 : 2024-08-17
【应用】基于CW32的无刷水泵控制系统,使水泵更加节能、高效
本课题研究的目的是设计一套基于CW32的无位置传感器无刷直流电机控制系统,既可以改进水泵的工作模式,使水泵工作点最优;又可以使水泵电机结构简单,控制方式更为灵活。以此将整个系统加入各个不同场景中,让CW32低功耗优点,能让水泵共更加节能,高效。
应用方案 发布时间 : 2023-09-15
武汉芯源半导体邀您相约CITE2024中国电子信息博览会
CITE2024第十二届中国电子信息博览会将于2024年4月9-11日在深圳福田会展中心隆重开展,武汉芯源半导体将为电子行业参观者展示智能指纹锁、麦克风、燃气表、LED调光板、可燃气体报警器、筋膜枪、角磨机、血氧仪、温控器、BLDC无刷电机、永磁同步电机无感FOC控制方案等多款CW32单片机典型应用方案,诚邀您莅临9B122武汉芯源半导体展位参观交流!
厂牌及品类 发布时间 : 2024-04-05
基于CW32的仪表精度测量实现(一):相关滤波原理
滤波的概念滤波是指通过某种方法将信号中的某些频率成分增强或抑制,达到去除噪声、改善信号质量、分离信号等目的的过程。滤波器是实现滤波功能的关键组件,它可以改变信号的频谱特性,对不同频率区域的信号进行处理。
设计经验 发布时间 : 2024-08-17
基于CW32的无刷直流空心杯电机无感方波控制驱动方案
本方案采用CW32F030C8T6作为主控芯片,采用无感方波控制算法控制无刷直流空心杯电机。CW32F030C8T6是一款高性能、低功耗的32位微控制器,具有丰富的片上外设资源,可以适合用于电机控制。无感方波控制算法是一种简单有效的电机控制算法,不需要使用霍尔传感器,可以降低硬件成本。
应用方案 发布时间 : 2024-04-23
使用JLink烧录CW32程序
本篇主要介绍使用JLink烧录CW32程序。
设计经验 发布时间 : 2024-03-15
持续奋进,快速完善自有32位超低功耗MCU产品阵容
7月25日,2024全球MCU生态发展大会在深圳隆重召开,武汉芯源半导体在现场为电子行业参观者展示了多款MCU典型应用方案。,武汉芯源半导体技术总监张亚凡发表了主题演讲《持续奋进,快速完善自有32位超低功耗MCU产品阵容》,在宏观方面展示现有产品布局和未来产品计划,在微观方面展示产品外设细节功能的改进。
厂牌及品类 发布时间 : 2024-08-16
电子商城
登录 | 立即注册
提交评论