跟着指纹辨认在智能手机上面的遍及,指纹辨认技能在越来越多的场合中得到使用。除了手机使用之外,在移动付出、门禁体系、智能家庭等嵌入式场景中也逐步遍及开来。在体系完结上面,智能手机自身具有强壮的核算才能和丰厚的内存资源,完结指纹辨认并不困难,但在嵌入式体系中特别是根据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输出一个操控信号将接触按键的模仿信号进行阻隔。