摘要:在指纹识别技术与指纹识别市场成熟之际,如何选择一款合适的指纹传感器成为 业内面临的一个新的问题。本文详细的介绍了FPC1011C 的性能与开发指南,相信必将对正 在徘徊、观望的指纹识别公司带来一定的帮助 关键词:FPC1011C 指纹 传感器 开发 一、引言 在经历了十几年缓慢的自然增长后,指纹识别技术即将迎来一个跳跃性发展 的黄金时期。纵观全球诸多指纹识别事件:出入关按指纹、开门按指纹、领社保 按指纹、上班考勤按指纹、幼儿园接送孩子按指纹、银行取款按指纹、超市购物 按指纹付款、洗衣服按指纹进行分工、打手机按指纹、上电脑按指纹等等新现象 层出不穷,指纹识别已经与人们的生活密切相关,指纹识别技术在全球范围内已 经彻底拉开了“指纹时代”的巨幕。指纹识别技术的巨大市场前景,将对国际、 国内指纹识别产业产生巨大的影响。虽然指纹识别市场已经成熟,但是指纹传感 器零件种类如此繁多,如何选择一款价钱合适、性能稳定的指纹传感器成为指纹 识别企业面临的一个新的问题。指纹识别企业大多数是新新企业,如何做好前期 的产品是企业是否能在业内立足、发展的关键。 目前所用的指纹传感器,基本上基于三种技术基础:光学技术、半导体硅技 术、射频技术。 1.1光学技术 借助光学技术采集指纹是历史最久远、使用最广泛的技术。将手指放在光学 镜片上,手指在内置光源照射下,用棱镜将其投射在电荷耦合器件(CCD)上, 进而形成脊线(指纹图像中具有一定宽度和走向的纹线)呈黑色、谷线(纹线之 间的凹陷部分)呈白色的数字化的、可被指纹设备算法处理的多灰度指纹图像。 光学的指纹采集设备有明显的优点:它已经过较长时间的应用考验,一定程 度上适应温度的变异,较为廉价,可达到500DPI的较高分辨率等。缺点是:由 于要求足够长的光程,因此要求足够大的尺寸,而且过分干燥和过分油腻的手指 也将使光学指纹产品的效果变坏。 1.2硅技术(CMOS技术) 20世纪90年代后期,基于半导体硅电容效应的技术趋于成熟。硅传感器成 为电容的一个极板,手指则是另一极板,利用手指纹线的脊和谷相对于平滑的硅 传感器之间的电容差,形成8bit的灰度图像。 硅技术优点是可以在较小的表面上获得比光学技术更好的图像质量,在1cm ×1.5cm的表面上获得200~300线的分辨率(较小的表面也导致成本的下降和能 被集成到更小的设备中)。缺点是易受干扰,可靠性相对差。 1.3射频技术 为克服光学技术设备和硅技术设备的不足,又出现了一种新型的射频信号指 纹采集设备。其原理是利用射频信号具有穿透材料的能力,且随材料的不同产生 大小不同的回波(射频信号到达不同材质表面时,被吸收、穿透与反射的程度不 同),因此,利用皮肤与空气对于声波阻抗的差异,就可以区分指纹脊与谷所在 的位置。 射频技术所使用的信号频率大于10KHz,能量被控制在对人体无损的程度(与 医学诊断的强度相同)。射频技术产品能够达到最好的精度,它对手指和平面的 清洁程度要求较低。 FPC1011C 是瑞典FingerPrints 公司成功推出的一种电容式面装指纹传感 器。该传感器采用了多项专利,如独立的晶圆体信号放大、传感器表面的保护膜 等。内部具有A/D 转换,高速的SPI 接口,8PIN 的软排线可以方便的接入各种 系统。本文详细介绍了FPC1011C 的特性,给出了其在SPI 接口模式下的电路实 现方法。 图 1. FPC1011 功能框图 二、FPC1011的主要特点: FPC1011C具有高图像质量、高耐磨、高抗静电、低功耗等特点,是一种全新 的基于certus 传感器平台的领先级电容式指纹传感器。它采用独特的反射式测 量法,电脉冲信号由内部IC 产生后,经过ABS 导电框发出,当手指接触传感器 ABS导电框以后,谷和脊之因为离传感器电容基板的距离不同,感应形成不用的 电压值。经过内部的A/D转换,从而输出高质量的数字指纹图像。 其主要特点有: ●是采用硅晶圆与工业级陶瓷基板; ●具有363dpi的分辨率; ●传感器面积为10.64mm×14mm; ●传感器阵列为152×200点; ●耐磨高达100万次; ●抗静电可达15KV以上; ●内含8位模数转换器; ●高速SPI接口形式; ●可提供3.3V或2.5V的工作电压; ●3.3V工作电压下的功耗为50mW; ●适用温度-20°~+85°。 三、FPC1011C的器件功能 FPC1011C的传感器阵列由152 列200行的传感器单元组成。每一个晶圆体都 有独立的信号放大功能,可以将接受到的经手指反射的微弱信号进行放大,从而 可以保证获得高质量的指纹图像。 通信接口 FPC1011C指纹传感器通过SPI接口(串行外围接口) 来提供通信。当CPHA = "0" 和 CPOL = "0" 时SPI接口是从属接口。象素数据通过传感器输入FIFO(运 用读取指令来读入)。最大读取速度是4M象素/秒(=32MHz)。 寄存器概要 除了传感器序列里控制像素的转换寄存器外,FPC1011C还包含14个控制寄 存器。 1.STATUS(状态)-寄存器 2.DRIVC(驱动)-寄存器 3.ADCREF (AD转换)-寄存器 4.SENSEMODE (选择测试模式)-寄存器 5.FIFO_TH(FIFO阈值)-寄存器 6.XSHIFT-寄存器 7.YSHIFT-寄存器 8.XREADS(一行同时读取象素数)-寄存器 9.XSENSE(在感应时选择哪些像素有效)-寄存器 10.YSENSE(在感应时选择哪些像素有效)-寄存器 11.SPI_STATUS(SPI接口状态信息)-寄存器 寄存器设置 指令概要 指令 指令代码 描述 rd_sensor 11H 开启手指感应功能(数据放置在FIFO中) rd_spidata 20H 从FIFO读(仅在使用SPI接口时有效) rd_spistat 21H 从SPI接口读内部状态寄存器(仅在使用SPI 接口时有效) rd_regs 50H 读内部寄存器(所有寄存器在一次操作中读出,寄存器内 容放在FIFO中) wr_drivc 75H 读DRIVC寄存器,设置手指驱动振幅 wr_adcref 76H 写ADCREF寄存器,设置ADC灵敏度 wr_sensem 77H 写SENSEMODE寄存器,设置自测试模式 wr_fifo_th 7CH 写FIFP_TH寄存器,设置对应的数据有效信号(IRQ_DA)d 的FIFO wr_xsense 7FH 将数据转换为XSENSE寄存器 wr_ysense 81H 将数据转换为YSENSE寄存器 wr_xshift 82H 写入XSHIFT寄存器,在X轴方向设置转换数目 wr_yshift 83H 写入YSHIFT寄存器,在Y轴方向设置转换数目 wr_xreads 84H 写入XREADS 寄存器,在转换YSENSE 寄存器之前设置同一 行的读取数目 表4. FPC1011指令 指令细节 读传感器指令(rd_sensor) 模式 串行 并行 输入参数 1虚拟字节 1虚拟字节 数据延迟 (363±2)tCLK (363±2)tCLK 返回字节 0 *数据延迟指直至FIFO中的数据有效前,指令的延迟 该指令用来读取传感器全部或部分区域。 该指令仅用于开启传感序列,指令本身并不返回任何数据。传感器序列的第一组 数据在大约363个时钟周期后进入FIFO。此后每隔8个时钟周期,一个新字节就会 写入FIFO,直至由XSENSE, YSENSE, XSHIFT和YSHIFT寄存器定义的区域被读取。 当FIFO存储量达到或超过FIFO_TH寄存器设置的值,IRQ_DA信号经由将高电 平信号传给准备取回数据的微控制器。在串行模式下从FIFO中读取数据的详细描 述见“Read SPI Data Instruction”。 如果FIFO装载数据已满,我们将让传感器暂停工作直至数据从FIFO中读出 来防止溢出。在暂停期间所有分析模块均有效,ASIC 将在一个正常传感操作中 产生电流。 读取SPI数据指令(rd_spidata) 模式 串行 并行 输入参数 1虚拟字节 NA 数据延迟 0 NA 返回字节 n NA 在指令参数被提供后,数据将被返回。只要SPI_CS_N和SPI_DI保持低电平, 数据将持续返回。 指令输入后,SPI_DI 将作为输入保持低电平,以防下一个字节被误认为一 条新指令了。 如果设置SPI_CS_N为高电平,读出程序将停止,为了在之后继续执行读出, 我们需要使用rd_spidata指令。 读取SPI状态指令(rd_spistat) 模式 串行 并行 输入参数 1虚拟字节 NA 数据延迟 0 NA 返回字节 1 NA 当执行该指令时,SIP_STAT寄存器的内容将返回。 如果传感器读出指令正在执行,使用该指令不会中断读出指令。 读取寄存器指令(rd_regs) 模式 串行 并行 输入参数 1虚拟字节 1虚拟字节 数据延迟 0 2±2tCK 返回字节 13字节 13字节 该指令将把所有内部控制寄存器的值装入FIFO中。 该指令不返回数据。通过Read SPI Data Instruction(SPI模式下),数据 将被读取,Read SPI Data Instruction能直接在该寄存器数据读出指令之后执 行。 该指令将完全装满FIFO,执行完后。当FIFO 中数据有效时,IRQ_DA信号将 为高电平。FIFO中的数据读出可以在任何时刻中止。 返回命令 寄存器 1 STATUS 2 不使用 3 DRIVC 4 ADCREF 5 SENSEMODE 6 FIFO_TH 7 不使用 8 XSHIFT 9 YSHIFT 10 XREADS 11 不使用 12 不使用 13 不使用 14 00H 15 00H 16 00H 写入寄存器(wr_*) 四、硬件开发参考 FPC1011C 采用高速SPI 口,可以方便的与各种处理器进行通信。一般的开发周 期在一个星期左右。 4.1 开发注意事项 a) 给FPC的时钟信号SCK一定要与所用DSP 的相匹配。 b) 发命令的顺序一定要与DATA SHEET上的一致。 c) 收数据的寄存器一定要设置正确。 d) 要控制好延迟的时间 4.2 参考时序图 表5. 当应用rd_regs 时寄存器值返回顺序 4.3 部分参考代码 #include "sysfunc.h" #define TIMOD_RAW_TX 0x0001 #define READ_SENSOR 0x11 #define READ_SPI_DATA 0x20 #define READ_SPI_STATUS 0x21 #define WRITE_DRIVC 0x75 #define WRITE_ADC_REF 0x76 unsigned char i1,j1; unsigned char Img_SPI[30400]; { *pSPI_CTL &= (~SPE); *pSPI_BAUD = 0x32; *pSPI_STAT = TXCOL | RBSY | MODF | TXE; *pSPI_CTL = MSTR | TIMOD_RAW_TX | GM | WOM | SZ; asm("ssync;"); } void tart_SPI(void) { *pSPI_CTL |= SPE; asm("ssync;"); } void Disable_Spi(void) { *pSPI_CTL = (*pSPI_CTL & 0x3FFF); asm("ssync;"); } unsigned char SPI_SendByte(unsigned char data ) { unsigned short temp; *pSPI_TDBR = data; asm("ssync;"); temp = *pSPI_STAT; while (temp&0x0008) { temp = *pSPI_STAT; } while (!(temp & 0x20)) { temp = *pSPI_STAT; } data = *pSPI_RDBR; } unsigned char SPI_RecByte(void) { unsigned short SPI; unsigned char data; *pSPI_CTL |= EMISO; *pSPI_TDBR = 0x00; SPI = *pSPI_STAT; while ((SPI&0x0008)) { SPI = *pSPI_STAT; } while (!(SPI&0x20)) { SPI = *pSPI_STAT; } data = *pSPI_RDBR; return data; } void Init_FPC1011C(void) { SPI_SendByte(WRITE_DRIVC); SPI_SendByte(0xff); SPI_SendByte(WRITE_ADC_REF); SPI_SendByte(0x02); } unsigned Read_FPC1011C_Img() { unsigned char val; unsigned short j; unsigned short cnt=0; Start_SPI(); Init_FPC1011C(); SPI_SendByte(READ_SENSOR); SPI_SendByte(0x00); for(j=0;j<400;j++) { SPI_SendByte(READ_SPI_STATUS); SPI_SendByte(0x00); val = SPI_RecByte(); } SPI_SendByte(READ_SPI_DATA); SPI_SendByte(0x00); hhDelay(384);//384 for(i1=0;i1<200;i1++) { hhDelay(170); for(j1=0;j1<152;j1++) { hhDelay(170); Img_SPI[cnt++] = SPI_RecByte(); } } Disable_Spi(); } 5.小结 随着信息技术的发展,计算机安全技术和身份认证技术对于人们的工作与生活来 说越来越重要。生物特征识别技术为信息社会日益迫切的安全需求提供了一个较 好的解决方案。文中所提及的FPC1011C 凭借着她优越的性能和极高的安全可靠 性,已经被业内公认为银行金融业的指定零件。随着指纹识别技术进一步发展, 市场进一步的扩大,FPC1011C必将被越来越多的人认可、使用。 |