嵌入式指紋自動識別系統USB介面的設計與實現
| [日期:2008-7-21] |
來源:電子技術應用 作者:顏浩洋,李見為,顏永龍 |
[字型:大 中 小] |
在指紋自動識別系統中,嵌入式系統由於功耗低、裝置體積小、安全性高等優點,已經得到越來越廣泛的應用。通用序列匯流排(USB)是由Intel、Microsoft、IBM和NEC等共同制定的微機匯流排介面規範,具有較高的傳輸速率(USB 1.1支援最高傳輸速度為12Mb/s,而USB 2.0的傳輸速度最高可達到480Mb/s),支援隨插即用,佔用系統資源少,擴充能力強。在嵌入式系統的應用中,幾乎不可避免與PC機的通訊,由於通訊速度的要求以及電腦硬體高速發展,傳統的RS232介面已經越來越不能滿足使用者的需求,所以在嵌入式系統中USB介面的實現勢在必行。
1 嵌入式指紋自動識別系統
本文所介紹的嵌入式指紋自動識別系統採用DSP與單片機協同工作,以實現指紋自動識別以及使用者服務系統。其中單片機選用Philps公司的P89C52,DSP處理器選用TI公司的TMS320C5416。單片機具有系統控制能力強、結構簡單、擴充方便等特點,適合作為系統的控制核心;而DSP採用的增強型哈佛結構、多級流水線、多處理單元以及特殊的指令(乘加指令等),使得DSP具有強大的資料處理能力,並且TMS320C5416支援最高160MHz的時鐘頻率,基於其強大資料處理能力和高運行速度,所以將它作為系統的演算法核心處理器。由單片機為核心的控制模組主要完成使用者服務系統和系統通訊介面,由DSP為副處理器的演算法模組完成指紋採集和處理。使用者通過鍵盤輸入控制整個系統的工作流程,通過LCD瞭解系統的工作狀態及處理結果。DSP由其HPI(主機介面)與單片機以中斷方式進行通訊。而整個系統通過USB介面與上位PC機之間進行通訊。其結構1。
系統新使用者註冊時,通過鍵盤輸入註冊ID,然後系統由DSP控制指紋感應器採集使用者指紋資料。如果採集到有效指紋,經過DSP進行指紋處理得到指紋模板資料。系統將該指紋模板存入系統資料庫中。如果需要,也可以通過USB介面將使用者資訊和對應模板都上傳至PC機中備份。當嵌入式系統資料丟失時,可以通過USB介面將PC機裡所存備份下載至系統中。下面著重介紹系統的控制模組和USB介面的設計。
2 系統控制模組設計
系統控制模組的核心處理器為P89C52,由於其介面有限,同時完成系統控制和USB介面控制將十分困難。而從系統成本、開發時間周期和繼承性方面考慮,換用其他處理器也不太方便,所以必須考慮在此處理器的基礎上完成多項任務。由指紋自動識別系統的特點來看,系統在完成指紋錄入或登入後才需要利用USB介面完成指紋模板和登入資訊的傳輸,所以對於處理器來說,USB控制和系統控制可以採用時分複用的方式進行。由此,利用一個電平轉換晶片和一個8匯流排收發器來控制資料的選通及流向,以保證系統能夠正常工作。具體實現2。
SN74ALVC164245為5V~3.3V電平轉換晶片,負責控制單片機與DSP之間的資料流向以及電平轉換。因為單片機的IO電平為5V,而DSP的IO電平為3.3V,所以必須進行電平轉換。另外,SN74ALVC164245的OE和DIR腳聯合控制資料的流向,當OE為高時,晶片兩邊的資料互相獨立;當OE為低時,通過DIR的狀態來控制資料的流向。74HC245為匯流排傳輸器,用來控制單片機同LCD控制晶片KS0108的資料通訊,其工作原理與SN74ALVC164245類似,只是沒有電平轉換功能。同樣,USB服務晶片通過SUSPEND管腳來使能資料線,將SUSPEND腳置高電平時,整個PDIUSBD12處於休眠狀態。由此,單片機就可以通過控制引腳的狀態來控制資料匯流排,以實現單片機資料匯流排的時分複用。
3 系統USB介面設計
3.1 USB介面硬體設計
USB介面硬體主要以介面晶片PDIUSBD12為中心,設計它與USB物理介面以及微控制器之間的串連。介面模組通過跳線選擇供電方式,可同時支援USB匯流排供電方式和外設供電方式,為全速USB裝置介面。設計過程中充分考慮到可靠性、可測性以及電磁相容性。其介面電路3所示。
介面電路供電通過撥盤開關K1選擇,當K1接MVCC時,系統為自供電方式;當K1接UVSB時,為匯流排供電方式。當系統處於自供電方式情況下,系統通過EOT_N引腳來檢測VUSB是否存在,並接上一個1M?贅的放電電阻來減弱充電,以確保當VUSB移開時EOT_N變為低,並且此時自供電電源與USB匯流排之間只能共地,同時裝置不能通過USB口向VBNS輸出電流。
在單片機與PDIUSBD12的控制通訊方面,單片機通過對PDIUSBD12的A0腳的狀態控制來指示並行資料匯流排P0上傳輸內容為命令還是資料。此時,PDIUSBD12上用於資料地址匯流排複用的ALE引腳一直接地。中斷引腳INT_N是系統的關鍵,幾乎所有USB的活動在裝置介面端都是由PDIUSBD12接收,然後通過中斷通知單片機完成。PDIUSBD12上的掛起SUSPEND為一個雙向引腳,由此保證USB裝置既能被裝置主控(單片機)也能被上位PC機喚醒,而PDIUSBD12工作時連續3次沒有檢測到SOP就將掛起腳置高。
PDIUSBD12片上GL_N引腳通過外接發光二極體來指示系統工作狀態,在USB枚舉過程中,LED指示根據通訊狀況間歇閃爍;當PDIUSBD12成功枚舉和配置後,LED指示將一直點亮;隨後與PDIUSBD12之間成功地傳輸(帶應答)將關閉LED;處於掛起狀態時LED將會關閉。
片上時鐘發生電路採用6MHz晶振,匹配一個22pF和一個68pF的無源電容。採用6MHz晶振也是為了降低產品製造過程中產生EMI(電磁幹擾效應)的風險,因為外部線路的頻率越高,其EMI效應也會越強,而在片外電路採用較低頻率並在晶片內部進行倍頻的措施將既不影響晶片的處理速度,又能提高在外部布線的安全性。使用兩個不同容值電容的目的是為了使晶體能夠快速起振,經過測量,晶振的啟動時間在2ms左右。
PDIUSBD12可採用5V和3.3V兩種工作電壓。由於主控單片機的IO電壓為5V,所以對PDIUSBD12也使用5V的工作電壓。此時在接入5V至PDIUSBD12 VCC腳的同時,要將PDIUSBD12上的VOUT腳空出,接去耦電容。另外,為了減小系統的EMI,在USB連接器輸入側的VBUS和地線上增加磁珠,3的BLM21P,並且在USB的屏蔽罩與地之間使用容性耦合。
由於USB通訊協定的複雜性,相當一部分工作由硬體電路來完成,所以對硬體電路設計的準確性要求非常嚴格,布線要合理要盡量減少分布電容和電磁幹擾的影響,硬體電路的品質將直接影響到資料能否正常傳輸。
3.2 USB裝置韌體程式的開發
韌體程式主要由主程式和中斷服務程式組成。USB裝置請求包括標準裝置請求和廠商請求。標準裝置請求用來完成USB裝置枚舉的命令,而廠商請求則是根據具體USB裝置來完成特殊任務的命令。對於本文採用的USB服務晶片PDIUSBD12,其片內的SIE(串列介面引擎)實現了全部的USB協議層,且完全由硬體實現而不需要韌體的參與,所以對於USB韌體程式來說,USB協議的具體實現就可以根據PDIUSBD12所提供的命令字來完成。最後剩下的就是硬體層上讀寫資料的程式實現。其總體結構4。
其工作流程大致為:主迴圈完成一些初始化工作,轉入等待中斷的迴圈中;當USB匯流排上有事務發生時,PDIUSBD12將會自動產生相應的中斷來通知韌體程式;然後韌體程式轉入相應的中斷服務程式處理中斷,主迴圈通過讀取中斷服務程式中設定的事件標誌和迴圈資料緩衝區來決定轉入相應的請求響應;響應程式通過再下層的PDIUSBD12命令介面程式控制PDIUSBD12完成相應資料或命令操作。此積木式結構的韌體程式組合完成了USB介面裝置從初始化到資料轉送的全部USB活動。
本文根據USB1.1協議由其服務晶片PDIUSBD12和單片機P89C52完成了嵌入式指紋自動識別系統的USB介面硬體和韌體程式的研究和開發,並結合上位PC機的驅動程式和應用程式為整個嵌入式系統提供了一個穩定性好、傳輸速度快、使用方便的USB介面。達到嵌入式系統與PC機之間靈活通訊,使本嵌入式指紋自動識別系統得到了更廣範的應用。
參考文獻
[1] Philps.PDIUSBD12 Datasheet.http://www.21icsearch.com/searchpdf/default.asp?admin=.
[2] Walter Oney.Programming the Microsoft Windows Driver Model[M].Microsoft Press,1999.
[3] Compaq,Intel,Microsoft,NEC.Universal serial bus specification Revision 1.1.http://www.8easy.cn/Soft_Show.asp?SoftID=91.
[4] 夏瑋瑋.嵌入式系統關鍵技術分析與開發應用,2003,2.
[5] PDIUSBD12韌體編程指南.http://www.zlgmcu.com.
[6] 王朔,李剛.USB介面器件PDIUSBD12的介面應用設計,天津:天津大學.