田海龍 遲耀丹 姜旭東
【摘要】本文提出了一種基于嵌入式的指紋識(shí)別系統(tǒng)的體系架構(gòu),由內(nèi)置DSP運(yùn)算單元的AS608指紋芯片作為檢測(cè)模塊,通過(guò)串口實(shí)現(xiàn)和嵌入式之間的通信,嵌入式接受處理后實(shí)現(xiàn)指紋識(shí)別的功能。
【關(guān)鍵詞】指紋識(shí)別 嵌入式 串口 AS608
隨著科技的蓬勃發(fā)展,人們?cè)絹?lái)越重視自己的個(gè)人隱私,由此個(gè)人身份識(shí)別的需求日益增加。由于指紋擁有獨(dú)特的不變性,使得指紋識(shí)別技術(shù)與傳統(tǒng)的身份識(shí)別方法相比起來(lái),更加的安全和可操作,所以基于傳統(tǒng)的身份識(shí)別技術(shù)的不足可以被克服,指紋識(shí)別日益被認(rèn)可。指紋識(shí)別歷來(lái)通常在PC平臺(tái)上運(yùn)行,但隨著現(xiàn)代社會(huì)的高速發(fā)展,指紋識(shí)別系統(tǒng)的需求不斷提升,同時(shí)市場(chǎng)對(duì)便攜性和易用性的要求更加走高,指紋產(chǎn)品正在朝著嵌入式技術(shù)的發(fā)展方向。
一、系統(tǒng)結(jié)構(gòu)概述
本系統(tǒng)由指紋識(shí)別部分和指紋處理部分組成,他們之間通過(guò)串口通信,指紋識(shí)別芯片使用AS608,通過(guò)搭建設(shè)計(jì)出具有采集指紋的功能,并引出8條引腳,分別為電源正輸入端,串行數(shù)據(jù)輸出端,串行數(shù)據(jù)輸入端,信號(hào)地,感應(yīng)信號(hào)輸出端,觸摸感應(yīng)電源輸入端USB D+和USB D-端,指紋處理部分由32位單片機(jī)處理,通過(guò)串口和采集端通信。
二、指紋采集部分
系統(tǒng)內(nèi)設(shè)有一個(gè)72K字節(jié)的圖像緩沖區(qū)和兩個(gè)512Bytes大小的特征文件緩沖區(qū),通過(guò)指令可以讀寫任意一個(gè)緩沖區(qū),通過(guò)串口上傳或下載圖像時(shí)為了加快速度,只用到像素字節(jié)的高4位,即將兩個(gè)像素合成一個(gè)字節(jié)傳送。系統(tǒng)內(nèi)部集成了硬件32位隨機(jī)數(shù)生成器,可以通過(guò)指令讓其產(chǎn)生一個(gè)隨機(jī)數(shù)給上位機(jī)。指紋采集端和MCU通訊的數(shù)據(jù)按一定的格式打包,指令格式分為3種,命令包格式,數(shù)據(jù)包格式和結(jié)束包格式,數(shù)據(jù)包的格式如下表1。
數(shù)據(jù)包不是單獨(dú)發(fā)送和接收,必須在發(fā)送指令包之后或接收了應(yīng)答包的后面。包長(zhǎng)度等于包長(zhǎng)度至校驗(yàn)和(指令、參數(shù)或數(shù)據(jù))的總字節(jié)數(shù),包含校驗(yàn)和,但不包含包長(zhǎng)度本身的字節(jié)數(shù)。校驗(yàn)和是從包標(biāo)識(shí)至校驗(yàn)和之間所有字節(jié)之和。模塊地址在沒(méi)有生成之前為缺省的OxFFFFFFFF,一旦上位機(jī)通過(guò)指令生成了模塊地址,則所有的數(shù)據(jù)包都必須按照生成的地址收發(fā)。模塊將拒絕地址錯(cuò)誤的數(shù)據(jù)包。
應(yīng)答是將有關(guān)命令執(zhí)行情況與結(jié)果上報(bào)給上位機(jī),應(yīng)答包含有參數(shù),并可跟后續(xù)數(shù)據(jù)包。上位機(jī)只有在收到模塊的應(yīng)答包后才能確認(rèn)模塊收包情況與指令執(zhí)行情況。模塊應(yīng)答包中包含一個(gè)參數(shù)即確認(rèn)碼,確認(rèn)碼表示執(zhí)行指令完畢的情況,模塊應(yīng)答格式如表2所示。
三、串口通信部分
在STM32中串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標(biāo)準(zhǔn)NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互聯(lián)網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR?ENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。還可以使用DMA方式,實(shí)現(xiàn)高速數(shù)據(jù)通信。
USART通過(guò)3個(gè)引腳與其他設(shè)備連接在一起,任何USART雙向通信至少需要2個(gè)引腳,接受數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX),RX是接受數(shù)據(jù)串行輸入,通過(guò)過(guò)采樣技術(shù)來(lái)區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù);TX是發(fā)送數(shù)據(jù)輸出,當(dāng)發(fā)送器被禁止時(shí),輸出引腳恢復(fù)到它的I/O端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時(shí),TX引腳處處于高電平。在單線和智能卡模式里,此I/O口被同時(shí)用于數(shù)據(jù)的發(fā)送和接收。
圖1中的源碼實(shí)例是串口的初始化和中斷的初始化USART_InitStructure表示將結(jié)構(gòu)體設(shè)置為缺省狀態(tài),USART_BaudRate=115200:代表波特率設(shè)置為115200,USART_InitStructure.USART_wordLength=USART_WordLength_8b:表示在幀結(jié)尾傳輸1個(gè)停止位,USART_InitStructure.USART_StopBits表示奇偶失能模式,無(wú)奇偶校驗(yàn)。
四、嵌入式控制部分
硬件電路的搭建如同房子的地基一樣重要,它將直接影響到讀寫器的性能。硬件電路的核心是主控芯片有著無(wú)可替代的作用,因此選擇一款合適的主控芯片至關(guān)重要。為了設(shè)計(jì)一款功耗低、體積小、有巨大的信息容量、數(shù)據(jù)處理能力強(qiáng)、測(cè)量精度高,本文選用STM32芯片作為主控芯片,并在此基礎(chǔ)上設(shè)計(jì)指紋識(shí)別系統(tǒng)。STM32是32位的單片機(jī),集成嵌入式Flash和SRAM存儲(chǔ)器的ARMCortex-M3內(nèi)核。和8/16位設(shè)備相比,ARM Cortex-M3 32位RISC處理器提供了更高的代碼效率。STM32F103xx微控制器帶有一個(gè)嵌入式的APM核,所以可以兼容所有的APM工具和軟件。首先,是讀AS608模塊觸摸感應(yīng)狀態(tài)引腳,初始化函數(shù)為void PS_StaGPio_Init(void)。因?yàn)楫?dāng)感應(yīng)到的時(shí)候是輸出高電平,所以狀態(tài)引腳(PA6)配置為下拉輸入模式。往下就是配置串口發(fā)送指令的包頭、指令碼、校驗(yàn)和之類。第二個(gè)函數(shù)static u8*JudgeStr(u16 waittime),里面調(diào)用了