基于ARM的非接触式指纹IC卡一体机的设计 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于ARM的非接触式指纹IC卡一体机的设计

来源:中国一卡通网  作者:秦霆镐,张婷婷  发布时间:2007-04-18 11:43:04  字体:[ ]

关键字:ARM  非接触式  IC卡  

摘   要:基于ARM的指纹IC卡身份认证系统如图1所示,主要有三部分组成,第一部分为指纹识别模块,用来实现指纹的采样。考虑到开发周期,系统稳定性等方面的问题,选用sT(意法半导体)公司在行业内首创的基于指纹识别的高集成度的生物识别子系统模块 TFM2.0;第二部分为微控制器,用来实现既定的功能。选用基于ARM核的LPC2104微控制器;第三部分为非接触式Ic卡读写电路,采用Philips的MF RC500芯片,用来实现无线连接的读写控制。

1 指纹IC卡系统的总体结构 

基于ARM的指纹IC卡身份认证系统如图1所示,主要有三部分组成,第一部分为指纹识别模块,用来实现指纹的采样。考虑到开发周期,系统稳定性等方面的问题,选用sT(意法半导体)公司在行业内首创的基于指纹识别的高集成度的生物识别子系统模块 TFM2.0;第二部分为微控制器,用来实现既定的功能。选用基于ARM核的LPC2104微控制器;第三部分为非接触式Ic卡读写电路,采用Philips的MF RC500芯片,用来实现无线连接的读写控制。



图1 指纹IC卡身份认证系统框图 

1.1 非接触式IC卡接口电路 
非接触式IC卡读写接口电路如图2所示。MFRCS00是与非接触式IC卡实现无线通信的核心模块,也是控制器控制读写Ic卡的关键接口芯片。它根据寄存器的设定对发送缓冲区中的数据进行调制得到发送的信号,并通过TX1,TX2脚驱动天线以电磁波的形式发出去。天线(如图3所示)发出频率固定的电磁波13.6MHz,射频卡接收到电磁波后,由卡中自带的LC串联谐振电路产生共振,从而使电容充电有了电荷。再接一个单向导电的电子泵,将电荷送到另一个电容内存储,经过滤波整流后产生2V的电压作为电源供卡片工作使用。卡片处理接收的命令和数据,并将结果返回给读写器。



图2 非接触式Ic卡读写接口电路图



图3 RC500的天线设计 

要使用软件模拟总线外接扩展芯片的方法来与MFRC500相连。而且LPC2104本身的处理速度很快,所以即使使用软件模拟的方法也比普通的8位单片机快得多。本设计中需要将LPC2104连续的8个GPIO脚作为数据/地址复用线,另外使用3个GPIO脚作为读写时的控制线。具体电路设计时将GPIO中的P0.19 一PO.26作为数据/地址线,P0.11、P0.12、P0.13分别为读、写和地址锁存信号线。 

1.2 指纹识别模块 
本设计中采用了TFM2.0指纹识别模块,它是一款价格低廉的超小型高集成度指纹识别子系统。该模块外形紧凑,尺寸小、功耗低,其体积仅有2.70mm× 20.4mm×3.86mm,内含高速指纹识别处理器。可以独立地实现指纹采集、模板提取及模板匹配的全部功能。 

如图4所示,模块通过一条2O.pin,0.5mm的间隔的软电缆和主机连接。



TFM2.0的U—TX0和U—RX0分别和LPC2104的UART0连接进行串口通讯。TFM 的UART是一个标准的通用异步收/发的接口,与16C550 UART标准完全兼容。此接口让用户进行初步的指令发送和通讯,接口支持的速率从9600bps到115.2kbps。由于TFM2.0需要一个持续20ms的Break信号重启,所以将LPC2104的PO.14作为TFM的Wakeup信号。 

2 软件开发 

2.1 指纹IC卡身份认证系统的总流程 
指纹1c卡身份认证设计主要实现两个功能:指纹采集和身份认证两大功能。 

指纹采集的主要流程如图5所示。首先用户在天线上端放上Ic卡,MCU控制LCD提示用户同一指纹录入三次,对三次录入的指纹综合处理提取特征,生成指纹模板,并将该指纹模板上传到MCU,读写器对指纹模板进行加密处理后写入卡片;最后在卡中写入用户其他相关信息,完成指纹采集过程。



