RFID实验箱实验指导书.docx
《RFID实验箱实验指导书.docx》由会员分享,可在线阅读,更多相关《RFID实验箱实验指导书.docx(72页珍藏版)》请在冰豆网上搜索。
RFID实验箱实验指导书
广州飞瑞敖电子科技有限公司
R
F
I
D
实
验
箱
实验指导书
广州飞瑞敖电子科技有限公司
实验一开发环境的搭建及硬件测试实验
一、实验目的
1.1Keil开发环境的安装
1.2掌握Keil开发环境的使用
1.3掌握STM32单片机固件的烧写方式
二、实验设备
硬件:
RFID实验箱套件,电脑等。
软件:
Keil
三、实验原理
本实验箱使用基于Cortex-M3体系的STM32F103VET6单片机作为主控CPU,运行相应的程序,它通过GPIO可以控制实验箱上的其它组件(数码管,矩阵键盘,LED流水灯、LCD液晶屏等)。
STM32F103VET6单片机有两路UART通信接口,其中UART1经由MAX232电平转换芯片与实验箱上的UART-STM32DB9串口相连负责和上位机进行通信。
而UART2与实验箱上的SWICH链路选择芯片组相连,通过PD12和PD13两个管脚进行链路选择,并最终和相对应的RFID模块进行通信。
更详细的原理图请参考配套光盘\附件\实验箱原理图目录下的文档。
本实验熟悉和学习Keil开发环境,下载相应的程序到STM32F103VET6上,并对实验箱上的硬件进行检测。
在之后的实验中,将会详细的讲解STM32F103VET6单片机是如何控制各个组件并且如何和不同的RFID模块进行通信的。
四、实验步骤
4.1安装\光盘\应用程序\JLINK驱动安装下的JLink驱动。
安装完成后,使用实验箱内的Jlink仿真器将PC机的USB接口和RFID实验箱上液晶屏下方的20pinJTAG接口相连,如果PC能够检测到JLink则驱动安装成功否则请从新安装驱动。
4.2安装\光盘\应用程序\STM32芯片开发环境下的MDK414.exe软件(既KeilVersion4)。
4.3打开keiluVision4开发环境(注:
请在网上搜索破解方法),界面如图1.1。
图1.1开发环境界面
4.4打开测试工程,路径为\光盘\源代码\测试程序\APP下的工程文件。
如图1.2及1.3。
图1.2打开工程
图1.3打开工程
4.5编译源文件,生成hex文件,如图1.4。
图1.4编译工程
4.6烧写可执行文件,如图1.5。
图1.5烧写可执行文件。
烧写完成后可观察实验箱。
4.7本次程序使用了实验箱硬件测试程序,请根据\光盘\附件\测试说明文档\测试说明文档来测试RFID实验箱的各个硬件是否正常工作。
实验二LF低频RFID实验
一、实验目的
1.1了解ID卡内部存储结构
1.2掌握符合ISO18000-2标准的无源ID卡识别系统的工作原理
1.3掌握符合ISO18000-2标准的无源ID卡识别系统的工作流程
1.4掌握本平台ID模块的操作过程
二、实验设备
硬件:
RFID实验箱套件,电脑等。
软件:
Keil,串口调试助手。
三、实验原理
3.1低频RFID系统与ID卡
低频RFID系统读卡器的工作频率范围一般从120KHz到134KHz。
该频段的波长大约为2500m,除了金属材料影响外,一般低频能够穿过任意材料的物品而不降低它的读取距离。
低频RFID系统使用ID卡,全称为身份识别卡(IdentificationCard),作为其电子标签。
ID卡是一种不可写入的感应卡,其内部唯一存储的数据是一个固定的ID卡编号,其记录内容(卡号)是由芯片生产厂商封卡出厂前一次性写入,封卡后不能更改,开发商只可读出卡号加以利用。
ID卡与我们通常使用磁卡一样,仅仅使用了“卡的号码”而已,卡内除了卡号外,无任何保密功能,其“卡号”是公开、裸露的。
目前市场上主要有台湾SYRIS的EM、美国HID、TI、MOTOROLA等各类ID卡。
本实验平台使用EM系列ID卡,它符合ISO18000-2标准,工作频率为125KHZ,后续的讲解也围绕这种标签展开。
ID标签中保存的唯一数据——标签标识符(UID)以64位唯一识别符来识别。
UID由标签制造商永久设置,符合ISO/IECDTR15693。
UID使每一个标签都唯一、独立的编号。
UID包含(图2.1):
固定的8位分配级“EO”
根据ISO/IEC7816-6/AM1定义的8位IC制造商代码
由IC制造商指定的唯一48位制造商序列号MSN
图2.1UID结构图
3.2ISO18000-2标准
实验平台的低频ID模块符合ISO18000-2标准。
询问器载波频率为125KHZ。
ISO18000-2标准中规定了基本的空中接口的基本标准:
询问器到标签之间的通信采用脉冲间隔编码;
标签与询问器之间通过电感性耦合进行通信,当询问器以标准指令的形式访问标签时载波需加载一个4K位/秒曼彻斯特编码数据信号;
调制采用ASK调制,调制指数100%;
在实际通信系统中,很多系统都不能直接传送基带信号,必须用基带信号对载波波形的某些参量进行控制,是载波的这些参量随基带信号的变化而变化。
由于正弦信号形式简单,
便于产生和接收,大多数数字通信系统中都采用正弦信号作为载波,即正弦波调制。
数字调制技术是用载波信号的某些离散状态来表示所传送的信息,在接收端也只要对载波信号的离散调制参量进行检测。
数字调制方式,一般有振幅键控(ASK)、移频键控(FSK)和移相键控(PSK)三种基本调制方式,如图2.2所示:
图2.2数字调试方式
在二进制振幅键控(ASK)方式下,当基带信号的值为1时,载波幅度为u1;当基带信号的值为0时,载波幅度为u2。
定义调制系数为M=(u1-u2)/(u1+u2),当u2为0时,调制系数m=100%。
图2.3振幅键控调制
射频工作区的载波频率125KHz;
工作频率精度0.1kHz之内;
标签以64位唯一识别符来唯一识别;
更多内容参考ISO18000-2。
3.3低频RFID系统读卡器
本实验平台使用EM系列ID卡,符合ISO18000-2标准,工作频率为125KHZ,经读卡器译码后输出其十位十进制卡号。
图2.4是ID卡及其读卡器的工作原理框图,其中上半部分是ID卡的内部组成结构;下半部分是ID读卡器的组成结构。
ID卡的天线与其读卡器的天线之间构成空间耦合“变压器”,读卡器天线作为“变压器”初级线圈向空间发射125KHz的交变电磁场,进入该电磁场的ID卡通过其天线(“变压器”的次级线圈)获取能量,为其内部各功能部件提供工作电压。
由于ID卡为只读型RFID卡,读卡器无须向ID卡发送任何数据或指令,一旦ID卡进入读卡器有效的工作区域内,其内部功能部件就开始工作,时序发生器部件控制存储器阵列和数据编码单元将其内部的64位信息调制后按顺序发送给读卡器,其中调制方式为ASK(移幅键控)调制。
图2.4ID卡及读卡器的组成结构
读卡器中的4MHz振荡源经过32分频后得到125kHz的基准频率信号,该频率一方面为读卡器发射125kHz的交变电磁场提供工作时钟,另一方面为读卡器中微控制器解码提供基准时钟.当读卡器的工作区域内没有ID卡时,读卡器的检波电路没有输出,一旦有ID卡进入交变电磁场并将其曼彻斯特编码的数据信息调制后发送出来,读卡器的滤波电路、解调电路、检波电路和整形单元将调制在125kHz频率信号中的采用曼彻斯特编码的数据信息解调还原,微控制器接收到曼彻斯特编码数据信息后利用软件解码,从而读取ID卡的64位数据信息。
ID卡内部的曼彻斯特编码和原始数据信息关系见图2.5。
曼彻斯特编码采用下降沿表示‘1’采用上升沿表示‘0’。
读卡器的微控制器软件的主要功能就是对从ID卡接收到的曼彻斯特编码进行解码,得到ID卡内部的64位数据信息,然后进行CRC校验,如果校验成功,那么就完成了一次读卡过程。
图2.5曼彻斯特编码和原始数据信息关系
低频RFID系统工作流程如下:
1)读卡器将载波信号经天线向外发送;
2)标签中的电感线圈和电容组成的谐振回路接收读卡器发射的载波信号,标签中芯片的射频接口模块由此信号产生出电源电压、复位信号及系统时钟,使芯片“激活”;
3)标签中的芯片将标签内存储的数据经曼彻斯特编码后,控制调制器上的开关电流调制到载波上,通过标签上天线回送给阅读器;
4)阅读器对接收到的标签回送信号进行进行ASK解调、解码后就得到了标签的UID号,然后应用系统利用该UID号完成相关的操作。
简述上面的过程,我们可以把低频RFID读卡器的功能减单描述为:
读取相关ID卡卡号,并把该卡号发送到应用系统上层,由上层系统完成相关数据信息的处理。
由于ID卡卡内无内容,故其卡片持有者的权限、系统功能操作要完全依赖于上层计算机网络平台数据库的支持。
四、实验过程
实验相关的工程代码文件地址:
…\配套光盘\源代码\上位机开发用\RFID-UART\RVMDK
4.1打开\光盘\源代码\上位机开发用\RFID-UART\RVMDK工程目录,编译并烧写到实验箱,将实验箱上的UART-STM串口与PC机相连,打开电源,打开串口助手(\光盘\应用程序\串口助手),按图2.6所示信息配置串口参数。
图2.6串口参数配置
4.2将串口助手软件的发送区选择为十六进制发送,发送字节0201,此时实验箱上低频模块区域的红色指示灯点亮,将ID卡置于低频模块区的线圈上方进行读卡操作,串口助手软件将会返回正确信息如图2.7所示。
图2.7串口返回ID卡号
4.3固件程序功能及源码解析。
在该工程中,STM单片机内的固件程序有两个作用:
A)RFID模块选择功能。
B)上位机和射频模块之间通信数据的包装和转发。
如电路原理图2.8、2.9所示。
STM单片机的PA2和PA3管脚(既UART2)和一个链路选择开关芯片组(实验箱PCB板上标示为SWITCH)相连,然后通过PD12和PD13两路管脚进行链路选择。
链路选择示意表如表1所示:
PD12
PD13
通路描述
低电平
低电平
UART2与RXD3TXD3形成通路,单片机与低频模块实现通信。
低电平
高电平
UART2与RXD4TXD4形成通路,单片机与高频模块实现通信。
高电平
低电平
UART2与RXD5TXD5形成通路,单片机与超高频模块实现通信。
高电平
高电平
UART2与RXD6TXD6形成通路,单片机与2.4GHz模块实现通信。
表1
图2.8
图2.9
代码段代码1描述了如何实现的链路选择。
Hal.c
#defineSWTICH1_ONGPIO_SetBits(GPIOD,GPIO_Pin_12);#拉高PD12管脚
#defineSWTICH1_OFFGPIO_ResetBits(GPIOD,GPIO_Pin_12);#拉低PD12管脚
#defineSWTICH2_ONGPIO_SetBits(GPIOD,GPIO_Pin_13);#拉高PD13管脚
#defineSWTICH2_OFFGPIO_ResetBits(GPIOD,GPIO_Pin_13);#拉低PD13管脚
Main.c
voidchose_id(void)
{
//RxBuffer1[1]内存储这从上位机(PC)机接收到的数据,STM32通过UART1与PC机通信,UART1从PC机收到的数据暂存到RxBuffer中,通过判断RxBuffer中的第二个字节来判断PC机要做的事情。
switch(RxBuffer1[1])
{
case0x01:
//当RxBuffer[1]=0x01时,上位机选择与低频RFID模块通信,此时将PD12和PD13全部拉低。
USART_Config(USART2,9600);
SWTICH_OFF;
SWTICH1_OFF;
SWTICH2_OFF;
BEEP_ON;
Delay(0xFFFFF);
BEEP_OFF;
break;
case0x02:
//当RxBuffer[1]=0x02时,上位机选择与高频RFID模块通信,此时将PD12拉低、PD13拉高。
USART_Config(USART2,9600);
SWTICH_OFF;
SWTICH1_OFF;
SWTICH2_ON;
BEEP_ON;
Delay(0xFFFFF);
BEEP_OFF;
break;
case0x03:
//当RxBuffer[1]=0x03时,上位机选择与特高频RFID模块通信,此时将PD12拉高、PD13拉低。
USART_Config(USART2,57600);
SWTICH_OFF;
SWTICH1_ON;
SWTICH2_OFF;
BEEP_ON;
Delay(0xFFFFF);
BEEP_OFF;
break;
case0x04:
//当RxBuffer[1]=0x04时,上位机选择与2.4GRFID模块通信,此时将PD12和PD13全部拉高。
USART_Config(USART2,9600);
SWTICH_OFF;
SWTICH1_ON;
SWTICH2_ON;
BEEP_ON;
Delay(0xFFFFF);
BEEP_OFF;
break;
case0x05:
//当RxBuffer[1]=0x05时,此时上位机有话要跟它已经选择好的模块说(既上位机和RFID模块之间的通信协议),此时STM32单片机只是起到了一个数据转发的功能。
USART2_Puts(&RxBuffer1[2]);
break;
default:
break;
}
}
通过上面源码中的注释部分,已经可以了解到,RxBuffer[1]这个字节相当于一个功能码,它描述了上位机想要做的事情,那RxBuffer[0]这个字节的作用是什么呢?
这个字节值代表的是上位机发送给STM单片机的一条指令的总长度。
至此,就不再难以理解4.2节中上位机发给实验箱单片机0x020x01这条指令的意义了,0x02指的是指令的长度是两个字节,0x01告诉单片机它想和低频RFID模块通信。
建立了STM的UART2和低频读卡器模块的通路同时,选择链路芯片组为低频模块供电,使其处于主动监听的工作状态,此时只需从UART2端口接收数据并且发送至UART1(与STM_UART相连)最终传送给上位机,这一过程是在中断函数中完成的,代码如下:
Stm32f10x_it.c
voidUSART2_IRQHandler(void)
{
uint8_ttmp;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!
=RESET)//判断读寄存器是否非空
{
tmp=USART_ReceiveData(USART2);
USART_SendData(USART1,tmp);
}
if(USART_GetITStatus(USART2,USART_IT_TXE)!
=RESET)//这段是为了避免STM32USART第一个字节发不出去的BUG
{
USART_ITConfig(USART2,USART_IT_TXE,DISABLE);//禁止发缓冲器空中断,
}
}
4.4仔细阅读和理解该工程中的相关代码,理解并联系链路选择芯片组的使用和串口通信管脚的使用。
实验三、HF高频RFID通信协议
一、实验目的
1.1掌握高频读卡器的通讯协议
1.2掌握本平台高频模块的操作过程
1.3掌握高频模块工作原理
二、实验设备
硬件:
RFID实验箱套件,电脑等。
软件:
Keil,串口调试助手。
三、实验原理
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卡特点及工作特性如图1.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.6MFI卡片存储结构
第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标准中规定的基本空中接口基本标准
PCD到PICC(数据传输)调制为:
ASK,调制指数100%
PCD到PICC(数据传输)位编码为:
改进的Miller编码
PICC到PCD(数据传输)调制为:
频率为847kHz的副载波负载调制
PICC到PCD位编码为:
曼彻斯特编码
数据传输速率为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状态转化图