当前位置: 首页 > news >正文

RFID技术深度剖析:从原理、协议到S50卡与FM17550读写

知识点1【RFID的概述】

学习目标是学习对这个卡片的读写

已有的手册实现对卡片内数据的读写操作

RFID:(Radio Frequency Identification)无线射频识别

通过无线识别目标,并读写相关数据,而无需接触

位于感知层,物联网的最底层(边缘层)

这里补充一下:我们知道我们的运算中心是在中央处理器,所有的任务都交给它去做,因此需要我们大力的去发展网络传输速度,以将数据尽可能快的传递给中央处理器进行处理。这样中央处理器的负担较大,因此我们现在发展的方向是在感知层方面添加运算功能,也就是常说的边缘运算。即先进性初步计算,然后将关键数据传递给中央处理器,但是还未普及。

1、应用场合

门禁,图书管理,货物识别等场景。比如我们常用的NFC(RFID 的子集,阅读器和卡片一体式),常用于支付领域,如碰一碰,公交卡等。

2、RDID的选择判断

知识点2【RFID 的原理及应用】

阅读器:阅读器上有线圈,它直接与开发板相接,可以产生一个固定频率的电磁波。

卡片:也有线圈。

当两个线圈进行切割的时候,会产生感应电流,卡片中的电容就会积累电荷,电压升高,当阅读器离开后,电容就可以放电了,就可以将卡内数据发送出去 或者 卡片接收来自阅读器的数据了。

详细介绍

阅读器(PCD):读写标签信息的设备,可设计为手持式rfid读写器 或 固定式读写器

应答器(PICC):一般都是用标签作为应答器,每个标签具有唯一的电子编码,附着在物体上识别目标对象。

应用软件系统:应用层软件,主要是将收集到的数据进一步处理,并为人们所使用

补充:

NFC即使 应答器 也是 阅读器,它是一个动态角色切换的过程。

知识点3【RFID的协议】

RFID 的协议主要用来确认卡的类型

1、卡的分类

TypeA类:

MIFARE Std 1k:MF1 S50 我使用是S50卡

MIFARE Std 4k:MF1 S70

TypeB类:

我国第二代居民身份证:上海华虹、北京同方、THR9904、天津大塘和北京华大生产。

AT88RF020:美国爱特梅尔(ATMIL)生产,典型应用如广州地铁卡。

阅读器需要区分是A卡还是B卡

2、卡的状态

POWER OFF:缺少能量载波

IDLE:等待读写器发来的信号

READY:收到读写器发来的信号

ACTIVE:收到读写器发来的选择

HALT:读写器发来的停止命令

面试的时候 卡的状态问的很少,进程的状态问的较多

3、卡片的请求命令(重点)

REQA:请问未被HALT的TypeA卡——0x26

WAKE-UP:请求所有的TypeA卡——0x52

具体使用我们需要看详细的代码才能深刻理解

1、复位

阅读器通过特定协议验证卡片类型,切换 卡的状态为IDLE

2、寻卡

获取复位时确定的卡的类型数据,切换 卡的状态为READY

3、放冲突

多卡操作时,获取完整UID

4、选卡

根据完整UID,选择相应的卡片,切换 卡的状态为ACTIVE

5、HALT

挂起此卡,知道WAKE UP指令

6、验证密码

指定加密类型,指定密码块号,指定密码,指定卡号

7、读块内容

验证密码通过后,可读取指定块数据

8、写块内容

验证密码通过后,可写入指定块数据

解释

1、卡未充电处于POWER OFF状态,一旦阅读器对其充电(刷卡),就会处于IDLE状态

这一过程执行的操作:复位——阅读器对卡进行充电,并验证卡的类型

2、读卡器发送REQA命令,卡 切换为 READ状态

这一过程执行的操作:寻卡——阅读器获取复位时确定的卡的类型,但是此时读卡器不知道卡的张数

3、在READ状态,阅读器循环发出防冲撞(Anticollision)命令

这一过程执行的操作:防冲撞——每张卡根据其UID响应读卡器的Anticollision命令。最后 筛选并确定 出目标卡片的完整UID。

仅被选中卡片保持在Read状态,其他卡片则被忽略

