《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM9和滑動指紋傳感器的采集系統(tǒng)
基于ARM9和滑動指紋傳感器的采集系統(tǒng)
中國傳動網
朱文娟 王正勇 張超 葉勇建
摘要: 為了解決這個難題,,本文實現了基于ARM9芯片AT91RM9200[4]和滑動指紋傳感器AT77104A FingerChip的指紋采集系統(tǒng),并在該系統(tǒng)中完成指紋有效拼接,。
Abstract:
Key words :

1,、 前言

  指紋因其唯一性,,終身不變性等特點,,在安全性要求較高的行業(yè),,如海關、金融和刑偵領域得到廣泛應用,。隨著人們安全意識和隱私覺悟的提高,,手機、筆記本,、PDA等日常電子消費品中也逐漸開始使用指紋識別技術。此類電子消費品因為便攜,、手持等特點,,在體積、重量,、功耗方面都有很高的要求,,而傳統(tǒng)的指紋傳感器面積較大,不適合此類產品的使用,。

  隨之產生的滑動指紋傳感器(sweep fingerprint sensor),,因為它更小的體積、更低的價格和極低功耗,,已經逐漸開始應用于電子消費領域和其他安全系統(tǒng)中,。以ATMEL公司的AT77C104A FingerChip為例[1],與傳統(tǒng)的指紋傳感器相比,,它具有以下優(yōu)點:(1)體積小,,僅為1.5×15mm;(2)強魯棒性,采集到的相鄰的指紋幀沒有旋轉形變等;(3)低功耗,圖像采集時為4.5mA,,導航時為1.5mA,,睡眠模式小于10uA。 [2]中應用的圖像傳感器,,獲取的指紋圖像大小為240×240,,面積遠遠大于滑動指紋傳感器。然而手指滑過滑動指紋傳感器時,,采集到的一個指紋幀序列而并非完整的指紋圖像,。如何將得到的指紋幀序列快速的拼接成一幅完整的指紋圖像,達到與傳統(tǒng)的面積較大的指紋傳感器相同的效果,,成為一個急需解決的難題[3],。

  為了解決這個難題,本文實現了基于ARM9芯片AT91RM9200[4]和滑動指紋傳感器AT77104A FingerChip的指紋采集系統(tǒng),,并在該系統(tǒng)中完成指紋有效拼接,。

2、 指紋采集和拼接系統(tǒng)的硬件設計

  AT91RM9200是ATMEL推出的ARM9 32位處理器,,具有一下優(yōu)點:運算速度快(在工作頻率為180MHz的情況下它的運算速度為200MIPS),、低功耗、可提供片上或片外存儲器以及一系列外圍控制,、通信和數據存儲的靈活配置,。這些特征使得這款芯片適合嵌入式指紋采集系統(tǒng)的開發(fā)。

  在硬件核心電路中,,使用兩片16位的SDRAM來配置成32位寬度的高性能存儲器,,讀取數據時候以四個字節(jié)為一個單位,從而加快了數據的讀取速度,。同時外擴一個8M的DataFlash,,用于存放Uboot、Linux文件系統(tǒng)和應用程序,。

  在本系統(tǒng)中,,包括的通信過程為:

  (1)主機和ARM板之間的通信包括:首先PC主機在超級終端中使用Xmodem協(xié)議發(fā)送文件RomBoot.bin到AT91RM9200內置的ROM中,,下載完畢后,,自動運行;其次分別將RomBoot.bin和U-Boot.bin程序下載存儲到DataFlash,復位后自動啟動U-Boot;最后通過以太網口將Linux鏡像文件和應用程序下載到DataFlash中,。再次復位后,,開發(fā)板進入Linux系統(tǒng)。

 ?。?)AT77C104A和控制芯片之間的通信:通過SPI接口完成,??刂菩酒ㄟ^寫寄存器,設置AT77C104A的工作模式;AT77C104A將采集到的數據傳遞到SDRAM中,。

 ?。?)在該嵌入式系統(tǒng)中,拼接采集到的指紋幀序列,,通過USB接口導出拼接后的指紋圖像,。

圖1指紋采集和拼接系統(tǒng)框圖