身份认证过程的主要流程如图6所示。持卡人刷卡后,读写器将卡中存储的指纹模板信息解密后上传到MCU,然后通过传感器采集持卡人指纹,指纹识别模块生成指纹特征值,并将特征值上传到MCU中并与IC卡中模板信息进行比对;根据比对结果判定持卡人的合法性,通过后才可以进行其他相关操作。 

2.2 非接触式IC卡的通信
MCU 对IC卡的操作流程如图7所示,这一系列的操作必须按固定的顺序进行。RC500每接收一个操作指令,执行一次对卡的操作,卡会做出相应的响应,按照该流程分别编写每一步操作所需要的功能函数。 



2_3 指纹模块与主机之间的通信
上电后的TFM2.0处于休眠状态,只有接受到Wakeup信号才能被激活。激活后的TFM2.0与主机之间按照下面帧的格式利用串口通信。


 
STX是一个字节(0x02),是帧开始的标志。Header的长度为3个字节,对应主机和TFM之间的12条指令等。Data帧中附加的数据,在填充前数据的最大长度为2047个字节。CRC的长度为2个字节, CRC类型为依照CCITT V.41标准的CRC16。

2。4 驱动程序的编写、编译、加载与卸载 
在Linux下,有许多驱动程序的编写环境,最普通的就是文本编辑器vi,或者可以用专门的C语言开发工具Emacs,也可以在Windows中编辑好,再在Linux 
下把文件名改为 .c就可以了。驱动程序编好后,必须编译成模块,将设备驱动程序编译成模块的形式,就可以根据需要在系统启动后动态地加载到系统内核之 
中;不需要时,可以动态地卸载出系统内核。采用动态加载模块的技术,使得在调试新模块时,用户不必每次修改模块后重新编译核心和启动系统。 

加载模块使用命令insmod/路径/模块名,该动作实际调用设备驱动程序中的init—module()函数;卸载模块使用命令rmmod模块名,它调用驱动程序中的 
cleanup — module()函数。加载成功后,系统将分配给该驱动程序一个主设备号,我们就可以建立设备文件了。使用mknod命令建立设备文件,其形式为: 
mknod/dev/设备名 一c/一b主设备号次设备号其中,一c字符设备文件,一b块设备文件;主设备号可以通过查看/proc/devices文件得到;次设备号由自己定,建立设备文件后,我们就可以通过用户程序来使用驱动程序了。删除设备文件用“rm/dev/设备名”命令。
 
为了确定模块是否能够安全卸载,系统为每个模块保留了一个使用计数(usage count)。因为在模块忙时不能卸载,所以系统需要这个信息来确定模块是否忙。在新的内核版本,系统能够自动跟踪使用计数,但有时仍需手动调整计数,手动操作使用计数需要使用下面三个宏:MOD—INC—USE—COUNT:当前模块计数 
加1;MOD—DEC—USE—COUNT:当前模块计数减1; MOD— IN— USE:计数非0时返回真。 

3 驱动程序的测试 
将设备驱动程序编译成模块,再插入到内核后,需要进行测试。驱动程序的测试分为三个部分:驱动程序加载和卸载的测试;读取设备数据的测试;写数据到 
设备的测试。将驱动程序编译成“.O”的模块后,用insmod命令插入到内核。卸载模块使用rmmod命令, 



图5 读取设备数据流程图 图6 输出数据流程图

再通过lsmod命令显示的模块列表查看驱动程序模块是否加载或卸载。读操作的测试,就是在PCI卡的输入端随机地输入些数据,然后观察读取的数据与输入数据 
是否相符,其流程图如图5所示。写操作的测试,就是在测试程序里向设备输出数据,然后观察设备的输出数据与程序里的数据是否相符。其流程图如图6所示。
 
4 结论 

论文详细给出了基于Linux系统的PCI卡驱动程序的设计过程,包括设备的注册与注销、与内核模块的接口、与用户程序的接口函数等,并给出了各个模块的 
测试流程图。对从事嵌入式系统研究和开发的工程技术人员有一定的参考和指导作用。
更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