隨著指紋識別在智能手機上面的普及,指紋識別技術在越來越多的場合中得到應用。除了手機應用之外,在移動支付、門禁系統(tǒng)、智能家庭等嵌入式場景中也逐漸普及開來。在系統(tǒng)實現(xiàn)上面,智能手機本身擁有強大的計算能力和豐富的內(nèi)存資源,實現(xiàn)指紋識別并不困難,但在嵌入式系統(tǒng)中特別是基于MCU的應用場合,其運算能力、內(nèi)存資源等都受到限制,本文介紹了一種基于單片機系統(tǒng)的指紋識別方案和設計要點。
如上圖所示,這是一個WiFi指紋識別前端的系統(tǒng)框圖,其應用場景是:手指按壓指紋識別模塊時,指紋數(shù)據(jù)被采集并傳輸?shù)絾纹瑱C,單片機經(jīng)過識別算法對指紋數(shù)據(jù)進行處理后,把處理結果通過WiFi模塊無線傳輸?shù)皆贫藚⑴c身份識別的業(yè)務。
在具體實現(xiàn)上面,由于指紋識別算法涉及較多的浮點運算,以及需要暫存指紋點陣的原始數(shù)據(jù)和中間運算數(shù)據(jù),故對于運算能力和存儲空間有硬性的要求,在目前主流的單片機架構中Cortex-M4架構集成FPU浮點處理單元,在100MHZ主頻下,其浮點數(shù)運算能力可以達到要求。指紋識別算法代碼編譯后占用上百K字節(jié)的代碼空間,考慮到WiFi網(wǎng)絡連接、應用層代碼等整體上以1MB左右的Flash代碼空間為宜,數(shù)據(jù)存儲的需求以512KB的SRAM空間為宜。系統(tǒng)工作時,在指紋識別過程中需要強大的運算能力,而在沒有指紋按壓的時候則需要運行在低功耗狀態(tài),以適應嵌入式系統(tǒng)對功耗的要求。
在我們的方案中,選擇了具有XIP特性的MCU,把代碼存放在外置SPI Flash中并可以在系統(tǒng)執(zhí)行,從而大大擴展了代碼存儲空間。外置SPI Flash中的代碼在執(zhí)行中由于需要內(nèi)部Cache緩存,故執(zhí)行速度略低。對于識別算法的核心代碼,則可以在Boot階段拷貝到SRAM中運行,從而提升運行速度。XIP + SRAM的代碼空間分配方案兼顧了性能和成本,是此設計的一個亮點。
指紋識別芯片是系統(tǒng)實現(xiàn)的核心部件,當前比較主流的技術指標,要求指紋識別芯片基于電容技術、支持活體檢測(Live Finger DetecTIon)、按壓式、采用玻璃蓋板,可以實現(xiàn)360度任意方向的觸摸,能夠支持滑動導航?;铙w檢測技術具有防止假指紋破解的特點,集成心率檢測功能,方便用戶實時查看心率值。傳感器集成化方便整機廠商的設計和整機集成,使得其方便應用于嵌入式單片機系統(tǒng)。
指紋識別芯片和主機的數(shù)據(jù)接口要求在指紋數(shù)據(jù)采集的過程中達到5Mbps以上的傳輸速率,低于5Mbps的數(shù)據(jù)吞吐量將影響用戶體驗。UART、 I2C等低速接口在吞吐量上無法達到要求,SPI接口簡潔而且傳輸速率完全可以達到要求,是最合適的通信接口。
指紋識別芯片周期性檢測Pixel傳感器區(qū)域是否有手指觸摸,檢測到傳感器有手指觸摸時,會立刻采集活體檢測數(shù)據(jù),數(shù)據(jù)采集完成后會通過中斷通知Host讀取,MCU讀取完活體檢測數(shù)據(jù)后芯片進行指紋掃描,指紋掃描開始后就會通過中斷通知Host讀取數(shù)據(jù)。指紋數(shù)據(jù)的掃描和Host數(shù)據(jù)的讀取同步進行。
單片機接收到指紋芯片傳輸來的Pixel原始數(shù)據(jù)后通過識別算法運算后通過WiFi模塊傳輸?shù)皆贫恕S捎贛CU本身資源的限制,WiFi模塊本身需要集成WiFi驅動、TCP/IP協(xié)議棧,并可以做作為一個相對獨立的單元運行應用層代碼,這樣就極大的減輕了MCU host端的負擔。 WiFi模塊通過串口和MCU進行數(shù)據(jù)交互。推薦基于Qualcomm QCA4004的WiFi IoT模塊。
低功耗和抗干擾也是系統(tǒng)設計的一個要點,指紋識別模塊在沒有手指按壓時仍然周期性的進行傳感器掃描,雖然功耗低于數(shù)據(jù)傳輸期間,但為適應電池供電的場合,希望在沒有按鍵觸摸期間可以關掉指紋識別模塊的電源,為此如上圖所示增加了觸摸按鍵,檢測到有手指靠近的時候打開指紋識別芯片的電源,進行指紋掃描采集數(shù)據(jù),當長時間沒有手指觸摸的時候關閉指紋掃描模塊的電源,從而達到降低功耗的目的。另外在數(shù)據(jù)采集期間為了防止觸摸按鍵對指紋識別傳感器的影響,在觸摸按鍵后增加一級模擬開關,在采集開始前MCU輸出一個控制信號將觸摸按鍵的模擬信號進行隔離。