介紹一種基于單片機和USB服務芯片PDIUSBD12的USB接口設計。該接口應用在嵌入式指紋識別系統中,用于嵌入式系統與計算機之間進行用戶指紋數據庫的上傳和下載。詳細介紹了USB接口的硬件設計和固件程序的實現。
在指紋自動識別系統中,嵌入式系統由于功耗低、設備體積小、安全性高等優點,已經得到越來越廣泛的應用。通用串行總線(USB)是由Inter、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機之間進行通信。其結構如圖系統新用戶注冊時,通過鍵盤輸入注冊ID,然后系統由DSP控制指紋傳感器采集用戶指紋數據。如果采集到有效指紋,經過DSP進行指紋處理得到指紋模板數據。系統將該指紋模板存入系統數據庫中。如果需要,也可以通過USB接口將用戶信息和對應模板都上傳至PC機中備份。當嵌入式系統數據丟失時,可以通過USB接口將PC機里所存備份下載至系統中。下面著重介紹系統的控制模塊和USB接口的設計。
2、系統控制模塊設計
系統控制模塊的核心處理器為P89C52,由于其接口有限,同時完成系統控制和USB接口控制將十分困難。而從系統成本、開發時間周期和繼承性方面考慮,換用其他處理器也不太方便,所以必須考慮在此處理器的基礎上完成多項任務。由指紋自動識別系統的特點來看,系統在完成指紋錄入或登錄后才需要利用USB接口完成指紋模板和登錄信息的傳輸,所以對于處理器來說,USB控制和系統控制可以采用時分復用的方式進行。由此,利用一個電平轉換芯片和一個8總線收發器來控制數據的選通及流向,以保證系統能夠正常工作。
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所提供的命令字來完成。最后剩下的就是硬件層上讀寫數據的程序實現。
其工作流程大致為:主循環完成一些初始化工作,轉入等待中斷的循環中;當USB總線上有事務發生時,PDIUSBD12將會自動產生相應的中斷來通知固件程序;然后固件程序轉入相應的中斷服務程序處理中斷,主循環通過讀取中斷服務程序中設定的事件標志和循環數據緩沖區來決定轉入相應的請求響應;響應程序通過再下層的PDIUSBD12命令接口程序控制PDIUSBD12完成相應數據或命令操作。此積木式結構的固件程序組合完成了USB接口設備從初始化到數據傳輸的全部USB活動。
本文根據USB1.1協議由其服務芯片PDIUSBD12和單片機P89C52完成了嵌入式指紋自動識別系統的USB接口硬件和固件程序的研究和開發,并結合上位PC機的驅動程序和應用程序為整個嵌入式系統提供了一個穩定性好、傳輸速度快、使用方便的USB接口。達到嵌入式系統與PC機之間靈活通信,使本嵌入式指紋自動識別系統得到了更廣范的應用。
責任編輯:gt
-
處理器
+關注
關注
68文章
19312瀏覽量
230033 -
單片機
+關注
關注
6037文章
44563瀏覽量
635872 -
嵌入式
+關注
關注
5085文章
19138瀏覽量
305696
發布評論請先 登錄
相關推薦
評論