实验6 HF高频RFID通信协议实验V0317.docx
- 文档编号:13534807
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:16
- 大小:389.13KB
实验6 HF高频RFID通信协议实验V0317.docx
《实验6 HF高频RFID通信协议实验V0317.docx》由会员分享,可在线阅读,更多相关《实验6 HF高频RFID通信协议实验V0317.docx(16页珍藏版)》请在冰点文库上搜索。
实验6HF高频RFID通信协议实验V0317
实验6HF高频RFID通信协议实验-V20170317
1.实验目的
掌握高频读卡器的通讯协议;
掌握高频模块工作原理;
掌握本平台高频模块的操作过程;
2.实验设备
硬件:
RFID实验箱套件,电脑等;
软件:
Keil,串口调试助手;
STC_ISP软件:
配套光盘\第三方应用软件\STC_ISP
异或计算小软件:
配套光盘\第三方应用软件\异或计算小软件
源码路径:
配套光盘\源代码\RFID基础实验\实验6HF高频RFID通信协议实验-V20170317
Hex路径:
配套光盘\源代码\RFID基础实验\实验6HF高频RFID通信协议实验-V20170317\out
3.实验原理
3.1高频RFID系统
典型的高频HF(13.56MHz)RFID系统包括阅读器(Reader)和电子标签(Tag,也称应答器Responder)。
电子标签通常选用非接触式IC卡,又称智能卡,可读写,容量大,有加密功能,数据记录可靠。
IC卡相比ID卡而言,使用更方便,目前已经大量使用在校园一卡通系统、消费系统、考勤系统、公交消费系统等。
目前市场上使用最多的是PHILIPS的Mifare系列IC卡。
读写器(也称为“阅读器”)包含有高频模块(发送器和接收器)、控制单元以及与卡连接的耦合元件。
由高频模块和耦合元件发送电磁场,以提供非接触式IC卡所需要的工作能量以及发送数据给卡,同时接收来自卡的数据。
此外,大多数非接触式IC卡读写器都配有上传接口,以便将所获取的数据上传给另外的系统(个人计算机、机器人控制装置等)。
IC卡由主控芯片ASIC(专用集成电路)和天线组成,标签的天线只由线圈组成,很适合封状到卡片中,常见IC卡内部结构如图3.1所示:
图3.1IC卡内部结构图
较常见的高频RFID应用系统如图3.2所示,IC卡通过电感耦合的方式从读卡器处获得能量。
图3.2常见高频RFID应用系统组成
下面以典型的IC卡MIARE1为例,说明电子标签获得能量的整个过程。
读卡器向IC卡发送一组固定频率的电磁波,标签内有一个LC串联谐振电路(如图3.3),其谐振频率与读写器发出的频率相同,这样当标签进入读写器范围时便产生电磁共振,从而使电容内有了电荷,在电容的另一端接有一个单向通的电子泵,将电容内的电荷送到另一个电容内储存,当储存积累的电荷达到2V时,此电源可作为其他电路提供工作电压,将标签内数据发射出去或接收读写器的数据。
图3.3IC卡功能结构图
3.2非接触式IC卡
目前市面上有多种类型的非接触式IC卡,它们按照遵从的不同协议大体可以分为三类,各类IC卡特点及工作特性如图3.4所示。
PHILIPS的Mifare1卡(简称M1卡)属于PICC卡,该类卡的读写器可以称为PCD。
图3.4IC卡分类
高频RFID系统选用PICC类IC卡作为其电子标签,这里以Philips公司典型的PICC卡Mifare1为例,详细讲解IC卡内部结构。
Philips是世界上最早研制非接触式IC卡的公司,其Mifare技术已经被制定为IS014443TYPEA国际标准。
本平台选用用Mifare1(S50)卡作为电子标签,其内部原理如图3.5所示:
图3.5M1卡内部原理
射频接口部分主要包括有波形转换模块。
它可将读写器发出的13.56MHZ的无线电调制频率接收,一方面送调制/解调模块,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,由电压调节模块对电压进行进一步的处理,包括稳压等,最终输出供给卡片上的各电路。
数字控制单元主要针对接收到的数据进行相关处理,包括选卡、防冲突等。
Mifare1卡片采取EEPROM作为存储介质,其内部可以分为16个扇区,每个扇区由4块组成,(我们也将16个扇区的64个块按绝对地址编号为0-63,存贮结构如下图3.6所示:
图3.6MF1卡片存储结构
第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。
其中:
第0~3个字节为卡片的序列号;第4个字节为序列号的校验码;第5个字节为卡片内容“size”字节,第6~7个字节为卡片的类型字节。
每个扇区的块0、块1、块2为数据块,可用于存贮数据。
数据块可作两种应用:
用作一般的数据保存,可以进行读、写操作。
例如在食堂消费时采用输入饭菜金额的方式扣款。
用做数据值,可以进行初始化加值、减值、读值操作。
例如在食堂消费时对于定额套餐采用输入餐号的方式加以扣款,又如公交/地铁等行业的检票/收费系统中的扣费。
每个扇区的块3为控制块,包括了密码A、存取控制、密码B。
具体结构如下,
A0A1A2A3A4A5FF078069B0B1B2B3B4B5
其中A0—A5代表密码A的六个字节;B0—B5代表密码B的六个字节;FF078069为四字节存取控制字的默认值,FF为低字节。
每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。
存取控制为4个字节,共32位,扇区中的每个块(包括数据块和的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:
块0:
C10C20C30
块1:
C11C21C31
块2:
C12C22C32
块3:
C13C23C33
三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。
三个控制位在存取控制字节中的位置,以块0为例,如下所示:
Bit76543210
C20_
b
C10_
b
C10
C30_
b
C30
C20
字节6
字节7
字节8
字节9
3.3ISO14443协议标准简介
ISO14443协议是超短距离智慧卡标准,该标准定义出读取距离7-15公分的短距离非接触智能卡的功能及运作标准,ISO14443为TYPEA和TYPEB两种。
TYPEA产品具有更高的市场占有率,如Philips公司的MIFARE系列占有了当前约80%的市场,且在较为恶劣的工作环境下有很高的优势。
而TYPEB在安全性、高速率和适应性方面有很好的前景,特别适合于CPU卡。
这里重点介绍MIFARE1符合ISO14443TYPEA标准。
1)ISO14443TYPEA标准中规定的基本空中接口基本标准
lPCD到PICC(数据传输)调制为:
ASK,调制指数100%
lPCD到PICC(数据传输)位编码为:
改进的Miller编码
lPICC到PCD(数据传输)调制为:
频率为847kHz的副载波负载调制
lPICC到PCD位编码为:
曼彻斯特编码
l数据传输速率为106kbps
射频工作区的载波频率为13.56MHz
最小未调制工作场的值是1.5A/mrms(以Hmin表示),最大未调制工作场的值是7.5A/mrms(以Hmax表示),邻近卡应持续工作在Hmin和Hmax之间
PICC的能量是通过发送频率为13.56MHz的阅读器的交变磁场来提供。
由阅读器产生的磁场必须在1.5A/m-7.5A/m之间。
2)ISO14443TYPEA标准中规定的PICC标签状态集,读卡器对进入其工作范围的多张IC卡的有效命令有:
REQA:
TYPEA请求命令
WAKEUP:
唤醒命令
ANTICOLLISION:
防冲突命令
SELECT:
选择命令
HALT:
停止命令
图3.7为PICC(IC卡)接收到PCD(读卡器)发送命令后,可能引起状态的转换图。
传输错误的命令(不符合ISO14443TYPEA协议的命令)不包括在内。
图3.7PICC状态转化图
掉电状态(POWEROFF):
在没有提供足够的载波能量的情况下,PICC不能对PCD发射的命令做出应答,也不能向PCD发送反射波;当PICC进入耦合场后,立即复位,进入闲置状态。
闲置状态(IDLESTATE):
当PICC进入闲置状态时,标签已经上电,能够解调PCD发射的信号;当PICC接收到PCD发送的有效的REQA(对A型卡请求的应答)命令后,PICC将进入就绪状态。
就绪状态(READYSTATE):
在就绪状态下,执行位帧防碰撞算法或其他可行的防碰撞算法;当PICC标签处于就绪状态时,采用防冲突方法,用UID(惟一标识符)从多张PICC标签中选择出一张PICC;然后PCD发送含有UID的SEL命令,当PICC接收到有效的SEL命令时,PICC就进入激活状态(ACTIVESTATE)。
激活状态(ACTIVESTATE):
在激活状态下,PICC应该完成本次应用所要求的所有操作(例如,读写PICC内部存储器);当处于激活状态的PICC接收到有效的HALT命令后,PICC就立即进入停止状态。
停止状态(HALTSTATE):
PICC完成本次应用所有操作后,应进入停止状态;当处于停止状态的PICC接收到有效的WAKE_UP命令时,PICC立即进入就绪状态。
注意:
当PICC处于停止状态下时,在重新进入就绪状态和激活状态后,PICC接受到相应命令,不在是进入闲置状态,而是进入停止状态。
3.4高频RFID系统读写器
3.4.1通信流程
高频RFID系统读写器与IC卡通信过程如图3.8所示,主要步骤有:
复位应答(Answertorequest):
M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。
防冲突机制(AnticollisionLoop):
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。
具体防冲突设计细节可参考相关协议手册。
选择卡片(SelectTag)选择被选中的卡的序列号,并同时返回卡的容量代码。
三次互相确认(3PassAuthentication):
选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯(在选择另一扇区时,则必须进行另一扇区密码校验)。
对数据块的操作:
包括读、写、加、减、存储、传输、终止。
图3.8读卡器与IC通讯流程
3.4.2防冲突
当读写器读写范围内部有多张PICC标签时,读写器利用各卡的UID(惟一标识符)从多张标签中选择出一张PICC标签。
不同IC卡其内部的UID大小不同,通常UID由4、7或10个UID字节组成。
PICC将这些字节按照其字节数封装在几个串联级别中发送给读卡器,每个串联级别内包含5个数据字节,其中包括3个或4个UID字节,如图3.9所示,从图可知PICC最多会发送三个串联级别(串联级别数又可以称为UID大小)。
图3.9UID结构
图中CT为级联信号,表示在下一级中还有UID;BCC为本级检验码。
由图可知,PICC最多应处理3个串联级别,以得到所有UID字节。
阅读器防冲突过程如下:
1)首先由PCD发送REQA命令或WAKEUP命令,使卡进入READY状态(参见标签状态转换图)。
这两个命令的差别是:
REQA命令使卡从IDLE状态进入READY状态,而WAKEUP命令使卡从HALT状态进入READY状态。
2)PICC接收到命令后,所有处在PCD电磁场范围内的PICC同步发出ATQA应答,说明本卡UID的大小(1、2或3),之后进入READY状态,执行防冲突循环操作。
3)PCD通过发送ANTICOLLISION和SELECT命令执行防冲突循环操作
3.5读写芯片CLRC632简介
CLRC632是NXP生产的高集成13.56MHZ射频卡芯片。
支持ISO/IEC14443A、ISO/IEC14443B和ISO/IEC15693标准,支持最大10cm的工作距离。
采用8位并行接口或SPI总线与微控制器进行通信。
3.6PC与高频节点通讯协议
3.6.1下传数据包格式(上位机发给下位机)
►命令头:
2字节,固定AABB
►数据长度:
2字节,低位在前,高位在后,数据长度后面所有的字节数个数(不含数据长度本身的2个字节数)
►设备号:
2个字节,未使用,0000
►命令码:
2字节,低位在前,高位在后
►数据包:
字节数不定,由命令吗决定
►数据校验:
1字节,命令码(含)后面所有的字节异或运算
即DCS=COMHxorCOMLxorPD0xorPD1xor…xorPDn
例:
设置波特率指令AABB0600000001010101,其中AABB是命令头,0600是数据长度,0000是设备码,0101是设置波特率命令,01是将比特率设为9600,01是数据校验。
3.6.2上传数据包格式(下位机发给上位机)
当上位机下传指令到下位机,下位机执行并返回应答数据。
如下位机无数据返回,说明上位机发送的指令格式不对,需修改重新发送。
下位机接收到指令并执行后返回上位机的数据格式和上位机下传的数据格式是一样的。
其中命令码是下传的命令码,PD0值则反应命令执行情况。
PD0返回的是00表示下位机准确执行了上位机发送的命令,返回的是其他值则表示执行错误,见下图:
注意:
代码中定义的错误代码是十进制数,上传到上位机上是十六进制数。
例:
下传寻卡指令:
AABB0600000001025251
寻卡成功上传:
AABB08000000010200040007
寻卡失败上传:
AABB0600000001021414
上传、下传指令中的0102表示寻卡命令,下传命令码后面的52表示寻感应区的所有的14443A卡。
寻卡成功时命令码后面的00表示寻卡成功,0400是MifareS50卡,表示在感应区寻找到MifareS50卡。
寻卡失败时命令码后面的14是寻卡失败代码,换算成十进制数则是20,对应的错误代码是FAULT20,表示寻卡失败。
3.6.3CLRC632读写卡操作流程
设置波特率→关闭天线→设置通讯协议→打开天线→寻卡→防碰撞:
读UID→选择卡→验证密钥→读卡→写卡
3.6.4CLRC632通讯指令(以读写14443A卡为例)
上位机发送指令码到下位机,下位机对命名进行判断,执行相应的命令。
判断程序在main.c中,见下图:
3.6.5常用指令解析
3.6.5.1、设置波特率
下传:
AABB0600000001010101
上传:
AABB0600000001010000
说明:
波特率设置为9600,返回正确
3.6.5.2、关闭天线
下传:
AABB060000000C01000D
上传:
AABB060000000C01000D
说明:
天线配置命令,执行关闭天线,返回正确
3.6.5.3、设置通讯协议
下传:
AABB0600000008014148
上传:
AABB0600000008010009
说明:
下传指令中41表示配置成14443A协议,详见源码中SIRC632.c中函数PcdConfigISOType(),返回正确
3.6.5.4、打开天线
下传:
AABB060000000C01010C
上传:
AABB060000000C01000D
说明:
天线配置命令,执行打开天线,返回正确
3.6.5.5、寻卡
下传:
AABB0600000001025251
上传:
AABB08000000010200040007
说明:
寻卡,52表示寻感应区的所有卡,返回正确,0400表示寻找到MifareS50卡
3.6.5.6、防碰撞:
读UID
下传:
AABB0600000002020404
上传:
AABB0A0000000202004AFA7204C6
说明:
防碰撞,返回正确,读取到UID:
4AFA7204
3.6.5.7、选卡
下传:
AABB0900000003024AFA7204C7
注意:
4AFA7204是3.6.5.6小节读到的UID,实验中请根据读到的UID填写;
上传:
AABB070000000302000809
说明:
防碰撞,4AFA7204上防碰撞读取到的UID,C7是校验位(校验位的计算请查看本文档的3.6.1小节)。
3.6.5.8、验证密钥
下传:
AABB0D00000007026000FFFFFFFFFFFF65
上传:
AABB0600000007020005
说明:
三重验证,60表示验证A密钥(如果是61即是验证B密钥),00表示绝对地址块,12个F是默认的密钥,返回正确。
3.6.5.9、读卡
下传:
AABB060000000802000A
上传:
AABB160000000802004AFA7204C6080400626364656667686906
说明:
读块地址00的数据,返回4AFA7204C60804006263646566676869为块0的内容
3.6.5.10、写卡
下传:
AABB16000000090202200000000000002000000000000000020B
上传:
AABB060000000902000B
说明:
将20000000000000200000000000000002写入块地址02,返回正确
注意:
Mifare卡每个扇区的密钥相互独立,在不同扇区读写需重新验证密钥,在同一扇区不同块读写则只需验证一次密钥。
4.实验步骤
第一步:
打开配套光盘\源代码\RFID基础实验\实验6HF高频RFID通信协议实验-V20170320下面的“RC632开发.uvproj”,如图4.1所示:
图4.1打开工程
点击左上角的
,如果为0错误的话,那么我们的代码编译正常,如图4.2所示:
图4.2编译无错误
第二步:
使用串口线连接PC和3号节点高频读卡器的DB9接头。
S1开关拨打到左边,STC串口与DB9连接
第三步:
根据配套光盘\第三方应用软件\STC_ISP\STC-ISP软件使用说明书,使用STC-ISP软件将配套光盘\源代码\RFID基础实验\实验6HF高频RFID通信协议实验-V20170320\out下的SL601F.hex文件通过STC_ISP串口下载软件下载到3号高频节点的STC单片机中。
第四步:
继续使用STC-ISP软件,选择“串口助手功能”,设置波特率为9600,无校验位,1位停止位,HEX模式,打开串口。
如图4.3所示:
图4.3串口配置
第五步:
在串口助手右侧的“多字符串发送”中,填入3.6.5.1到3.6.5.10步骤中的指令,在指令后面的方框内打√,按3.6.5.1到3.6.5.10的顺序,发送指令(点击字符串前面的数字发送指令),实现+
IC卡扇区内容的读写,如图4.4所示:
图4.4用STC的串口助手发送指令
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验6 HF高频RFID通信协议实验V0317 实验 HF 高频 RFID 通信协议 V0317