3、AT91RM9200與AT77C104B FingerChip連接及通信過程

  指紋采集芯片采用ATMEL公司的熱敏傳感芯片AT77C104A FingerChip,,通過滑過傳感陣列的指紋脊和谷的溫度變化來獲取指紋數據,。與傳統(tǒng)的指紋傳感器相比,AT77C104A在體積,、功耗,、工作頻率以及對工作環(huán)境的魯棒性等方面均有優(yōu)勢。該芯片提供了SPI接口,,有兩種通信總線:

 ?。?)SLOW總線:對應SLOW模式,起控制作用,,控制和讀寫內部寄存器;

 ?。?)FAST總線:對應FAST模式,用于獲取象素,,使主機獲得所有的指紋象素,。

  在本指紋采集系統(tǒng)中,利用AT91RM9200的SSC接口與AT77C104B FingerChip相連,。SSC 包含獨立的接收器,、發(fā)送器及一個時鐘分頻器。每個發(fā)送器及接收器有三個接口:針對數據的TD/RD 信號,、針對時鐘的TK/RK 信號及針對幀同步的TF/RF 信號,。AT91RM9200與AT77C104B FingerChip 通信時,前者處于主機方式,,后者處于從機方式,連接如圖2所示,。

  在該通信過程中,,SSC的接收器時鐘RK由TK驅動,同時接收端與發(fā)送端同步,,所以TF與RF相連,。AT91RM9200通過I/O口(PIO_PA5)提供片選信號,選擇指紋傳感器的工作模式,。SSC的可編程高電平及兩個32位專用PDC 通道,,可在沒有處理器干涉的情況下進行連續(xù)的高速率數據傳輸,,適用于快速獲取指紋數據。

  AT77C104A FingerChip內部有13個寄存器,。AT91RM9200通過寫AT77C104A FingerChip內部的模式寄存器,,將FingerChip設置成獲取象素模式。此時,,AT91RM9200通過PIO_PA5將FingerChip的FSS(Fast SPI Slave Slect,,低電平有效)信號置為低電平。設置完成后,,AT91RM9200為主機,,FingerChip為從機。FingerChip的MISO信號將采集到的數據輸入到AT91RM9200的SSC端口對應的RD端,,存儲到SDRAM中,。

圖2 AT91RM9200與AT77C104B FingerChip連接

  滑動時指紋傳感器獲得的每一個像素,由一個16進制數表示,,對應著4個時鐘周期,。當傳感器通過SPI端口傳輸獲取到一幀數據時,先傳輸一個幀同步信號F0F00200,,然后再傳輸232×8像素指紋數據,。因此,每傳輸一幀數據,,需要n=(232×8+8)×4=7496個時鐘周期,。當FingerChip以6Mbps工作時,每秒中可獲取804幀指紋數據,。獲取到的指紋數據存儲在SDRAM中,,通過指紋拼接程序將紋幀序列拼接成完整的指紋圖像,然后通過USB傳輸回PC主機中顯示,。

4,、 系統(tǒng)定制和驅動程序加載

  4.1系統(tǒng)定制

  為了增加系統(tǒng)的可維護性,采用Linux系統(tǒng),,Linux內核可根據需要裁減,。系統(tǒng)定制過程為:(1) 首先將RomBoot.bin下載到AT91RM9200的SDRAM里;當超級終端顯示RomBoot程序界面之后,分別將RomBoot.bin和U-Boot.bin程序下載存儲到DataFlash的0xc0000000和0xc0008000地址,。復位開發(fā)板,,進入U-Boot命令行。(2)在超級終端中,,通過tftp將裁減過的Linux內核鏡像文件和文件系統(tǒng)下載到Dataflash中運行,。

  4.2 加載驅動程序

  設備驅動程序在Linux內核中,使某個特定的硬件響應一個定義良好的內部編程接口,,同時完全隱藏了設備的工作細節(jié),。用戶通過一組標準化的調用完成對硬件的操作,,而這些調用是和特定的驅動程序無關的。將這些調用映射到作用了實際硬件的設備特定的操作上,,就是設備驅動程序的任務,。另一方面,這種編程接口使得驅動程序獨立于內核的其他部分而建立,,在需要的時候,,可以在運行時“插入”內核(調入內存),也即Linux中的模塊化實現,,這也是Linux中設備驅動程序的一大特點,。

  將FingerChip驅動程序加載到Linux文件系統(tǒng)中,當系統(tǒng)運行時,,使用insmod命令,,即可實現指紋傳感器設備的裝載。通過標準化的調用,,實現對傳感器的控制,。

