PS2滑鼠實驗

2021-10-08 16:26:58 字數 2985 閱讀 9435

返校有幾天了,底盤驅動還在研究。第一次接觸這麼多陌生的**,感覺還是有點吃不消的,慢慢弄吧,順便把基礎再補補。

ps/2 簡介

ps/2 是電腦上常見的介面之一,用於滑鼠、鍵盤等裝置。一般情況下,ps/2 介面的滑鼠為

綠色,鍵盤為紫色。

ps/2 介面是輸入裝置介面,而不是傳輸介面。所以 ps2 口根本沒有傳輸速率的概念,只有

掃瞄速率。在 windows 環境下,ps/2 滑鼠的取樣率預設為 60 次/秒,usb 滑鼠的取樣率為 120

次/秒。較高的取樣率理論上可以提高滑鼠的移動精度。

物理上的 ps/2 埠可有 2 種,一種是 5 腳的,一種是六腳的。下面給出這兩種 ps/2 介面

的引腳定義圖,如圖 30.1.1 所示:

從圖 30.1.1 可以看出,不管是 5 腳還是 6 腳的 ps/2 接頭,都是有 4 根有用的線連線:時鐘線、資料線、電源線、地線。ps/2 裝置的電源是 5v 的,而資料線和時鐘線均是集電極開路的,這兩根訊號線都需要接乙個上拉電阻(開發板上使用的是 10k)。

ps/2 滑鼠和鍵盤遵循一種雙向同步序列協議,換句話說每次資料線上傳送一位資料並且每在時鐘線上發乙個脈衝就被讀入。鍵盤/滑鼠可以傳送資料到主機,而主機也可以傳送資料到裝置,但主機總是在匯流排上有優先權,它可以在任何時候抑制來自於鍵盤/滑鼠的通訊,只要把時鐘拉低即可。

裝置到主機的資料在時鐘訊號的下降沿被主機讀取,而從主機到裝置的資料在時鐘訊號的上公升沿被裝置讀取。不論通訊方向如何,時鐘總是由裝置產生的,最大的時鐘頻率為 33khz,大多數裝置工作在 10~20khz。

滑鼠鍵盤,採用的是一種每幀包含 11/12 位的序列協議,這些位的含義如表 30.1.1 所示:

表 30.1.2 中校驗位的含義是:如果資料位中包含偶數個 1,則校驗位為 1;如果資料位中

包含奇數個 1,則校驗位為 0。資料位中的 1 的個數加上校驗位總為奇數(奇校驗),用於資料除錯。當主機傳送資料給鍵盤/滑鼠的時候,裝置會傳送乙個握手訊號來應答資料已經被收到了,該位不會出現在裝置到主機的通訊中。

裝置到主機的通訊過程:

正常情況下資料線和時鐘線都是高電平,當鍵盤/滑鼠有資料要傳送時,它先檢測時鐘線,

確認時鐘線是高電平。如果不是,則是主機抑制了通訊,裝置必須緩衝任何要傳送的資料,直到重新獲得匯流排的控制權(鍵盤有 16 位元組的緩衝區而滑鼠的緩衝區僅儲存最後乙個要傳送的資料報)。如果時鐘線是高電平,裝置就可以開始傳送資料了。

(要先檢測時鐘線是否為高電平才能進行資料傳輸,再判斷為高電平後,時鐘匯流排再拉低才能接受裝置傳來的資料)

裝置到主機的資料在時鐘線的下降沿被主機讀入,如圖 30.1.2 所示:

主機可以在裝置傳送資料的時候拉低時鐘線來來放棄當前資料的傳送。

主機到裝置的通訊過程:

主機到裝置的通訊與裝置到主機的通訊有點不同,因為 ps/2 的時鐘總是由裝置產生的,如

果主機要傳送資料,則它必須首先把時鐘線和資料線設定為請求傳送狀態。請求傳送狀態通過

如下過程實現:

1.拉低時鐘線至少 100us 以抑制通訊。(拒絕裝置向主機的傳輸)

2.拉低資料線,以應用「請求傳送」,然後釋放時鐘線。(訊號)

裝置在不超過 10ms 的時間內就會檢測這個狀態,當裝置檢測到這個狀態後,它將開始產生

時鐘訊號,並且在裝置提供的時鐘脈衝驅動下輸入八個資料位和乙個停止位。主機僅當時鐘線為低的時候改變資料線,而資料在時鐘脈衝的上公升沿被鎖存,這與發生在裝置到主機通訊的過程中正好相反。

主機到裝置的通訊時序圖如圖 30.1.3 所示:

標準的 ps/2 滑鼠支援下面的輸入:x(左右)位移、y(上下)位移、左鍵、中鍵和右鍵。

但是我們目前用到滑鼠大都還有滾輪,有的還有更多的按鍵,這就是所謂的 intellimouse。它支援 5 個滑鼠按鍵和三個位移軸(左右、上下和滾輪)。

標準的滑鼠有兩個計數器保持位移的跟蹤:x 位移計數器和 y 位移計數器。可存放 9 位

的 2 進製補碼,並且每個計數器都有相關的溢位標誌。它們的內容連同三個滑鼠按鈕的狀態一起以三位元組移動資料報的形式傳送給主機,位移計數器表示從最後一次位移資料報被送往主機後所發生的位移量。

標準 ps/2 滑鼠傳送唯一和按鍵資訊以 3 位元組的資料報格式發給主機,三個資料報的意義如

圖 30.1.4 所示:

位移計數器是乙個 9 位 2 的補碼整數,其最高位作為符號位出現在位移資料報的第乙個字

節裡。這些計數器在滑鼠讀取輸入發現有位移時被更新。這些值是自從最後一次傳送位移資料報給主機後位移的累計量(即最後一次包發給主機後位移計數器被復位位移計數器可表示的值的範圍是-255 到+255)。如果超過了範圍,相應的溢位位就會被置位,並在復位之前,計數器不會再增減。

而所謂的 intellimouse,因為多了 2 個按鍵和乙個滾輪,所以 intellimouse 的乙個位移資料

包由 4 個位元組組成,如圖 30.1.5 所示:

z0-z3 是 2 的補碼,用於表示從上次資料報告以來滾輪的位移量。有效範圍從-8 到+7,第

四鍵如果按下,則 4th btn 位被置位,如果沒有按下,則 4th btn 位為 0。第五鍵也與此類似。

微軟智慧型PS2滑鼠識別

標準的ps 2滑鼠支援下面的輸入x左右位移,y上下位移,左鍵 中鍵和右鍵。滑鼠以乙個固定的頻率讀取這些輸入並更新不同的計數器然後標記出反映的移動和按鍵狀態,而microsoft的intellimouse它既支援標準輸入也支援滾輪和兩個附加的按鍵。標準的ps 2滑鼠傳送位移和按鍵資訊給主機採用如下的3...

PS 2鍵盤原理

11.4 鍵盤原理 早期的鍵盤實際上是一種5pin的鍵盤,稱作at鍵盤,是1984年ibm pc的標準鍵盤。在1987年ibm進行了改進,從而變成了現在的ps 2鍵盤。當按下乙個鍵或釋放乙個鍵,鍵盤都會傳送鍵盤掃瞄碼到主機。比如按下a,鍵盤就會傳送0x1c到主機。如果持續按a,當經過乙個給定時間後,...

ps2協議命令

define ps2 reset 0xff 復位命令 回應0xfa define resend 0xfe 再次傳送 define set default 0xf6 使用預設設定 回應0xfa define dis data report 0xf5 禁用資料報告 回應0xfa define en da...