基于PN532的RFID读卡器设计

2012-10-08 12:12张海峰
关键词:智能卡读卡器端点

张海峰,张 沛

(杭州电子科技大学电子信息学院,浙江杭州310018)

0 引言

射频识别是一种无线通信技术,通过电磁耦合方式对应答器中的数据进行读写操作。根据工作频率的不同可分为低频(125kHz)、高频(13.56MHz)、超高频等。一个典型的射频识别系统由读卡器和应答器组成。应答器是射频识别系统真正的数据载体,在读卡器的响应范围内应答器才工作[1]。近年来射频识别技术发展迅速,结合数据保护技术而生产出的各种智能卡已经广泛的应用在电子支付、物流管理和门禁控制系统等领域[2]。巨大的智能卡市场加速了与之配套的读卡器产业的发展。通常一种智能卡对应一种读卡器,如Mifare系列智能卡需要Mifare读卡器,读卡器的专用性比较强。本文所设计的高频RFID读卡器不仅支持传统的Mifare智能卡读写,同时能够识别二代身份证、Felica和SRI512卡片序列号。除此之外还具有模拟和点对点通信功能,结合相应软件便可以满足NFC应用。

1 读卡器的系统组成

读卡器主要由ST公司的STM32F103RET6和NFC控制器PN532组成。显示部分采用Nokia的LCD6100液晶显示屏。STM32F103是一款Cortex-M3内核的32位处理器,工作时钟为72MHz,有一个USB2.0设备控制器[3]。PN532是NXP公司的一款NFC芯片,内部使用80C51内核来管理通信,有6种不同的操作模式,提供I2C、SPI和串行口3种方式与主机通信,本设计中采用SPI方式。读卡器的组成框图如图1所示,连接PC后被识别为一个HID类设备。通过上位机软件可以对智能卡进行完整的读写操作。主控芯片STM32与PN532通过4线SPI接口相连,其中SPI时钟为5MHz。时钟信号高电平有效,数据在第一个上升沿被PN532采样。天线线圈为13.56MHz的PCB天线。读卡器中的天线设计也很重要,直接影响读写距离。显示部分用来进行菜单选择,可以显示读取到的卡片唯一序列号。LCD6100显示屏与STM32的通信也采用了SPI方式。

图1 读卡器系统框图

2 读卡器的硬件设计

2.1 读卡器电源设计

读卡器采用5V直流电源供电,由于STM32和PN532需要3.3V工作电压,因此需要一个3.3V电压转换芯片。本设计中采用常用的LM1117芯片,提供的最大电流也满足本读卡片,如图2所示。控制引脚CTRL信号来自STM32,VOUT和FB的引脚电压提供给液晶器需求。LCD6100的背光也需要一定的电压,采用LINEAR公司的LT3465A电流型驱动芯显示器。此芯片的工作电压也来自LM1117的输出。

图2 LCD6100背光驱动电路

2.2 STM32外围电路设计

考虑到STM32的IO口需求:2个LED指示灯、3个按键、两路SPI接口以及一些必要的信号接口,64个引脚的STM32F103RET6已经够用。这部分的硬件电路主要由复位电路、晶振电路、按键接口、JTAG电路、USB电路等部分组成。PA8连接到LT3465A的CTRL引脚,用来控制LCD背光。SPI1外设接口连接到PN532,PA2和PA3分别连接PN532复位与中断请求引脚。另外还有3个按键与2个LED接口,使用STM32的GPIO接口便可。按键1和2用来进行菜单上下选择,按键3是确定操作。LCD6100的数据输入每次只接收9位:1位命令/数据+8位数据,而STM32的SPI接口只提供8位或16位数据格式,直接用SPI2外设并不能正确操作LCD,因此要使用I/O口模拟方式来发送数据。

2.3 PN532应用电路与天线设计

PN532是NXP公司的一款NFC控制芯片,工 作 频 率 为 13.56MHz,支 持ISO14443A&B[4]和 ISO18092[5]协议,同时支持A类卡的模拟与点对点通信功能。内部的收发器模块具有输出缓冲,最远读写距离可达到10cm[6]。应用电路如图3所示。采用SPI接口时10引脚接地,I1引脚接高电平。IRQ引脚可向主机发出中断请求。此芯片采用 27.12MHz的晶振来工作。3.3V电源引脚的去耦电容采用4.7μF和100nF的组合,VDD电压由PN532内部的电压管理器提供,去耦电容用100nF便可。

图3 PN532应用电路

