|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
随着指纹识别在智能手机上面的普及,指纹识别技术在越来越多的场合中得到应用。除了手机应用之外,在移动支付、门禁系统、智能家庭等嵌入式场景中也逐渐普及开来。在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源,实现指纹识别并不困难,但在嵌入式系统中特别是基于mcu的应用场合,其运算能力、内存资源等都受到限制,本文介绍一种基于单片机系统的指纹识别方案供参考并对设计要点加以说明。
" v* H' R8 K3 C" F/ a1 d6 Y2 m9 C4 x2 M4 M, j; Y7 v- `7 T
![]()
6 Z- d$ L) P4 r. T7 f H6 Z+ y) h9 L, @& x3 I
如上图所示,这是一个WIFI指纹识别前端的系统框图,其应用场景是:手指按压指纹识别模块时,指纹数据被采集并传输到单片机,单片机经过识别算法对指纹数据进行处理后,把处理结果通过WIFI模块无线传输到云端参与身份识别的业务。8 B* a4 T& Y0 G! d1 ?
2 M& j- S& ~% u; I6 x% g% u在具体实现上面,由于指纹识别算法涉及较多的浮点运算,以及需要暂存指纹点阵的原始数据和中间运算数据,故对于运算能力和存储空间有硬性的要求,在目前主流的单片机架构中Cortex-M4架构集成FPU浮点处理单元,在100MHZ主频下,其浮点数运算能力可5 o( X7 T, }6 A) O6 P9 E" _" Z
( Z8 K% f$ H; l3 S, I& s
以达到要求。指纹识别算法代码编译后占用上百K字节的代码空间,考虑到wifi网络连接、应用层代码等整体上以1MB左右的Flash代码空间为宜,数据存储的需求以512KB的SRAM空间为宜。系统工作时,在指纹识别过程中需要强大的运算能力,而在没有指纹按压的时候则需要运行在低功耗状态以适应嵌入式系统对功耗的要求。
9 q2 C. `! t5 Q- V" J/ `+ q; b. M: m
! \# e( f9 c8 k" P, k" D: ?在润欣科技的方案中,选择了具有XIP特性的MCU,把代码存放在外置SPI Flash中并可以在系统执行,从而大大扩展了代码存储空间。外置SPI Flash中的代码在执行中由于需要内部Cache缓存,故执行速度略低。对于识别算法的核心代码,则可以在Boot阶段拷贝到SRAM中运行,从而提升运行速度。XIP + SRAM的代码空间分配方案兼顾了性能和成本,是此设计的一个亮点。
" ~) e: q9 y! J9 |; ~! [1 S0 U4 q
4 [2 m% N2 s; I' Y6 q指纹识别芯片是系统实现的核心部件,当前比较主流的技术指标,要求指纹识别芯片基于电容技术、支持活体检测(Live Finger Detection)、按压式、采用玻璃盖板,可以实现360度任意方向的触摸,能够支持滑动导航。活体检测技术具有防止假指纹破解的特点,集成心率检测功能,方便用户实时查看心率值。传感器集成化方便整机厂商的设计和整机集成,使得其方便应用于嵌入式单片机系统。1 b# g U6 C3 w n
- I/ U. ?9 g* v1 @2 P指纹识别芯片和主机的数据接口要求在指纹数据采集的过程中达到5Mbps以上的传输速率,低于5Mbps的数据吞吐量将影响用户体验。UART、 I2C等低速接口在吞吐量上无法达到要求,SPI接口简洁而且传输速率完全可以达到要求,是最合适的通信接口。" j4 X) Z6 @8 u" k; c
- ? e1 L- A7 n* t) J8 W F. } , @, @/ \. V( L3 Z6 k
% |2 u/ d9 W# Y指纹识别芯片周期性检测Pixel传感器区域是否有手指触摸,检测到sensor有手指触摸时,会立刻采集活体检测数据,数据采集完成后会通过中断通知Host读取,MCU读取完活体检测数据后芯片进行指纹扫描,指纹扫描开始后就会通过中断通知Host读取数据。指纹数据的扫描和Host数据的读取同步进行。
/ M4 p) ^- p* f1 ~7 a, M% V$ [; g! Z5 y r* k# h Q5 a5 k r4 o/ e9 ^
单片机接收到指纹芯片传输来的Pixel原始数据后通过识别算法运算后通过WIFI模块传输到云端。由于MCU本身资源的限制,WIFI模块本身需要集成WIFI驱动、TCP/IP协议栈,并可以做作为一个相对独立的单元运行应用层代码,这样就极大的减轻了MCU host端的负担. WIFI模块通过串口和MCU进行数据交互。推荐基于Qualcomm QCA4004的WiFi IoT模块。
! n2 y7 a {" T$ Q3 `8 h" P# j# Y9 S, s& A8 n- r$ X
低功耗和抗干扰也是系统设计的一个要点,指纹识别模块在没有手指按压时仍然周期性的进行sensor扫描,虽然功耗低于数据传输期间,但为适应电池供电的场合,希望在没有按键触摸期间可以关掉指纹识别模块的电源,为此如上图所示增加了触摸按键,检测到有手指靠近的时候打开指纹识别芯片的电源,进行指纹扫描采集数据,当长时间没有手指触摸的
, f9 x+ ?+ a" A+ C) Y- G+ K t9 k4 t' T& |& f) ?
时候关闭指纹扫描模块的电源,从而达到降低功耗的目的。另外在数据采集期间为了防止触摸按键对指纹识别传感器的影响,在触摸按键后增加一级模拟开关,在采集开始前MCU输出一个控制信号将触摸按键的模拟信号进行隔离。& `2 ]: [! |% p8 V0 t
9 C$ I: m# N0 y" m3 P |
|