摘要:介紹了利用單片機Atmega48與指紋識別模塊TCS3C-TCD42A構建小型指紋識別系統(tǒng)的全過程,簡要介紹了TCS3C-TCD42A模塊的功能和特點,給出了指紋識別系統(tǒng)結構框圖。論述了單片機時指紋識別模塊的控制。包括單片機與模塊的接口方法、通信協(xié)議、主程序、接收中斷處理模塊和通信處理模塊的編程思路及注意事項。該系統(tǒng)在實際使用過程中,運行穩(wěn)定,通信性能良好,已經成功應用于指紋保管箱產品中。
關鍵詞:指紋識別模塊;串口通信協(xié)議;單片機;AUnega48
0 引言
隨著現(xiàn)代經濟和社會的不斷發(fā)展,越來越多的場合需要身份確認,而傳統(tǒng)的身份識別技術已經遠遠不能滿足要求。指紋識別作為一種新興的鑒別個人身份的方法,已經廣泛地在安全部門得到應用。由于指紋具有不可復制性、惟—性、穩(wěn)定性的特點,所以得到了越來越多的應用。目前世界上許多公司和科研機構都在進行指紋識別技術的研究,并取得了一定的成果,推出了許多指紋產品。這些產品已經開始在部分民用領域得到應用,如用于指紋門禁,指紋考勤,指紋保管箱等。信息社會的到來,使指紋識別系統(tǒng)在身份認證方面有著廣闊的應用前景。
目前國內大多采用光學按壓式和晶體電容按壓式兩種指紋傳感器,兩者共同的缺點是體積較大,無法應用在體積較小的電子產品中。本文要介紹的是一款滑動式指紋識別模塊:TCS3C-TCD2A,它不要求用戶在驗證時按壓指紋,而只要將手指輕輕刷過傳感器表面,傳感器便能自動對手指進行連續(xù)的“快照”,然后這些快照被組合在一起,形成清晰的指紋影像。這種采集指紋的效果與按壓式指紋傳感器相當,但它無需用力按壓,使用更加方便。
1 TCS3C—TCD42A簡介
TCS3C-TCD42A是美國UPEK公司的產品(TouchStrip芯片組),其中TCS3C是—個長條狀的滑動式指紋傳感器。用于提取指紋圖像數(shù)據(jù)。TCD42A為高性能32位RISC芯片。為指紋處理和通信芯片,其內部有4K的非易失性(NVM)內存可供用戶存儲指紋信息。TCD42A集成了PeffectPrint算法捕獲手指滑過傳感器時的指紋數(shù)據(jù)后形成指紋圖像。該算法補償速度、平移、旋轉方面的變化,將其規(guī)格化為最優(yōu)質的指紋圖像,配合其集成的PerfectMatch指紋模板提取和匹配算法,使用戶能夠獲得可靠的指紋識別效果。TCD42A還具有和上位機通信的功能,用戶按照通信協(xié)議,可開發(fā)出功能強大的指紋識別應用系統(tǒng)。TCS3C和TCIM2A的實物圖如圖l所示。
TCS3C的特點如下:
(1)CMOS有源電容像點傳感技術;
(2)最大手指滑動速度:20cm/S;
(3)圖像灰度:8位;
(4)圖像分辨率:508dpi;
(5)體積:17,65x 5xl 87ram;
TCD2D42A的特點如下:
(1)32位RISC結構;
(2)處理速度可達96 MIPS;
(3)4KB的非易失性內存可供存儲指紋特征數(shù)據(jù);
(4)體積:lOxloxl 26 mnl;
(5)接口方式:UART和USB。
2 指紋識別系統(tǒng)構成
電路采用Atmega48單片機作為控制核心。Atmega48是一款8位微控制器,具有高性能、低功耗的顯著特點。由于采用RISC精簡指令集結構,其指令集大多為單周期指令,具有高速運行的特點。3V供電時。未使用內部看門狗的情況下,Atmega48的典型掉電電流小于luA,而且該單片機在1.8V一5.5V的電壓范圍內均能正常工作,片內自帶4K字節(jié)的flash、256字節(jié)的E2PROM,以及512字節(jié)SRAM并內置AD轉換器、看門狗、3個16位的定時/計數(shù)器。
Atmega48作為上位機負責和TCD42A的通信。由它下達指紋登錄、比對、刪除等命令給TCD42A。TCD42A返回結果給Atmega48,以便上位機及時給用戶提示,如LED閃爍、蜂鳴器蜂鳴、電機轉動等。指紋識別系統(tǒng)結構框圖如圖2所示:
TCS3C與TCD42A通過一條12Pin,0.Snlnl間隔的軟排線連接,TCD42A通過一條7Pin,0.Smm間隔的軟排線和單片機連接。TCD42A的U_TXl和U_RXl分別和Atmega48的RXD和TXD連接進行串口通訊。
由于TCD42A需要一個至少持續(xù)20ms的BREAK信號(持續(xù)的低電平)重啟,所以將Atmega48的PD4作為TCD42A的Wakeup信號。TCD42A被喚醒后,發(fā)送復位應答幀,表示已經可以通信了。TCD42A與單片機之間按照下面的通信協(xié)議進行通信。在實際應用中建議BREAK信號保持50ms以上。
3 通信協(xié)議
參照通訊網絡互聯(lián)的標準7層模式,TCS3C-TCD42A指紋識別模塊與上位機交互時,使用4層通信模型(參見表1)。
該模塊支持串u和USB口兩種通信方式。協(xié)議的字節(jié)順序為little_endian,即低地址存放最低有效字節(jié)(LSB)。TCD42A的UART是一個標準的通用異步收,發(fā)接口,此接口讓用戶進行指令發(fā)送和通訊。接口默認的通信速率為9600bps,根據(jù)需要,還可以設置為19200bps、38400bps、57600bps、115200bps、230400bps。
3.1 字節(jié)填充與字節(jié)替換
在此通信協(xié)議中,一些字符被保留為特殊用途,如XON/XOFF,DLE。STX除幀頭(Ox02)不需要特殊處理外,不論上位機還是模塊在發(fā)送數(shù)據(jù)前,均需對字符XON、XOFF、DLE、STX作字節(jié)填充。填充規(guī)則如表2所示。
和字節(jié)填充相反,上位機或模塊在收到數(shù)據(jù)后,除第一個字節(jié)(0x02)不需要處理外,對于特殊的2個字符要作字節(jié)替換。字節(jié)替換規(guī)則為字節(jié)填充的反變換。
3.2 鏈路層
鏈路層的幀格式如下所示:
STX+Header+Data+CRC
STX是—個字節(jié)(Ox02),是幀的開始標志。
Header的長度為3個字節(jié),其中:
Header:
Bits 0-3:幀類型,共有12中數(shù)據(jù)類型,如數(shù)據(jù)幀、請求等待時間擴展幀等;
Bits 4-7:保留,必須置為O;
Header:
Bits 0-2:數(shù)據(jù)長度高位(參見Header[2]);
Bit 3:保留,必須置為0;
Bits 4-7:為數(shù)據(jù)幀的模16計數(shù),系統(tǒng)復位后初始值為0,其他類型幀時將其置為0。
Header:數(shù)據(jù)長度低位,和Header[1]里的3位組成ll位的域。
Data:傳輸層和應用層數(shù)據(jù),在字節(jié)填充前最大長度為2047個字節(jié)。
CRC的長度為2個字節(jié),其值是對Header和Data的字節(jié)在進行字節(jié)填充前作CRC校驗得到的。CRC類型為依照CCI'VI\"V,41標準的CRCl6。特別要說明的是,若CRC的2個字節(jié)中出現(xiàn)了上述的特殊字符,在發(fā)送數(shù)據(jù)時也要進行字節(jié)填充。
3.3 傳輸層
傳輸層的第一包數(shù)據(jù)格式如下所示:
Header+Packet+Length+Data
Header占1個字節(jié),它的各位功能如表3所示。
Bit 4為1時表示此幀為傳輸層服務幀;
Bit 4為0時表示此幀不是傳輸層服務幀。
Packet Length:此為可選擇的2個字節(jié),它和來自Header的2位合起來表示應用層的長度;
Data:應用層的數(shù)據(jù)。
3.4 應用層
應用層的幀格式如下所示:
Tag+Data
Tag的長度為4個字節(jié),在此描述為32位的整型值,其中:
Bits 28-31:
(CL_COMMAND)0000:表示此為上位機要求模塊執(zhí)行命令;
(CL RESPONSE)0001:表示模塊對上位機命令的響應;
(CL_GUI_CALLBACK)0010:表示此為模塊的GUI回調包;
(CL_GUI_RESPONSE)0011:表示上位機對GUI回調包的響應。
Tag的剩余28位根據(jù)高4位的不同而具有不同的意義:
若高4位是CL COMMAND,則Bits 16-27為命令碼,其余位為0;
若高4位是CL_RESPONSE,則Bits 16-27為命令碼,Bits0-15為錯誤,狀態(tài)碼,狀態(tài)碼為0表示成功。
高4位是0010或0011時,Tag的其他位均為0。
3.5 具體數(shù)據(jù)包分析示例
若上位機發(fā)送列舉所有指紋命令給指紋識別模塊,實際發(fā)送的數(shù)據(jù)如下:
02 00 00 07 28 04 00 00 00 0D 10 03 FC 6A
具體數(shù)據(jù)意義分析如表4所示:
4 軟件設計
上位機的軟件開發(fā)采用IAR公司的IAR EmbeddedWorkbench V4,21 for Atmel AVR.它集成了開發(fā)嵌入式系統(tǒng)所需要的文件編譯、項目管理、鏈接和調試工具。IAR EmbeddedWorkbench系列適用于開發(fā)基于8位、16位、32位微處理器的嵌入式系統(tǒng),其集成開發(fā)環(huán)境具有統(tǒng)一的界面,為用戶提供了一個易學、易用的開發(fā)平臺。IAR公司提出了“不同架構,惟一解決方案”的理念,用戶可以針對多種不同的耳標處理器,在相同的集成開發(fā)環(huán)境中進行基于不同CPU的嵌入式系統(tǒng)程序開發(fā),有效地提高了工作效率,節(jié)省了工作時間。IAR一貫使用精簡的優(yōu)化技術,其生成的可執(zhí)行代碼的數(shù)量遠遠少于其他同類編譯器生成代碼的數(shù)量,可以運行于更小尺寸、更低成本的處理器上,從而降低產品的開發(fā)成本。
4.1 主程序
軟件程序包括主程序和中斷服務程序。采用模塊化設計方法,各模塊之間相對獨立,這樣可以使得程序結構清晰,便于今后進一步擴展系統(tǒng)的功能。主程序流程圖如圖3所示。其中初始化完成開中斷、設置定時器和串口、初始化驅動集成電路、指紋識別模塊復位等工作。電量檢測及處理模塊進行電池電量檢測,若電池電量不足發(fā)出報警聲音以提示用戶更換電池。程序根據(jù)用戶按下的登錄、驗證或刪除鍵由通信處理模塊進行不同的處理。若用戶在按下登錄或者驗證鍵后不作任何操作,程序在達到最大等待時間(10S)后將自動關機。蜂鳴器提示模塊、LED指示模塊將根據(jù)通信處理模塊的結果提示用戶操作結果。電機驅動模塊用于驅動電機,在等待2s后自動關機。
為了能讓單片機及時響應和控制指紋識別模塊,盡量減少通信所占用的CPU時間,筆者在設計單片機通信程序時。將通信程序分為接收中斷處理模塊和通信處理模塊2部分,并將這2個模塊巧妙地進行組合,從而構成整個單片機的通信程序。
4.2 接收中斷處理模塊
接收中斷處理模塊主要負責接收指紋識別模塊發(fā)送到單片機接收緩沖區(qū)的數(shù)據(jù),字節(jié)替換在此模塊內進行。單片機接收到規(guī)定的字符數(shù)后,置接收完畢標志,以表明接收緩沖區(qū)中有待處理的數(shù)據(jù)并請求通信處理模塊對其進行處理。接收中斷處理模塊流程圖如圖4所示。
4.3 通信處理模塊
通信處理模塊放在主程序中調用,根據(jù)用戶的按鍵不同,向指紋識別模塊發(fā)送不同的命令。發(fā)送的命令主要有列舉指紋用戶、登錄指紋、驗證指紋、刪除指紋等。特別要說明的是由于程序規(guī)定最大用戶數(shù)為10,所以在登錄指紋用戶前要先向指紋識別模塊發(fā)送列舉指紋用戶命令,只有在指紋用戶數(shù)小于最大用戶數(shù)時才可以登錄。由于此系統(tǒng)用于指紋保管箱,所以在驗證用戶也需要列舉用戶。如果指紋識別模塊內沒有指紋用戶的話,任何人都可以開箱(指紋保管箱在初始狀態(tài)下是沒有指紋用戶的,所以任何人都可以開箱)。
通信處理模塊負責向指紋識別模塊發(fā)送命令和響應來自模塊的數(shù)據(jù)包。串口發(fā)送采用查詢方式。筆者認為此處沒有必要采用中斷,因為程序的開銷是差不多的。在發(fā)送數(shù)據(jù)之前,要先對數(shù)據(jù)進行CRC校驗和字節(jié)填充。通信處理模塊在接收到指紋識別模塊送來的一串完整數(shù)據(jù)后,進行CRC校驗,在通過CRC校驗后根據(jù)不同的數(shù)據(jù)作出不同的響應。若超時沒有收到數(shù)據(jù)或者CRC校驗錯誤,則通信處理模塊重發(fā)命令或者響應幀。
指紋登錄時用戶至少需要在指紋傳感器上劃三次指紋,上位機控制LED提示用戶。指紋識別模塊對三次錄入的指紋綜合處理提取特征,生成指紋模板存于TC42A。如果用戶的指紋質量不好。則手指劃動次數(shù)會超過3次。為了提高登錄的成功率,程序沒有限制手指劃動的次數(shù),只要模塊端不上傳登錄失敗數(shù)據(jù)包,用戶可一直登錄,直到超過最大等待時間。
5 結束語
本文給出了單片機與指紋識別模塊之間進行異步串行通信的解決方案。此方案在實際使用過程中,運行穩(wěn)定,通信性能良好。從整個系統(tǒng)的設計可以看出:基于TCS3C-TCD42A的指紋識別模塊采用Atmega48作為上位機,具有體積小巧、價格低廉的特點。目前該系統(tǒng)已經成功應用于指紋保管箱產品中。本文提出的基于TCS3C-TCD42A的指紋識別系統(tǒng)是把采集、處理、控制于一身的系統(tǒng),可以做得很小,也適合用于防盜門、高檔的汽車門、汽車遙控器、手機、PDA等產品中。