5、 基于滑動式指紋傳感器的指紋拼接算法

  當手指滑過時,,滑動指紋傳感器采集到是一系列指紋幀序列,,因此在嵌入式系統(tǒng)中,需要對獲取的指紋幀序列進行拼接,。與PC機中的CPU相比,,ARM芯片速度較低。為了減少刮取指紋后的等待時間,,對指紋拼接速度的要求很高,。

  從大量的指紋序列中發(fā)現,當采集速度足夠快時,,指紋幀序列相鄰兩幀之間是連續(xù)的,,而且會有部分重疊。同時,,相鄰指紋幀之間的旋轉和形變微乎其微,,幾乎可以被忽略,所以在相鄰指紋幀配準的時候,,只需要計算出兩幀之間的偏移量就可以,。

  本文運用基于塊匹配指紋拼接算法[5],能夠快速有效的尋找到相鄰指紋幀之間的偏移量,。塊匹配算法是:(1)在圖像A中選取M×N大小的X區(qū)域;(2)在圖像B中選取所有可能的M×N大小的Y區(qū)域;(3)計算X區(qū)域和Y區(qū)域對應象素差值的平均值MAE;MAE越小,兩區(qū)域相似度越高;(4)MAE最小值對應的Y區(qū)域即為與X區(qū)域匹配,。計算公式為:

(1)

其中0≤i≤M-1,,0≤j≤N-1,,p(i,j)為X區(qū)域的點p的象素值,q(i,j)為Y區(qū)域對應點q的象素值,。MAE越小,,兩區(qū)域相似度越高。理想情況下,,MAE最小值為0,。

  具體實現步驟:(1)FingerChip AT77104A獲取到的指紋幀數據大小為232×8,設x方向為232,,y方向為8,。為了有效的拼接相鄰兩幀指紋,設置獲取每一幀數據的頻率,,使得y方向的偏移量dy不大于8,,即保證相鄰兩幀一定有重疊。(2)理想情況下,,手指在y方向滑動,,在x方向上偏移量為0。因此,,只考慮dx不大于dy的情況,。當dx超過dy時,滑動無效,。(3)由(1)(2)可得,,|dx|<8。同時可得,,最后一行,,中間的(232-8×2)個象素與下一幀必有重疊。(4)取前一幀最后一行(232-8×2)個象素,,即(232-8×2)×1的模板,,與新獲取的一幀指紋匹配。(5)匹配方法:在新的指紋幀里面尋找所有可能的(232-8×2)×1的模板,,計算求得MAE,。選取MAE的最小值對應的模板,此模板與上一幀的最后一行的(232-8×2)×1的模板相匹配,。即得dx,,dy。(6)重復執(zhí)行以上步驟,,直到得到一幅完整的指紋圖像,。圖3-a為拼接前的指紋幀,圖3-b為拼接后的指紋圖像,。

圖3 a.拼接前的指紋幀 b.拼接后的指紋圖像

6,、 總結

  本文實現了基于ARM9芯片AT91RM9200和滑動指紋傳感器AT77C104B FingerChip的指紋采集系統(tǒng),,具有低功耗,采集便捷,,通信系統(tǒng)簡單等優(yōu)點,,具有很大的實用價值。開發(fā)的指紋拼接算法通過了AT77C104B FingerChip獲取的100幅指紋幀序列的測試,,均能達到較好的效果,。該系統(tǒng)獲取到的指紋幀序列和拼接后的指紋圖像,均可通過USB接口導出,,可用于指紋拼接算法有效性的測試和指紋識別算法的測試,。因為AT91RM9200支持以太網的接入,因此可以聯(lián)網集控,。下一步的工作是,,在此指紋采集和指紋拼接算法的基礎上,開發(fā)指紋識別系統(tǒng),。

 

 

此內容為AET網站原創(chuàng),,未經授權禁止轉載。