摘 要:设计了一种基于DSP处理器和FPC1011C电容式指纹传感器的嵌入式指纹识别模块,可广泛运用于指纹U盘、U-Key、汽车防盗装置、指纹PDA、POS机、个人电脑等联机和脱机产品。具有高性能、低功耗、低价位等特点。本文介绍FPC1011C电容式指纹图像传感器的结构、特性和工作原理,并采用FPC1011C和DSP所组成的指纹识别模块的硬件设计方法及指纹图像传感器驱动软件的设计。
关键词:FPC1011C;指纹识别模块; DSP;电容式传感器
一、引言
生物识别技术是一种通过人体特征来确认身份的认证技术,它能立刻强化安全,并且将用户从密码地狱中解放出来。生物识别可用在很多地方,比如:视网膜识别、面部识别、签名识别、声音识别技术、指纹识别技术等。在所有的生物识别技术中指纹识别技术是目前最为成熟,也被应用最广的生物识别技术。它是用人体的指纹特征对个体身份进行区分和鉴定,具有唯一性、稳定性、难于伪造的特点,而且识别的准确率较高。使它在身份识别和认证领域以及安全性能要求较高的行业中得到广泛应用。指纹识别技术即将迎来一个跳跃性发展的黄金时期,巨大市场前景,将对国际、国内安防产业产生巨大的影响。
二、FPC1011C传感器的总体特征
FPC1011C的工作原理和性能特点
FPC1011C电容式指纹传感器是瑞典FingerPrint Card公司推出的目前最先进的电容式指纹传感器,该电容式指纹传感器利用了该公司拥有专利的反射式探测技术(以往的电容式指纹传感器采用的一般是直接式探测技术),使指纹传感器的表面保护层厚度可以达到普通电容式指纹传感器的100倍左右,因此使指纹传感器具有更高的对干湿手指的适用性和更长的使用寿命。
主要特征和性能如下:
① 指纹图像大小:152*200
② 图像分辨率:363 DPI
③ 传感器图像面积:10.64*14.00mm
④ 采集原理:电容式,反射式探测法
⑤ 探测位置:真皮层
⑥ 高速的SPI接口
⑦ 3.3V或2.5V的工作电压
⑧ 抗静电达15kV以上
⑨ 使用寿命达100万次以上
⑩ 使用温度:-20℃~60℃
2 模块的硬件设计
该系统是由DSP、FPC1011C指纹传感器、SDRAM和FLASH、RS232接口等硬件组成。
① 工作原理
用户通过PC端软件发命令给指纹识别模块,FPC1011C电容式指纹传感器采集用户的指纹,DSP通过SPI接口读取从传感器过来的指纹图像,将指纹图像存储到SDRAM中,DSP运用指纹识别核心算法对图像进行运算,将运算出来的特征点和存储在Flash的特征点进行比对,再通过指纹识别模块将比对结果输出给PC端显示比对结果。系统的原理框图如图1所示。
图1 模块的硬件设计框图
② 指纹传感器部分的硬件设计
DSP通过SPI口读取FPC1011C的指纹图像,并通过PF口来控制片选控制信号,FPC1011C指纹图像传感器通过SPI(串行外设接口)口和外部进行通信,通信时,需要把传感器设置成从机模式,DSP设置成主机模式,同时要把从机CPOL和CPHA 设置为 0的数据传输模式,指纹图像的最大传输速度可达4M/s(=32MHz)。
传感器部分的硬件电路示意图如图2所示。
图2 传感器部分的硬件电路接口图
3 传感器的驱动软件设计
采用ADI公司的VisualDSP++ 4.5集成开发环境软件进行C语言编程。按时序把指纹图像放在SDRAM的固定地址中,通过仿真器进行调试,并读出所采集的指纹图像,观察指纹图像质量,进而调整指纹传感器的参数,使采集到的图像效果达到最佳。
FPC1011C的指令概要:
指令指令代码描述rd_sensor11 H开始采集指纹图像(数据采用FIFO方式)rd_spidata20 H采用FIFO方式读(仅在SPI接口时有效)rd_spistat21 H通过SPI接口读取内部状态寄存器(仅在SPI接口时有效)rd_regs50 H读取内部状态寄存器(所以寄存器在一次操作中读出,寄存器的内容通过FIFO方式存放)wr_drivc75 H写DRIVC寄存器,设置传感器的电压振幅wr_adcref76 H写ADCREF寄存器,设置ADC灵敏度wr_sensem77 H写SENSEMODE寄存器,设置自测试模式wr_fifo_th7C H写FIFO_TH寄存器,通过FIFO方式设置数据有效信号wr_xsense7F H移位数据到XSENSE寄存器wr_ysense81 H移位数据到YSENSE寄存器wr_xshift82 H写XSHIFT寄存器,设置X方向的移位数据wr_yshift83 H写YSHIFT寄存器,设置Y方向的移位数据wr_xreads84 H写XREADS寄存器,在移位YSENSE寄存器之前设置同一行的读取数目
① 传感器初始化程序设计
/****************************************************/
/*init SPI */
/*CPOL and CPHA must be set 0 */
/****************************************************/
void segment (""L1_code"") Init_SPI(void)
{
*pSPI_CTL &= (~SPE); //disable SPI
*pSPI_BAUD = 0x23; //SPI Master Baud Rate = SCLK / (2 × SPI_BAUD)
*pSPI_STAT = TXCOL RBSY MODF TXE; //Master Mode;Active high SCK;8 bit;
*pSPI_CTL = MSTR TIMOD_RAW_TX GM WOM SZ;
}
/*******************************************************
/The default parameter setting for FPC1011C(3A or 3B)
/DrivC = 0x7F
/ADCRef = 0x02
/ Adaptive Gain Control FPC1011C;
*******************************************************/
void segment (""L1_code"") Init_FPC1011C(void)
{
// default setting DriveC=127, ADCRef=2
SPI_SendByte(WRITE_DRIVC);
SPI_SendByte(DriveC);
SPI_SendByte(WRITE_ADC_REF);
SPI_SendByte(ADCRef);
}
② 采集指纹图像程序设计
/*******************************************************
/Read Image
*******************************************************/
void segment (""L1_code"") Read_FPC1011C_Img(void)
{
unsigned char val,i1,j1;
unsigned short j;
unsigned short cnt=0;
Start_SPI();
Init_FPC1011C();
SPI_SendByte(READ_SENSOR);
SPI_SendByte(0x00);
for(j=0;j<20;j++)
{
SPI_SendByte(READ_SPI_STATUS);
SPI_SendByte(0x00);
val = SPI_RecByte();
}
SPI_SendByte(READ_SPI_DATA);
SPI_SendByte(0x00);
for(i1=0;i1<200;i1++)
{
for(j1=0;j1<152;j1++)
{
ImgFPC1011C Area Sensor Package Product Specification; FINGERPRINT CARDS