4、发出SELECT命令,此命令包含 完整UID,卡 切换到 ACTIVE 状态

这一过程执行的操作:只有与UID匹配的卡片才会相应SELECT命令,并向阅读器发送其信息(SAK - Select Acknowledge),表明卡片所支持的应用协议

5、在ACTIVE状态,执行应用操作

就是我们上面介绍的验证密码,读,写操作了

6、停止卡片,阅读器发出 HALT 命令,卡片切换到HALT状态——低功耗

此时只相应WAKE-UP命令

知识点4【RFID应答器——卡片】

1、卡片的分类:ID IC卡

很好区分,ID卡内部没有芯片的,IC卡是有芯片的

(1)ID卡

不可写入的感应卡,含固定的编号。仅仅代表卡的编号,无任何保密功能,卡号是公开的,甚至是可以修改的

(2)IC卡

IC卡可以是接触式,也可以是非接触式。能对其内部的固有信息进行加密,便于携带。

2、S50卡特点介绍

(1)容量8K位EEPROM == 1024个字节

(2)分为16个扇区,每个扇区4块,每块16个字节

16 * 4 * 16 = 1024 个字节

(3)每个扇区有独立的一组密码及访问控制

(4)每张卡 都有唯一序列号(UID),为32位

(5)具有放冲突机制,支持多卡操作

(6)工作频率:13.56MHz——与阅读器的需求同频

知识点5【RFID阅读器——FM17550】

FM17550是复旦微电子的RFID阅读器,可以识别AB类卡。

我们这里使用的是USART类型

1、引脚介绍

2、特点介绍

频率13.56MHz

串口波特率:9600,无奇偶校验,无流控,数据位为8Bit,1位停止位

FM17550是一个裸机(内部没有操作系统),因此想要操作FM17550,就需要操作其寄存器

通过的方式管理相同功能的寄存器

0xmn 操作的是m页的第n个寄存器。如下是第0页的所哟寄存器,0x03 操作的就是DicEnReg寄存器

每个寄存器8位

3、工作配置要求

工作前需要一个硬件复位:**外部IO表示一定的低电平,**即我们上图中的RST引脚.

确定复位成功的方法

读地址位0x37 的版本寄存器的值

FM17550——0x88

MFRC522——0x92

 结束

代码重在练习!

代码重在练习!

代码重在练习!

今天的分享就到此结束了,希望对你有所帮助,如果你喜欢我的分享,请点赞收藏加关注,谢谢大家!!!

相关文章:

  • TI MSPM0G3507 简易PID项目显示和按键控制
  • C++语法系列之模板进阶
  • 【C#】一个简单的http服务器项目开发过程详解
  • MySQL备份工具:mysqldump
  • leetcode hot100刷题日记——33.二叉树的层序遍历
  • 单例模式的类和静态方法的类的区别和使用场景
  • Redis实战-基于redis和lua脚本实现分布式锁以及Redission源码解析【万字长文】
  • Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
  • 关于 java:3. Java 常用类库与数据结构
  • Spark核心:单跳转换率计算全解析
  • 【android bluetooth 案例分析 04】【Carplay 详解 3】【Carplay 连接之车机主动连手机】
  • 跟我学c++中级篇——隐式转换的意义
  • 使用 Let‘s Encrypt 和 Certbot 为 Cloudflare 托管的域名申请 SSL 证书
  • C++类设计新思路:借鉴Promise链式调用的封装模式
  • 索引的选择与Change Buffer
  • Github 热点 Github 热点 Syncthing:多台设备,持续同步文件,安全同步,隐私无忧!
  • Java网络编程实战:TCP/UDP Socket通信详解与高并发服务器设计
  • [蓝桥杯]分考场
  • 具有离散序列建模的统一多模态大语言模型【AnyGPT】
  • 如何基于端口监控FreeSWITCH的Recv-Q?
  • 成华网站制作/怎么自己弄一个网站
  • cdr可以做网站页面吗/如何搭建网站
  • 高端网站建设设计公司排名/百度指数网址是什么
  • 换友链的网站/哈尔滨网站推广
  • 用html做登录网站/网站运营seo实训总结
  • 简单建站的网站/线下营销推广方式都有哪些