当STM32遇上RFID
摘要:利用STM32作为微控制器,使用RC522模块检测S50卡,实现电子钱包功能。
知识点铺垫:
一、IC卡标准协议
1、非接触式IC卡标准协议:ISO 14443 typeA/typeB协议(根据加密方式区分)
2、typeA:一般用于私用,会员卡消费卡等
typeB:加密特性好,用于公用,例如身份证
3、扩展:15693--与上者的区别在于耦合方式不同,前者为近场耦合,后者为远场耦合,距离更远。
二、IC卡的分类:
三、程序分析
1、初始化相关引脚:涉及SPI通信相关、模块io等
2、初始化RC522:
/*================== 初始化RC522 ===================*/
void RC522_Init(void)
{PcdReset(); /*读写模块复位初始化*/PcdAntennaOff(); /*关闭天线*/PcdAntennaOn(); /*开启天线*/M500PcdConfigISOType( 'A' ); /*设置为ISO 14443A 模式*/
}
3、PcdReset(); //再次复位
4、对卡操作:寻卡--->防冲突--->选卡--->操作卡(固定程序,有时间再仔细分析)
重点分析对卡进行充值扣费操作:
/*=======================================================================* 功 能:已注册卡片充值* PICC_AUTHENT1A :验证A密钥的 * Card_Number_Buf:存储卡号的缓存区* New_Key :新密码* Write_First_Data:要写入块的清零数据* Read_Data :从块中读出数据的缓存* 返 回 值:1 或 MI_OK【注:MI_OK = 0】;* 验证密码、写密码、写数据任一环节出错则返回1* 验证密码、写密码、写数据所以环节都正确在返回MI_OK
=========================================================================*/
u8 Add_Money_Card(void)
{
// u8 i;u8 status ;u16 money;Card_Mode = CONSUME; // 注册完成之后,切换到消费功能status = PcdAuthState(PICC_AUTHENT1A, 7, New_Key, Card_Number_Buf); // 验证卡片密码if (status != MI_OK) { return 1; } // 验证密码失败,可能卡没有被注册/******** 读出 block 4(扇区2 的 block0) 16字节数据到Read_Data中 **********/status=PcdRead(4, Read_Data);if (status != MI_OK) { return 1; } // 读出数据/***** 将前两个字节合并成一个金额数值money ******/money = (u16) (Read_Data[1] << 8);money |= Read_Data[0];// printf("充值前%d \n",money); /********* 金额数值加10 *********/money = money + 10;/********** 将增加后的金额数值拆分成两个字节 *********/Read_Data[0] = (u8)(money);Read_Data[1] = (u8)(money >> 8);// printf("充值后%d \n",money); /*向block 4(扇区2 的 block0) 中写入充值后的数据Read_Data*/status = PcdWrite(4, Read_Data);if (status != MI_OK) { return 1; } // 写入数据失败printf("充值10元 \n"); return MI_OK;}
/*假设钱包余额为10元*/
money = (u16) (Read_Data[1] << 8); //0x00==0000 0000 0000 0000
money |= Read_Data[0]; //money==0000 0000 0001 0000
/********* 金额数值加10 *********/
money = money + 10; //money=0000 0000 0010 0000
/********** 将增加后的金额数值拆分成两个字节 *********/
Read_Data[0] = (u8)(money); //Data[0]=0010 0000
Read_Data[1] = (u8)(money >> 8); //Data[1]= 0000 0000
/*向block 4(扇区2 的 block0) 中写入充值后的数据Read_Data*/
status = PcdWrite(4, Read_Data); //扇区0中是block0,block1,block2,block3
余额变为20元。
---------------------------------------------------------------------------------------------------------------------------------
其他知识点补充:
* RFID有非常多的频段,常用的门禁卡一般是13.56Mhz;频率越高一般检测的距离更远。像ETC这种,处于超高频,可以远距离检测。
NFC被称为近场通信,只有一个频段13.56MHZ,读卡器和标签于一体,集成度更高,主要用于支付领域。
* SPI: 四个引脚:MOSI:主设备输出,从设备输入;
MOSO:主设备输入,从设备输出;
SCK:时钟
NSS:片选信号引脚,用于主设备选择特定的从设备通信。
* 耦合电路:两个或者两个以上电路构成一个网络时,若其中某一个电路中电流或者电压发生变 化,能影响到其他电路也发生类似的变化。
耦合的作用是把某一电路的能量输送或转换到其他的电路中去。
--------------------------------------
RC522读卡器不同厂家引脚连接上有所不同。
区别在于RST引脚要连接3.3V,之前的模块是连接了GPIOC7。
RQ引脚理论要悬空,程序里面也没有使用,连接无妨。
当STM32遇上RFID相关推荐
- linux一致stm32,当STM32遇上Linux操作系统,一下子碰撞出STM32MP1
MCU领域,STM32就是一个奇迹.从2007年推出第一颗STM32F103起,STM32就迈开步伐不断向前,在12年的时间里,不仅打造一个MCU超级平台,还构建了一个庞大的生态系统."ST ...
- 基础篇010.2 STM32驱动RC522 RFID模块之二:STM32硬件SPI驱动RC522
目录 1. 实验硬件及原理图 1.1 RFID硬件 1.2 硬件原理图 2. 单片机与RFID硬件模块分析 3. 利用STM32CubeMX创建MDK工程 3.1 STM32CubeMX工程创建 3. ...
- 基于STM32单片机的RFID门禁显示系统
基于STM32单片机的RFID门禁显示系统 本设计由STM32F103C8T6单片机最小系统+RFID-RC522模块+继电器模块+蜂鸣器电路+LCD1602液晶显示电路+按键电路+电源电路组成 1. ...
- 推荐系统遇上深度学习,9篇阿里推荐论文汇总!
作者 | 石晓文 转载自小小挖掘机(ID: wAIsjwj) 业界常用的推荐系统主要分为两个阶段,召回阶段和精排阶段,当然有时候在最后还会接一些打散或者探索的规则,这点咱们就不考虑了. 前面九篇文章中 ...
- 华为平板电脑_当5G遇上平板电脑,华为MatePad Pro 5G带来了什么?
5G已经来临,科技产品向5G升级已是大势所趋,这更是检验实力的探索之路. 2月24日,华为在巴塞罗那在线发布了一系列新品,其中,华为面向全球推出的5G高端旗舰平板,同时也是全球首款公开发布的5G平板华 ...
- 404未找到是什么意思_为什么老遇上404 not found?你懂的
文章转载自公众号:一只学霸(bajie203) 昨天晚上 大毛火急火燎地打开了电脑 戴上了耳机 不到两分钟 -- 我们往前一凑 登等 果然是大家最害怕的一幕出现了 学霸在网上冲浪多年 留下的都是美好的 ...
- 《当用户体验设计遇上敏捷》一3.5 小结
本节书摘来自异步社区<当用户体验设计遇上敏捷>一书中的第3章,第3.5节,作者[英]Lindsay Ratcliffe , Marc McNeill,更多章节内容可以访问云栖社区" ...
- 当网络安全遇上大数据分析(9)
2012年3月份,Gartner发表过一篇报告--Information Security Is Becoming a Big Data Analytics Problem .里面主要就讲到了针对大规 ...
- html实体编码遇上js代码
单双引号 在js代码中 在js中单.双引号引起来的是字符串,如果我们要在字符串中使用单.双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=&quo ...
最新文章
- 软件架构乱弹——问题域及其解决方法
- 安装JAVA8要登录_JDK8的安装及环境配置
- 《STL源码剖析常见面试问题》
- CentOS 6.6 nginx PHP 配置
- CPU内部看门狗,外部看门狗以及软件看门狗
- php完全中文手册下载,PHP4完全中文手册下载-PHP4完全中文手册 免费版
- C++ Perf性能调优+火焰图调优
- #11.11 个人排位赛round2_A.Diana and Liana(CodeForces 1121D)
- 汇编语言_一些寄存器与寻址方式
- VS 创建C# winfrom 语音播报(文字朗读),无需下载插件
- 部署DNS从服务失败,nslookup访问www.linuxprobe.com失败
- java教程菜鸟要飞_php7新特性 - 菜鸟要飞啊的IT小窝 - OSCHINA - 中文开源技术交流社区...
- Mybatis-Plus引入后出错的原因
- Flickr8k和Flickr8kCN 数据下载
- linux nginx的 yum安装
- 五一单片机之LCD1602
- V-Rep虚拟机器人实验平台在Ubuntu18.04LTS安装与使用笔记
- 【财经期刊FM-Radio|2021年03月29日】
- 3D月光宝盒游戏机模拟器方案源码项目解析(1)
- mysql经常挂掉_mysql 数据库经常报错挂掉