嚴成武
摘 要:本文介紹了一種實用的利用單片機來實現(xiàn)U+P鼠標接口判斷的方法。首先分析電腦的USB接口和PS/2接口在電氣上的區(qū)別,并根據(jù)這種區(qū)別,給出利用單片機判斷這兩種接口的方案。
關(guān)鍵詞:單片機;PS/2接口;USB接口;接口判斷
U+P鼠標如圖1,可直接用在USB接口;經(jīng)過圖2的轉(zhuǎn)接頭(USB轉(zhuǎn)PS/2),也可以用在PS/2接口上。它能自動識別是插在了USB接口還是PS/2接口,如果是插到了USB接口,則進行USB初始化,然后按照USB協(xié)議與電腦通信;如果是插到了PS/2接口,則進行PS/2初始化,然后按照PS/2協(xié)議與電腦通信。本文將重點討論:電腦的USB接口與PS/2接口的硬件特性,以及利用單片機判斷的方法。
1、電腦USB接口與PS/2接口的硬件特性。
1.1、USB接口硬件特性。
電腦USB接口與外設(shè)的連接有4根線,分別為VCC,D-, D+,GND。其中VCC為電源正極(+5V),GND為電源負極,D-,D+為信號線。在電腦內(nèi)部,D-、D+各有一個15K的下拉電阻。當沒有接外設(shè)時,因15K下拉電阻的存在,D-、D+均為低電平。
根據(jù)USB協(xié)議,只要外設(shè)的電路不改變D-、D+的低電平狀態(tài),則電腦會一直保持這種狀態(tài),即:D-、D+保持低電平。
2,PS/2接口硬件特性。
電腦PS/2接口與外設(shè)的連接有6根線,但只用了4根線,分別為VCC,數(shù)據(jù)(DATA), 時鐘(CLK),GND。其中VCC為電源正極(+5V),GND為電源負極,DATA為數(shù)據(jù)線,CLK為時鐘線。在電腦內(nèi)部,DATA、CLK各有一個約5K的上拉電阻。當沒有接外設(shè)時,在正常狀態(tài)下,因5K上拉電阻的存在,DATA、CLK均為高電平。如果鍵盤PS/2接口有通信時,電腦會在鼠標PS/2接口的CLK線上輸出一個低電平,但DATA仍保持高電平。如果電腦在禁止PS/2接口時,也會在CLK上一直輸出低電平,禁止通信。
根據(jù)PS/2協(xié)議,只要外設(shè)的電路不改變DATA、CLK的電平狀態(tài),則電腦會一直保持它原來的狀態(tài),即:CLK正常為高電平,另一個PS/2接口有通信或禁止接口時,為低電平;DATA一直保持高電平。
2、兩種接口的連接關(guān)系。
當U+P鼠標通過轉(zhuǎn)接頭接到PS/2接口上時,U+P鼠標的四根線可定義為:VCC,D-/DATA,D+/CLK,GND。
3、接口判斷方法。
根據(jù)兩個接口以上的硬件特性,在鼠標上電時,通過判斷D-/DATA,D+/CLK的電平,即可判斷出是哪個接口。在D-/DATA、D+/CLK上接500K的上拉電阻是為了防止接觸不良時,D-/DATA、D+/CLK不會處在懸空狀態(tài)。
如果接到了USB接口,雖然D+、D-有500K的上拉電阻,但電腦內(nèi)部有15K的下拉電阻,D+、D-還是低電平。
如果接到了PS/2接口,DATA上都是上拉電阻,而且根據(jù)PS/2協(xié)議,電腦不會主動輸出低電平,所以肯定為高電平;CLK上也都是上拉電阻,正常也為高電平,只是在另一個PS/2接口有通信或禁止接口時,為低電平。
具體電路如圖3,判斷步驟如下:
①當接口判斷電路接到電腦的USB接口(或PS/2接口)時,51單片機從VCC,GND上得電,上電復位后,延時500MS,等待接口接觸良好。
②讀D-/DATA(P0.0)、D+/CLK(P0.1)的狀態(tài)。
③如果P0.0、P0.1均為低電平,則初步認為是USB接口;每隔1MS讀一次P0.0、P0.1,如連續(xù)20次均保持這種狀態(tài),則確認為USB接口。否則重新回到2。
④如果P0.0為高電平,不管P0.1為高電平還是低電平,都認為是PS/2接口;每隔1MS讀一次P0.0、P0.1,如連續(xù)20次均保持這種狀態(tài),則確認為PS/2接口。否則重新回到2。
4、結(jié)束語
這種方法經(jīng)過上萬次的測試,均能正確判斷接口;2007年用在了公司的U+P鼠標產(chǎn)品上,并批量生產(chǎn),直到現(xiàn)在,客戶沒有這方面的投訴。
參考文獻:
[1]《單片機原理與應用技術(shù)》,付曉光編著,清華大學出版社,2008年修訂。
[2]《單片微型計算機》,徐惠民,安德寧編著,北京郵電學院出版社。