APP下载

基于STM32与FPC1011F的嵌入式指纹采集存储仪设计*

2015-12-22多,叶桦,2*

电子器件 2015年2期
关键词:指纹图嵌入式指纹

李 多,叶 桦,2*

(1.东南大学自动化学院,南京210096;2.复杂工程系统测量与控制教育部重点实验室,南京210096)

LI Duo1,YE Hua1,2*

(1.School of Automation,Southeast University,Nanjing 210096,China;2.Key Laboratory of Measurement and Control of Complex Systems of Engineering,Ministry of Education,Southeast University,Nanjing 210096,China)

随着微电子技术和传感器技术的发展,生物识别系统越来越广泛的应用于如门禁考勤、身份认证以及安全防恐等领域。生物识别技术是利用人体固有的生物特性来进行个人身份的鉴定的一种技术。人类的生物特征通常具有唯一性、可以测量以及终身不变等特点,因此生物识别认证技术较传统认证技术在安全性和便捷性方面具有较大的优势[1]。

相比于虹膜、人脸以及声音、笔迹等,指纹是目前生物识别领域最多也是研究时间最长的生物特征,占据生物识别产品过半的市场份额并保持较高的增长率[2]。无论是指纹识别算法的研究还是指纹库原始数据的获取,指纹采集是一项最为关键的技术,因此本文设计了一种基于STM32的嵌入式指纹采集存储仪,弥补了传统的指纹采集仪采集速度慢、存储空间少、成本高、操作复杂、体积庞大、设备互换性差等诸多不足[3-5]。

本采集仪的主要创新点有二:一是选择SD卡作为存储器,存储容量大、存取速度快,并且通过文件系统管理SD卡,使得SD卡上存储的指纹图像可以直接在计算机上浏览和处理;二是通过触摸屏提供了指纹采集和管理的操作界面,界面友好、操作简单,不需要连接计算机即可完成相关操作,较好的满足了基于指纹特征的生物识别领域对于原始指纹图像采集的实际应用需求。

1 指纹采集存储仪硬件设计

1.1 FPC1011F指纹传感器及其接口

FPC1011F是瑞典FINGERPRINTS公司推出的基于半导体硅电容效应的指纹传感器,硅电容技术的优点是可以在较小的表面上获得比光学技术更好的图像质量。FPC1011F在10.64 mm×14 mm的有效感应区域中集成了152×200像素的硅传感器阵列,其分辨率高达363 dpi[6]。每个硅传感器等效于电容的一个极板,手指则是另一极板,根据手指纹线的脊和谷相对于平滑的硅传感器之间的电容差不同,经过电荷放大电路和A/D转换电路数字化后得到每像素8 bit的灰度图像[7]。FPC1011F在指纹的采集质量、便捷性、耐用性以及安全性等方面,均得到了业内人士的好评,目前国内比较高档、保密级别较高的场所都指定使用FPC1011F。

在接口方面,FPC1011F采用4线制SPI接口,传输速率高达4 Mpixel/s,传输一幅标准的指纹图像数据,仅需要7.6 ms,传感器与主控芯片的连接图如图1所示。

图1 FPC1011F连接图

1.2 主控芯片及存储器、显示器接口

MCU选用ST公司的STM32F103RCT6,该芯片是专为高性能、低成本、低功耗的嵌入式应用所设计的,其主要参数如表1所示[8]。该芯片处理速度快、存储空间大,并集成了丰富的外设资源,极大的简化了系统硬件设计,降低了成本,提高了可靠性。另外ST官方还为STM32F10x系列处理器编写了针对外设资源的固件库,相比于传统的寄存器操作,通过固件库API函数操作外设极大的提高了开发效率,缩短了开发周期。

表1 STM32F103RCT6主要参数

根据FPC1011F指纹传感器的参数指标,采集得到的指纹图像分辨率为152×200,每个像素占用1 byte空间即一幅图像大小为30 400 byte,STM32F103RCT6集成了64 kbyte的嵌入式SRAM,从理论上说具备两幅指纹图像的缓冲空间,因此不需要外扩RAM。

外扩SD卡作为指纹图像的存储器,SD卡是Security Digital Memory Card(安全数字存储卡)的简称,它被广泛地于便携式装置上使用,例如数码相机、掌上电脑和多媒体播放器等。在存储媒介方面SD卡采用了NAND型闪存存储器,平均数据传输率能达到2 Mbyte/s。SD卡常见的传输模式有两种:传统SPI模式和4 bit SDIO模式,考虑到指纹图像文件较小,因此这里采用兼容性更强的SPI模式。触摸屏采用QVGA分辨率的3.5 inch TFT模组,模组自带LCD控制器以及4线电阻式触摸芯片。SD卡及TFT模组接口电路原理图如图2(a)、图2(b)所示。

