ARM7實現(xiàn)指紋考勤系統(tǒng)硬件設計
刷卡采集選用的是MTP-125K4模塊,并選擇ASCII方式以及固定的9600bps輸出RS232數(shù)據(jù),感應距離為30cm,其輸出數(shù)據(jù)端口直接連接CPU的串口1接收端即可。輸出的數(shù)據(jù)格式為頭碼(02)+10ASCII數(shù)據(jù)+Checksum校驗碼+結束碼(03),事實上我們只需存儲10位數(shù)據(jù)信息中的4位卡號。具體電路如圖3所示。
電源管理
電源管理部分采用了1150mAh的LI電,通過DC-DC升壓至5V,再通過LDO給系統(tǒng)所需要的3.3V和2.5V電壓。其中DC-DC是LT1308A芯片,LDO采用AMS1117-3.3V和AMS1117-2.5V,可以為系統(tǒng)提供穩(wěn)定的電壓供給。
圖4是電源開關控制部分電路,功能為實現(xiàn)USB和電池供電的切換。當未插入USB時采用電池供電,而連接時系統(tǒng)采用USB供電。S9為總電源開關。具體的實現(xiàn)過程為:電池供電時,開關S9按下,TEST1點由高變低,Q0導通,NAND網絡為高,系統(tǒng)開始供電,此時程序運轉并給與SHDN引腳高電平信號,促使Q6導通,此時即使按鍵抬起TEST1點仍為低電平,維持Q0的導通。當插上USB后,按鍵的按下使得Q4導通,Q0此時截至,系統(tǒng)由電池供電切換為USB供電,其它道理相同。關機時按鍵按下,Power_DET網絡檢測電平由高變低,給予SHDN低電平,Q6截至,按鍵抬起后無論是Q0還是Q4均截至,系統(tǒng)斷電。
系統(tǒng)軟件設計
軟件部分除了CPU的底層初始化部分采用ARM匯編,其余全部用C語言編寫。
程序初始化后進入低功耗模式,等待各種具體操作。當有指紋采集時,就進入指紋數(shù)據(jù)采集和處理模塊,處理結束后,又重新退回低功耗等待模式,等待其他操作。同理,當有讀卡數(shù)據(jù)或者時鐘設置響應時,便進入相應的操作模塊進行處理。值得注意的是,系統(tǒng)有兩種關機方式。一種是通過手動關機,另一種則通過系統(tǒng)定時器定時到后自動關機。
圖像數(shù)據(jù)讀取
根據(jù)前面的分析,圖像數(shù)據(jù)的采集采用的是DMA方式的單步模式。初始化時,除了設置單步模式外,還需要將DMA讀取的源地址設為鎖存器上的片選地址,目的地址則是存儲數(shù)據(jù)的緩存地址;數(shù)據(jù)的大小設置為一幀數(shù)據(jù)的大小,這里為480×640字節(jié)。
在讀取數(shù)據(jù)過程中,系統(tǒng)首先檢測幀同步信號,以確定一幀的開始,然后等待傳感器發(fā)出的DMA請求(與非門輸出低電平)。當接收到請求后,便按DMA的方式傳輸數(shù)據(jù),每接收一個字節(jié),相應的用于指示剩余字節(jié)數(shù)的寄存器的值便會減一,直至減到零,表示數(shù)據(jù)接收完畢。
讀卡
考慮到刷卡的隨機性,決定采用中斷的方式來讀取數(shù)據(jù)。即通常情況下,系統(tǒng)是在低功耗下等待;當有刷卡時,跳出低功耗并讀取數(shù)據(jù)。
整個讀取過程就是對串口通信的操作過程。當有數(shù)據(jù)進來時,串口模塊會產生一個中斷。因此在相應的中斷響應便可以讀取這一數(shù)據(jù),直至數(shù)據(jù)完整讀取;所讀取的數(shù)據(jù)中有一個校驗和,可以幫助驗證數(shù)據(jù)的正確性。
結語
評論