实验课程

THIS NAME

实验课程

当前位置: 首页 >> 实验课程 >> 正文

RFID原理及应用-13.56M高频RFID射频通信实验

发布日期:2024-12-18    作者:丁子佳     来源:     点击:

13.56M高频RFID射频通信实验

1.1  实验目的

1.学习了解ISO/IEC1443(13.56M)协议。

2.掌握连接/断开上位机软件与13.56MRFID硬件系统的操作。

3.PC端上位机软件实现对13.56M标签的寻卡操作。

1.2  实验环境

1.硬件:电脑(推荐:主频2GHz+,内存:1GB+),物联网RFID套件;

2.软件:Windows 7/Windows XP

1.3  实验原理

1.3.1  13.56M高频RFID射频工作原理

非接触式IC卡的标准ISO/IEC14443标准分为4个部分:

第一部分物理特性;第二部分射频功能和信号接口;第三部分初始化和防冲突;第四部分传输协议。

标准的全称为ISO/IEC14443-识别卡-无接触点集成电路卡-接近式卡,标准分为两类TYPE ATYPE B。主要在非接触的通信信号接口类型、防冲突机制和传输协议方面,分别有不同的规范定义。

TYPE A是目前广泛运用的一种标准,即MIFARE标准。TYPE A主要的非接触卡片有各种不同的容量,天津地铁采用MIFARE 8Kbit1K字节)作为储值卡。

TYPE ATYPE B最根本的区别在于两者的编码与调制方式不同。

TYPE ATYPE B主要不同为调制方式,对于TYPE A,读写器(PCD)到卡(PICC)采用100%ASK调制,为改进米勒编码,卡(PICC)到读写器(PCD)使用负载调制方式,使用曼彻斯特编码。

对于TYPE B,读写器(PCD)到卡(PICC)采用ASK10%调制,使用NRZ编码,即反向不归零制,卡(PICC)到读写器(PCD)使用负载调制方式,使用BPSK编码。

对于TYPE B类型的卡片来说,采用ASK10%调制,虽然读写器始终都在向卡片供应能量,但是不同信号序列的高低电平之差却相对TYPEA小的多,大大降低了数字信号的噪声容量,抗干扰能力较差,但是可以实现高速的通讯速率。防冲突由软件方式实现,解决方案更加灵活,采用时间槽的方式来解决多张卡的防冲突机制。

1.3.2  13.56M高频RFID操作接口

1.数据帧格式

UART数据帧格式:1个起始位、8个数据位、无奇偶校验位、1个停止位。波特率:19200bps

主机每发送一个命令,模块都有应答。正常通信时,一帧数据中,发送两个字节数据的时间间隔不能大于6ms,若大于6ms,则作为超时处理。

1MCU→RPD522

命令

帧长度

数据

校验字节

Cmd

Len

Data

BCC

  令:一个字节;

帧长度:一个字节,一个帧的总长度;

数据:数据可以为空;

校验字节:从命令字节到数据的逐字节异或

BCC=Cmd ^ Len ^ Data0 ^…^ DataN

2RPD522→MCU

命令

帧长度

状态

数据

校验字节

Cmd

Len

Status

Data

BCC

  令:一个字节;

帧长度:一个字节,一个帧的总长度;

  态:一个字节,0 操作成功,非 0 操作失败;

  据:数据可以为空;

校验字节:从命令字节到数据的逐字节异或

BCC=Cmd ^ Len ^ Status ^ Data0 ^…^ DataN

2.操作命令

13.56M高频RFID操作命令如下表所示:

命令

说明

Cmd   = 0x11

GetInfo   读取模块信息

Cmd   = 0x21

Antenna   开关   RF 天线

Cmd   = 0x31

Request   请求

Cmd   = 0x32

AnticollSelect   防冲撞与选择

Cmd   = 0x34

Halt   休眠

Cmd   = 0x35

Authentication   验证密钥

Cmd   = 0x36 ReadBlock

读块

Cmd   = 0x37 WriteBlock

写块

Cmd   = 0x38 InitValue

初始化值

Cmd   = 0x39

ReadValue   读值

Cmd   = 0x3A

Decrement   扣款

Cmd   = 0x3A

Increment   充值

1.3.3  13.56M高频软件编程接口

13.56M高频软件PC端编程接口如下表所示:

实验名

接口

说明

寻卡实验接口

Private void   btn_openAntenna_Click(object sender, EventArgs e)

单击打开天线按钮产生的事件,实现发送命令执行打开天线操作功能。

privatevoid  btn_ReqeustAll_14443_Click(object                   sender,   EventArgs e)

单击请求所有按钮产生的事件, 实现发送命令执行请求所有标