2 指纹采集存储仪软件设计

2.1 FPC1011F 驱动程序

FPC1011F驱动程序实现了传感器工作参数的配置、启动指纹采集以及读取指纹图像数据3个功能。时序上FPC1011F兼容SPI通讯协议的模式1和模式3,并且传感器是SPI通讯中的从机,因此首先要按照上述要求配置STM32的SPI外设,之后便可通过发送命令+参数的形式操作传感器了。

图2

传感器工作参数主要包括:电容阵列驱动电压、A/D转换器动态范围以及传感器工作模式、图像的有效区域等,这些参数可以根据实际工作环境配置,其中电容阵列的驱动电压和A/D转换器动态范围要相匹配,它们共同决定了采集图像的质量,推荐将驱动电压和动态范围均设置为电源电压的一半。

在配置好工作参数后,发送rd_sensor命令即可启动指纹的采集,之后通过命令rd_spistat查询SPI_STAT寄存器,它的最低位表示了指纹图像数据是否准备好,如最低位为1,则可发送rd_spidata逐个像素的读取图像。完整的指纹采集流程如图3所示,尖括号中的数据表示MCU发送的命令以及参数。

2.2 FatFS文件系统移植

在SD卡存储器的设计中,利用文件系统对存储媒介进行管理已成为嵌入式系统的一个发展方向,因此需要一种可靠的文件系统[9],通过文件系统不仅便于在嵌入式系统和计算机之间直接交换文件,更提高了文件存储和管理的效率。

图3 指纹采集流程图

目前嵌入式系统上常用的商用文件系统有Micrium公司的 μC/FS,支持 CF卡、硬盘、SD/MMC卡、NAND Flash等,以及国内广州周立功单片机发展有限公司开发的ZLG/FS,它兼容个人电脑使用的FAT16、FAT32等文件系统,可移植到前后台系统和多任务系统[10]。

本文选择了时下应用较为广泛的一种开源嵌入式文件系统FatFS,它特别针对嵌入式处理器的特点进行了优化。通过清晰的分层次设计,如图4所示,使得FatFS具有良好的硬件平台独立性,经过简单的修改就可以移植到多种嵌入式处理器上面。最高层是应用层,向用户提供了如打开文件、读写文件等接口函数,中间层实现了FAT文件系统协议的处理,最底层是移植FatFS需要完成的工作,用户需要根据所使用的微处理器以及存储介质编写相关函数。

图4 FatFS结构层次图

本文选择了FatFS R0.07e版本在STM32上进行移植,移植过程可分为3步,第1步修改FatFS源码中的integer.h文件,使其中定义的数据类型与使用的微处理器平台相匹配;第2步修改FatFS源码中的ffconf.h文件,该文件通过宏定义的方式对文件系统的属性和功能进行裁剪,以减少文件系统不必要的开销。针对FatFS在STM32F103RCT6上的移植来说,其RAM和FLASH比较充裕,可以禁用_FS_TINY选项并使能_FS_MINIMIZE选项,即开启全部文件操作接口函数,并为每个文件对象单独开辟扇区缓冲,以提高读写速率,其余选项可以采用默认或者根据需要进行配置。

第3步也是最重要的一步,就是编写磁盘读写的底层接口函数,相关函数的定义位于FatFS源码diskio.c文件中。文献[11]是SD卡协会编写的SD卡物理层规范,其中定义了SD卡的操作时序,参照该文献即可完成SD卡底层接口函数的编写。其中最关键的是3个函数:disk_initialize,它实现SD卡上电复位以及卡类型的判断并初始化SD卡,初始化流程图如图5所示。disk_write,它完成向SD卡的扇区写数据操作,disk_read,它完成从SD卡的扇区读数据操作,软件流程图分别如图6、图7所示。至此FatFS在STM32上便移植完成。

图5 SD卡初始化流程图

图6 SD卡扇区写流程图

图7 SD卡扇区读流程图

2.3 BMP文件存储格式

BMP(Bitmap)是Windows中的标准图像文件格式,与硬件设备无关,使用非常广泛,采用该格式后,用户在电脑上使用画板软件即可直接浏览指纹图片。另一方面考虑到后续指纹处理和识别的需要,未选择JPEG等有损压缩的图像编码方式,以确保指纹原始数据的完整性,并且许多成熟的图像处理算法也大都针对BMP格式,因此本文选择BMP格式存储采集到的指纹图像。

