历史上的今天
今天是:2025年01月05日(星期日)
2018年01月05日 | 详解指纹识别在嵌入式IoT系统中的实现及设计要点
2018-01-05 来源:资深物联网MCU研发工程师 张平
在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源,实现指纹识别并不困难,但在嵌入式系统中特别是基于MCU的应用场合,其运算能力、内存资源等都受到限制,本文介绍了一种基于单片机系统的指纹识别方案和设计要点。
随着指纹识别在智能手机上面的普及,指纹识别技术在越来越多的场合中得到应用。除了手机应用之外,在移动支付、门禁系统、智能家庭等嵌入式场景中也逐渐普及开来。在系统实现上面,智能手机本身拥有强大的计算能力和丰富的内存资源,实现指纹识别并不困难,但在嵌入式系统中特别是基于MCU的应用场合,其运算能力、内存资源等都受到限制,本文介绍了一种基于单片机系统的指纹识别方案和设计要点。

如上图所示,这是一个WiFi指纹识别前端的系统框图,其应用场景是:手指按压指纹识别模块时,指纹数据被采集并传输到单片机,单片机经过识别算法对指纹数据进行处理后,把处理结果通过WiFi模块无线传输到云端参与身份识别的业务。
在具体实现上面,由于指纹识别算法涉及较多的浮点运算,以及需要暂存指纹点阵的原始数据和中间运算数据,故对于运算能力和存储空间有硬性的要求,在目前主流的单片机架构中Cortex-M4架构集成FPU浮点处理单元,在100MHZ主频下,其浮点数运算能力可以达到要求。指纹识别算法代码编译后占用上百K字节的代码空间,考虑到WiFi网络连接、应用层代码等整体上以1MB左右的Flash代码空间为宜,数据存储的需求以512KB的SRAM空间为宜。系统工作时,在指纹识别过程中需要强大的运算能力,而在没有指纹按压的时候则需要运行在低功耗状态,以适应嵌入式系统对功耗的要求。
在我们的方案中,选择了具有XIP特性的MCU,把代码存放在外置SPI Flash中并可以在系统执行,从而大大扩展了代码存储空间。外置SPI Flash中的代码在执行中由于需要内部Cache缓存,故执行速度略低。对于识别算法的核心代码,则可以在Boot阶段拷贝到SRAM中运行,从而提升运行速度。XIP + SRAM的代码空间分配方案兼顾了性能和成本,是此设计的一个亮点。
指纹识别芯片是系统实现的核心部件,当前比较主流的技术指标,要求指纹识别芯片基于电容技术、支持活体检测(Live Finger Detection)、按压式、采用玻璃盖板,可以实现360度任意方向的触摸,能够支持滑动导航。活体检测技术具有防止假指纹破解的特点,集成心率检测功能,方便用户实时查看心率值。传感器集成化方便整机厂商的设计和整机集成,使得其方便应用于嵌入式单片机系统。
指纹识别芯片和主机的数据接口要求在指纹数据采集的过程中达到5Mbps以上的传输速率,低于5Mbps的数据吞吐量将影响用户体验。UART、 I2C等低速接口在吞吐量上无法达到要求,SPI接口简洁而且传输速率完全可以达到要求,是最合适的通信接口。
指纹识别芯片周期性检测Pixel传感器区域是否有手指触摸,检测到传感器有手指触摸时,会立刻采集活体检测数据,数据采集完成后会通过中断通知Host读取,MCU读取完活体检测数据后芯片进行指纹扫描,指纹扫描开始后就会通过中断通知Host读取数据。指纹数据的扫描和Host数据的读取同步进行。
单片机接收到指纹芯片传输来的Pixel原始数据后通过识别算法运算后通过WiFi模块传输到云端。由于MCU本身资源的限制,WiFi模块本身需要集成WiFi驱动、TCP/IP协议栈,并可以做作为一个相对独立的单元运行应用层代码,这样就极大的减轻了MCU host端的负担. WiFi模块通过串口和MCU进行数据交互。推荐基于Qualcomm QCA4004的WiFi IoT模块。

低功耗和抗干扰也是系统设计的一个要点,指纹识别模块在没有手指按压时仍然周期性的进行传感器扫描,虽然功耗低于数据传输期间,但为适应电池供电的场合,希望在没有按键触摸期间可以关掉指纹识别模块的电源,为此如上图所示增加了触摸按键,检测到有手指靠近的时候打开指纹识别芯片的电源,进行指纹扫描采集数据,当长时间没有手指触摸的时候关闭指纹扫描模块的电源,从而达到降低功耗的目的。另外在数据采集期间为了防止触摸按键对指纹识别传感器的影响,在触摸按键后增加一级模拟开关,在采集开始前MCU输出一个控制信号将触摸按键的模拟信号进行隔离。
下一篇:各国热推“人脸识别技术购物”
史海拾趣
|
单片机外扩一个IDT71V124SA用于存储数据,但是数据手册中IDT71V124SA读和写都有两个时序,请教下这两个时序之用其中一个还是有先后顺序的关系? 顺便求个范例程序:$ :$… 查看全部问答> |
|
在PCB板布线中,整个PCB板中的布线完成得都很好,但如果电源、 地线的布置考虑不周到而引起干扰,使产品的性能下降,严重时会降低产品的成功率。要把电源线和地线处理好,将电源线和地线所产生的噪音干扰降到最低限度,以保证产品的质量。 一、电 ...… 查看全部问答> |
|
我的设备信息:usb\VID_19D2&PID_0017&MI_03\6&227C3C0A&0003,请问后面6&227C3C0A&0003这个是干什么用的? 我的设备信息:usb\\VID_19D2&PID_0017&MI_03\\6&227C3C0A&0003,请问后面6&227C3C0A&0003这个是干什么用的?… 查看全部问答> |
|
刚开始接触TI的M3系列,属于菜鸟。有一块LM3S3748的开发板,做项目用了LM3S3749,板子焊好后想尝试一下是否可以下载程序,就直接把LM3S3748的开发板中的hello.c编译出来的.bin文件透过LMFlashProgrammer进行写入,用的是串口,第一次程序正常下载成 ...… 查看全部问答> |
|
大家新建工程时,用到的一些库函数还是一直使用默认的目录吗? C:\\tidcs\\c28\\DSP2802x\\v126\\DSP2802x_headers\\include C:\\tidcs\\c28\\DSP2802x\\v126\\DSP2802x_common\\include 有修改后,没错误提示的工程吗?… 查看全部问答> |
|
教你如何用proteus学习ARM---ARM7嵌入式系统设计与仿真 ARM7嵌入式系统设计与仿真:基于Proteus、Keil 与IAR 《ARM7嵌入式系统设计与仿真:基于Proteus、Keil 与IAR》结合动态仿真工具软件Proteus和编译软件IAR,以读者最容易理解的方式介绍了如何使用软件平台设计ARM7嵌入式系统。ARM ...… 查看全部问答> |