13.56 M读卡器采用的是电感耦合,天线产生的电磁场要能给智能卡供电和传输数据。天线电路设计包括发送部分、接收部分和天线线圈,线圈采用中间点接地方式连接到图3中的3个端点。影响读写距离的主要因素包括线圈的大小、匹配电路和接收电路的敏感性。EMC滤波电路采用560nH的电感,考虑到接收带宽,其谐振频率要接近上边频,由于副载波频率为847kHz,谐振频率要在13.56MHz+847kHz=14.4MHz附近,因此可选用220pF的电容。C1和C2组成匹配电路,其值在10-300pF之间。具体的计算方法可参考NXP的应用笔记[7]。简易的方法是线圈做好后,接上示波器,通过调节这两个电容的大小观察波形峰峰值,峰峰值最大时说明电路匹配良好。接收电路中的电阻R2对读写距离有影响,R3为阻尼电阻,可减小天线的Q值,这里选择5Ω、1%精度的电阻即可。读卡器的线圈采用4圈方形PCB天线,走线宽度为0.305mm,间距为0.355mm,按最外圈计算可得总面积为58mm×47mm。

3 读卡器软件设计

该读卡器采用USB方式与上位机通信,属于自定义HID设备,使用了两个端点。端点0为控制端点,端点1为中断断点。上位机软件主程序中创建了两个线程,一个用于接收端点1的输入数据,另一个用来检测用户输入的命令。当检测到正确的命令格式后,发送命令给读卡器来完成用户请求的操作。

STM32微处理器中的软件工作流程如图4所示。系统上电后执行初始化操作。初始化内容包括按键、LED、USB外设控制器、LCD显示和系统时钟配置等。接下来在LCD上显示可执行的操作菜单供用户选择。然后唤醒PN532芯片使其进入正常工作模式,接着程序进入主循环。按键1和2用来移动光标,按键3按下后调用对应处理子程序。整个处理过程中如果发生USB中断请求,则先将接收到的命令解码并调用相应函数,然后将数据按照一定的格式打包上传。

图4 读卡器主程序流程图

4 测试结果

电路板完成后首先要借助示波器调节匹配电容,调制波形如图5所示。

图5 Type A和Type B调制波形

图5(a)为106kbps Type A波形,图5(b)为106kbps Type B波形。最终的C1为18pF,C2为56pF。参数均满足ISO14443标准。使用本读卡器对5种不同类型的智能卡分别进行了30次UID读取测试后,得到的平均操作距离如表1所示。前两种智能卡为NXP公司的Mifare系列,兼容ISO14443A标准,二代身份证和SRI512符合B类标准,数据速率均为106kpbs。SONY公司的Felica智能卡为ISO18092标准,载波采用10%的ASK调制,数据速率为212kbps。

表1 距离测试结果

5 结束语

本文对高频RFID读卡器的硬件设计进行了较为详细的论述,同时也介绍了读卡器的软件设计流程。从实际测试结果中可看出其具有良好的读写距离,也可发现对A类卡的读写距离要略大于B类卡,这是由于B类卡所需要的能量较大。PN532芯片的功能较多,本文只对其读卡功能作了介绍,其它如模拟、点对点通信方面的应用开发还有待进一步研究。

[1]Gerhard de Koning Gans.Analysis of the Mifare Classic used in the ov-chipkaart project[D].Dutch:Radboun University Nijmegen,2008.

[2]Klaus Finkenzeller.射频识别技术(第3版)[M].北京:电子工业出版社,2006:1-7.

[3]徐爱军.IAR EWARM V5嵌入式系统应用编程与开发[M].北京:北京航空航天大学出版社,2009:472-477.

[4]ISO/IEC 14443.Identification cards— Contactless integrated circuit(s)cards-Proximity cards[S].2009.

[5]ISO/IEC 18092.Near Field Communication— Interface and Protocol(NFCIP-1)[S].2008.

[6]NXP Semiconductors.PN532 datasheet.Rev.3.4 [EB/OL].http://www.nxp.com/documents/short_data_sheet/PN532_C1_SDS.pdf,2011 -12 -01.

[7]NXP Semiconductors.Antenna design guide for MFRC52x,PN51x and PN53x.Rev.1.2 [EB/OL].http://www.nxp.com/documents/application_note/AN1445_An1444.zip,2010 -10 -11.

猜你喜欢
智能卡读卡器端点
非特征端点条件下PM函数的迭代根
与淘汰命运抗争 看懂笔记本的读卡器
东方磁卡李晓东:进击的智能卡研发巨子
不等式求解过程中端点的确定
基于STC89 单片机的非接触智能卡读写机设计
基于EMV非接通信规范的非接触读卡器设计
为二维码识别的献礼之作——评测平治二维码门禁读卡器
基丁能虽匹配延拓法LMD端点效应处理
临沂机顶盒智能卡升级方案介绍
MATLAB实现组态王中TCP/IP读卡器监控方法