签操作功能

public Byte MfRequest(Byte[]   requestdata)

请求所有标签命令发送功能实

块读写实验、密钥验证实验接口

public      Byte    MfAuthentication(Byte[]     requestdata,      Byte[]

authcommand, ref Byte[] result)

实现密钥认证功能

private void btn_Read_14443_Click(object   sender, EventArgs e)

单击读取按钮产生的事件,实现

发送命令执行读取标签数据功能

private void   btn_Write_14443_Click(object sender, EventArgs e)

单击写入按钮产生的事件,实现发送命令执行向标签写入数据

功能

卡钱包实验接口

private        void     btn_Init_Money_14443_Click(object       sender,   EventArgs e)

单击初始化金额按钮事件,实现

发送初始化金额命令实现初始化金额功能

private Int32 readRemainMoney()

实现发送读取金额命令实现读

取余额功能

private void   btn_Read_Money_14443_Click(object sender, EventArgs e)

单击读取余额按钮事件,实现发

送读取余额命令实现读取余额功能

private       void     btn_Add_Money_14443_Click(object       sender,

EventArgs e)

单击充值按钮事件,实现发送添加金额命令实现添加金额功能

private        void     btn_Del_Money_14443_Click(object       sender,

EventArgs e)

单击扣款按钮事件,实现发送扣

除金额命令实现扣除金额功能

1.4  实验步骤

1.4.1  RFID系统的寻卡实验

1.注意事项

切记:插、拔各模块前最好先关闭电源,模块插好后再通电。

RFID 读写器串口波特率为19200bps

2.环境部署

准备13.56M高频RFID模块,参考1.4.2章节设置跳线为模式2,将模块的电源拨码开关设置为OFF,参考1.4.3章节通过交叉串口线将模块与电脑的串口相连,给模块接5V电源;

将模块的电源拨码开关设置为 ON,此时模块的电源指示灯亮,表明模块电源上电正常;

运行RFID实训系统.exe 软件,选项卡选择13.56M模块,如下图所示;

3-1  RFID 13.56M模块页面

3.打开串口操作

设置串口号为COMx,设置波特率为19200,点击打开按钮执行串口连接操作,如下图所示:

3-2  打卡串口操作

4.初始化操作

读取模块信息。串口设置成功后,点击读取模块信息按钮,命令发送成功后,信息栏显示模块信息版本号:2010-18-17”,如下图所示。

3-3  读取模块信息

打开天线。串口设置成功以后,点击打开天线按钮,命令发送成功后,信息栏显示打开天线成功,打开天线成功之后,请求所有按钮变为可执行状态,请求所有表示发出 Request请求,检测读写器天线场区内有无标签,如下图所示。

3-4  打开天线

打开天线成功后,将13.56M标签放入天线场区正上方,点击请求所有按钮时,提示请求所有的卡成功,并且寻卡按钮变为可执行状态。如下图所示:

3-5  请求所有标签

点击寻卡按钮,执行防冲撞检测,寻卡成功时ID文本框内显示13.56M标签ID:43 05 E9 01,与此同时信息栏提示:防冲撞选择卡片成功,卡号为:43 05 E9 01

特别提醒:因为后续要执行读卡、写卡操作,故在寻卡时需通过防冲撞检测唯一确定检测到的一个标签,后续的验证密钥、读卡、写卡试验均是对检测到的该标签进行操作,故需保证寻卡成功后,保持该标签在读写器天线场区内。

3-6  寻卡成功

1.4.2  RFID系统的块读写实验

1.连接硬件设备、打开串口、请求所有、寻卡

依次执行3.4.1章节的1-5步完成RFID系统的寻卡操作,并保证13.56M标签在天线场区正上方;

2.验证密钥操作

1)寻卡成功后,验证密钥按钮变为可执行状态,表示可执行验证密钥操作,如下图所示;读写卡密钥是12F,即 FF FF FF FF FF FF。设置扇分区为0、块编号为1,点击验证密钥A”执行密钥验证,用密钥A验证标签第1块成功,如图所示:

3-7  密钥A验证标签第1块成功

3.读卡操作

读卡:验证密钥成功后,方可执行对标签的读写操作;在执行验证密钥操作时,针对标签扇分区0块编号1执行了密钥A验证,接下来的读卡、写卡均是针对该标签扇分区0块编号1,点击读取按钮,在数据文本框中显示16进制数据:00000000000000000000BBBBBBBBBBBB,如下图所示。

3-8  读取数据成功

写入:点击写入按钮,将数据文本框内的16进制数据写入标签,读写器提示灯闪烁的同时(表示Android 应用在向读写器发送命令),信息栏提示写卡成功。