有调色板的位图文件结构如图8所示,位图文件由文件头、信息头、调色板(可选)和位图数据四部分组成[12]。考虑到FPC1011F传感器采集到的指纹是256级灰度图像,因此本文采用带有调色板的8 bit位图存储。其中位图文件头和信息头长度固定为54 byte;8 bit位图共256种颜色,故调色板占用空间1 024 byte;位图数据为30 400 byte。因此相比于原始数据,由于采用BMP格式所额外的空间开销为 1 078 byte,即指纹图片的存储效率为30 400÷(30 400+1 078)≈96.6%,尽管在存储效率上比不上JPEG等格式,但相比于其他的位图格式(如16 bit、24 bit真彩色等),既保持了指纹原始数据的完整性,又兼顾了存储效率。

图8 位图文件结构图

BMP文件的格式定义可参考Windows标准,这里不再详述。本文以结构体的方式定义文件头、信息头和调色板,以文件头为例参考代码如下所示,需要指出的是由于STM32是32 bit处理器,因此定义结构体时需要使用pack选项,使成员变量的存储按照16 bit方式对齐,否则默认32 bit方式对齐会导致图片格式错误。

#pragma pack(push,2)typedef__packed struct tagBITMAPFILEHEADER{WORD file_type;//0x4d42 DWORD file_size;DWORD reserved;DWORD offset;//fileheader+infoheader+palette}BITMAPFILEHEADER;#pragma pack(pop)

3 测试

对指纹采集存储仪样机的关键项目指标行测试,采集仪操作界面如图9(a)、图9(b)所示,通过触摸屏可以直接实现采集指纹、指纹添加删除、指纹浏览等操作。采集仪界面友好,使用简便。

图9

测试结果如表2所示,指纹采集速度快、存储容量大,采用BMP格式存储效率高。

表2 指纹采集存储仪测试结果

实际采集到的原始指纹图片如图10所示,图像纹理清楚,背景噪声小,对比度大,很好的满足了指纹的处理和识别对于指纹采集的需求。

图10 实际采集到的指纹图片

4 结论

本文以STM32F103RCT6为核心,使用半导体电容式指纹传感器FPC1011F,配合SD卡和FatFS嵌入式文件系统以及触摸屏,设计了一款指纹采集存储仪。实验结果表明:该设备功能全面、性能优异、使用简单,为指纹图像后续的处理和识别奠定了良好的基础,也为相关人员提供了指纹传感器FPC1011F实用案例,具有较强的实用价值和参考意义。目前该设备已应用于作者所在实验室智能指纹锁项目的指纹识别算法的研究。

[1] 李文,赵庆兰.生物识别技术浅析[J].价值工程,2012,31(30):213-214.

[2] 沈文文.人脸识别产品销量增长最快——2013年上半年生物识别产品市场调查[J].中国公共安全(综合版),2013(20):104-107.

[3] 印辉云,刘云飞,马玲玲,等.基于FPGA的嵌入式指纹采集系统设计[J].湖北大学学报(自然科学版),2013,35(1):85-88.

[4] 陈石平,付佃华,李全.基于NiosⅡ与FPS200的半导体指纹采集系统设计[J].单片机与嵌入式系统应用,2007(7):35-37.

[5] 王燕,戴剑峰,王祥华.STM32的条状指纹采集与拼接系统[J].单片机与嵌入式系统应用,2012,12(11):53 -56.

[6] FINGERPRINTS.FPC1011F Area Sensor Package Product Specification[EB/OL].http://www.fingerprints.com/wp - content/uploads/2013/08/720 - FPC1011F3_A_Product - sheet.pdf,2009-2.

[7] 陈文燕,刘良勇.指纹传感器FPC1011F在ARM9指纹采集系统中的应用[J].中北大学学报(自然科学版),2011,32(5):642-647.

[8] STMicroelectronics. RM0008 STM32F101xx, STM32F102xx,STM32-F103xx,STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs[EB/OL].http://www.st.com/st- web - ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf,2011 -10.

[9] 李世奇,董浩斌,李荣生.基于FatFs文件系统的SD卡存储器设计[J].测控技术,2011,30(12):79-81.

[10]张涛,左谨平,马华玲.FatFs在32位微控制器STM32上的移植[J].电子技术,2010,47(3):25-27.

[11] SD Card Association.SD Specifications Part 1 Physical Layer Simplified Specification Version 4.10[EB/OL].http://www.sdcard.org/downloads/pls/simplified_specs/part1_410.pdf,2013-1.

[12]朱彦军.BMP位图文件的存储格式[J].电脑编程技巧与维护,2003(11):77-79.

猜你喜欢

指纹图嵌入式指纹
像侦探一样提取指纹
为什么每个人的指纹都不一样
TS系列红外传感器在嵌入式控制系统中的应用
指纹图像干湿度评价及亮度自动调节方法研究
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
沉香GC-MS指纹图谱分析
基于模板检测法的指纹图像的细节特征提取
基于自适应稀疏变换的指纹图像压缩
可疑的指纹