3-9  写入数据成功

写卡验证:为了验证写卡是否成功,点击读取按钮,读卡成功后,读取的信息与写入的信息一致,读卡、写卡操作均正常完成。

3-10  写卡验证成功

1.4.3  RFID系统的验证密钥修改实验

1.连接硬件设备、打开串口、请求所有、寻卡

依次执行3.4.1章节的1-5步完成RFID系统的寻卡操作,并保证13.56M标签在天线场区正上方;

3-11  寻卡成功

2、密钥认证第3块存储区(密钥区)

选择任意一个扇区的第3块存储区,弹出所有扇区的第3块用于存放本扇区验证密钥,请谨慎写卡对话框,如下图所示。

3-12  选择任意扇区的第3块存储区

认证密钥A:点击认证密钥A”按钮,对扇区0块编号3存储区进行密钥认证,执行成功后,信息栏显示用密钥A 验证卡号的第3块成功,如下图所示:

3-13  密钥A验证扇区0块编号3存储区成功

读取密钥:点击读取按钮,执行读取操作,读取成功后,数据文本框内显示读取数据,其中0-5个字节存储的是认证密钥A,不可见,默认为 FFFFFFFFFFFF10-15个字节存储的是认证密钥 B,可见可修改,默认为 FFFFFFFFFFFF,如图所示。

3-14  读取认证密钥B

输入新认证密钥B:保证写入数据文本内的数据头FFFFFFFFFFFF078069不变,在其后输入6个字节的新认证密钥BAAAAAAAAAAAA,与此同时,认证密钥B输入框更新为:AAAAAAAAAAAA,如下图所示。

3-15  输入新的认证密钥B

修改认证密钥B:输入符合规范的新认证密钥B之后,点击写入按钮执行验证密钥B修改操作,如下图所示,验证密钥B修改成功,请重新验证密钥A

3-16 认证密钥 B 修改成功

重新执行密钥A验证:认证密钥B修改成功后,读取按钮变为不可执行状态,需重新点击认证密钥A”进行密钥认证。如下图所示,重新认证密钥A成功。

3-17  重新验证密钥A

重新读取密钥区:重新点击读取按钮,验证密钥B是否被修改,如下图所示,数据文本框显示的数据中第10-15个字节为 AAAAAAAAAAAA,该密钥为新的认证密钥B,表明认证密钥B 修改成功。

3-18  重新读取密钥区,验证密钥B是否被修改

1.3.4  RFID系统的卡钱包实验

1.执行连接硬件设备、打开串口操作、初始化操作、寻卡操作

依次执行3.4.1章节的1-5步完成RFID系统的寻卡操作,并保证13.56M标签在天线场区正上方;

3-19  寻卡成功

2.验证密钥操作

寻卡成功后,验证密钥按钮变为可执行状态,表示可执行验证密钥操作,13.56M标签预留了第02扇区01块(即第9块)为卡钱包存储,选择扇分区为2、块分区为1,点击验证密钥A”执行密钥验证,验证成功后卡钱包操作变成可执行状态,如图所示:

3-20  密钥A验证标签02扇区01块成功界面

3.钱包操作

初始化金额:初始化金额是对第02扇区01块(即第9块)存储区域进行金额初始化操作,输入初始化金额:100,点击初始化按钮,读写器提示灯闪烁的同时(发送初始化命令),信息栏提示:初始化金额:100元。

3-21  初始化金额成功

读取余额:初始化金额完成之后,点击读取余额按钮执行读取余额操作,读写器提示灯闪烁的同时(发送读取余额命令),信息栏显示:成功读取余额,余额是100元。表示初始化金额操作、读取余额操作均成功执行。

3-22  读取余额成功

充值:充值功能实现在余额的基础上增加金额,但是增加的金额有限制,最大只增加9位数金额。输入充值金额100,点击充值按钮,读写器提示灯闪烁(发送充值命令)的同时,信息栏提示:成功充值金额为:100元。

3-23  充值成功

充值验证:充值完成之后,点击读取余额按钮读取余额成功,余额文本框显示为200,表示充值、读取余额操作均正常完成。

3-24  充值验证成功

扣款:扣除功能实现在余额的基础上扣除金额,扣除金额需小于余额,当扣除金额大于余额时,会提示余额不足。输入扣除金额90,点击扣除按钮,读写器提示灯闪烁的同时,信息栏提示:成功扣除金额为90元。

3-25  扣款成功

扣款验证:扣除完成之后,点击读取余额按钮读取余额,余额文本框显示为110,表示扣款、读取操作均正常完成。

3-26  扣款验证成功


 

上一条:嵌入式Cortex-M应用-ADC实验 下一条:移动通信

关闭