電腦鍵盤工作原理
輔助設(shè)備(指 鍵盤) 檢查 時鐘線 ,如果時低電平,禁止發(fā)送數(shù)據(jù)
The auxiliary device checks the 'data' line. If the line is inactive, the controller receives data from the system.
設(shè)備檢查數(shù)據(jù)線,如果是 低電平,那么控制器從系統(tǒng)接收數(shù)據(jù)
The auxiliary device checks the 'clock' line during the transmission at intervals not exceeding 100 microseconds. If the device finds the system holding the 'clock' line inactive, the transmission is terminated. The system can terminate transmission anytime during the first 10 clock cycles.
設(shè)備在傳輸過程中 檢查 時鐘 線 間隔不超過100us。 如果設(shè)備發(fā)現(xiàn) 主機(jī)系統(tǒng) 將電平拉低,就終止傳輸。 在傳輸過程的前10個時鐘周期的任何時候,主機(jī)系統(tǒng)可以中止傳輸。
A final check for terminated transmission is performed at least 5 microseconds after the 10th clock.
終止傳輸?shù)淖詈笠粋€檢查 要持續(xù)至少5us
The system can hold the 'clock' signal inactive to inhibit the next transmission.
系統(tǒng)拉低時鐘線,將禁止下一次傳輸
The system can set the 'data' line inactive if it has a byte to transmit to the device. The 'data' line is set inactive when the start bit (always 0) is placed on the 'data' line.
系統(tǒng)如果有一個字節(jié)要傳輸給設(shè)備,可以拉低數(shù)據(jù)線。當(dāng)開始位(總是0)放置到數(shù)據(jù)線時,數(shù)據(jù)線被拉低。
The system raises the 'clock' line to allow the next transmission.
系統(tǒng)拉高時鐘將允許下一次傳輸
Host-to-Device主機(jī)到設(shè)備的通信
First of all, the PS/2 device always generates the clock signal.
首先,PS/2設(shè)備總是產(chǎn)生時鐘信號
If the host wants to send data, it must first put the Clock and Data lines in a "Request-to-send" state as follows:
如果主機(jī)想發(fā)送數(shù)據(jù),它必須先將時鐘線和數(shù)據(jù)線設(shè)置成"Request-to-send"狀態(tài):
1) Inhibit communication by pulling Clock low for at least 100 microseconds.
拉低時鐘線至少100us來禁止通信
2) Apply "Request-to-send" by pulling Data low, then release Clock.
拉低數(shù)據(jù)線,請求 "Request-to-send", 然后釋放時鐘 .
The device should check for this state at intervals not to exceed 10 milliseconds.
設(shè)備應(yīng)該在不超過10ms(注意,是毫秒)的間隔內(nèi)就要檢查一次這個狀態(tài)。
When the device detects this state, it will begin generating Clock signals and clock in eight data bits and one stop bit.
當(dāng)設(shè)備檢測到這個狀態(tài),它將開始產(chǎn)生時鐘信號,
The host changes the Data line only when the Clock line is low, and data is read by the device when Clock is high.
只有當(dāng)時鐘線 為低的時候,主機(jī)才可以改變數(shù)據(jù)線(也就是將數(shù)據(jù)寫入到數(shù)據(jù)線)。數(shù)據(jù)將在時鐘為高電平的時候 被 設(shè)備讀取。
After the stop bit is received, the device will acknowledge the received byte by bringing the Data line low and generating one last clock pulse.
在收到停止位之后,設(shè)備將通過拉低數(shù)據(jù)線,生成最后一個時鐘脈沖 來 應(yīng)答收到的字節(jié)
If the host does not release the Data line after the 11th clock pulse, the device will continue to generate clock pulses until the the Data line is released (the device will then generate an error.)
在第11個時鐘脈沖之后,如果主機(jī)并沒有釋放數(shù)據(jù)線,設(shè)備將繼續(xù)產(chǎn)生時鐘脈沖,直到數(shù)據(jù)線被釋放(然后 設(shè)備將產(chǎn)生一個錯誤)
The host may abort transmission at time before the 11th clock pulse (acknowledge bit) by holding Clock low for at least 100 microseconds.
在第11個脈沖之前(回應(yīng)位),主機(jī)可以隨時中止傳輸,只要拉低時鐘持續(xù)100us即可
|
T9 == Time from inactive to active CLK transition, used to time when the auxiliary device samples DATA
FreeScale(Moto)提供的時序圖
主機(jī)到鍵盤的數(shù)據(jù)傳輸
1.主機(jī) 通過拉低 時鐘線 來 啟動一個主機(jī)到鍵盤的數(shù)據(jù)傳輸。大約35us后,主機(jī)拉低數(shù)據(jù)線
。這個事件序列 就是 通知 鍵盤,主機(jī)要傳輸一個命令了。在數(shù)據(jù)信號的下降沿大約 125us 后 時鐘信號釋放,就被鍵盤內(nèi)部的上拉電阻拉為高電平 。
2. 在時鐘信號的上升沿 約 1ms ,數(shù)據(jù)傳輸開始。這個期間,數(shù)據(jù)線保持低電平。鍵盤拉低時鐘線,clocking in the low data line. 這個就做傳輸?shù)钠鹗嘉弧?BR>
3. 鍵盤用時鐘驅(qū)動 8個數(shù)據(jù)位從主機(jī)傳輸?shù)阶约哼@邊。 這個時鐘有50%的占空比(duty cycle).高電平和低電平的時間都在30~50us之間。主機(jī)在每個周期的低電平的時候改變數(shù)據(jù)線上的數(shù)據(jù)。在每個時鐘的上升沿5~25us之后鍵盤 開始從數(shù)據(jù)線上取樣,取出主機(jī)發(fā)來的數(shù)據(jù)。
4.數(shù)據(jù)位之后是一個奇偶校驗位(采用奇校驗)
5.最后是停止位
6.如果鍵盤讀到一個高電平的停止位,鍵盤就在 取樣停止位的那個時鐘的下降沿 之后的低電平期間 拉低數(shù)據(jù)線。這個行為叫做 鍵盤給主機(jī)的應(yīng)答信號。
鍵盤拉高時鐘之后,也拉高數(shù)據(jù)線。
7.在收到一個字節(jié)后,鍵盤對接收的數(shù)據(jù)執(zhí)行一個奇偶校驗。如果奇偶校驗錯誤,或者接收的數(shù)據(jù)無法識別為有效的命令,那么鍵盤請求重新發(fā)送(發(fā)送0xFE給主機(jī))
1. 鍵盤發(fā)送數(shù)據(jù)前,首先必須讓時鐘 和數(shù)據(jù)線都在鍵盤內(nèi)部的上拉電阻作用下 拉成高電平。然后鍵盤拉低數(shù)據(jù)線,5-25us之后,鍵盤拉低時鐘線。在時鐘的下降沿,開始傳輸起始位The falling edge of the clock line clocks in the transfer’s start
bit.
2. 鍵盤用時鐘驅(qū)動 8個數(shù)據(jù)位到主機(jī)。 這個時鐘有50%的占空比(duty cycle).高電平和低電平的時間都在30~50us之間。鍵盤在每個周期的高電平的時候改變數(shù)據(jù)線上的數(shù)據(jù)。這個改變出現(xiàn)在時鐘的上升沿的5us后 和 下降沿的5us前。鍵盤的數(shù)據(jù)在時鐘的下降沿被鎖存進(jìn)主機(jī)。
3.數(shù)據(jù)位之后是一個奇校驗位
4.最后是停止位。在時鐘的下降沿 0~50us之間 主機(jī)拉低時鐘 來鎖存停止位。這就告訴鍵盤主機(jī)現(xiàn)在忙,不能在接收 其他的鍵盤傳輸數(shù)據(jù)。在處理完接收的數(shù)據(jù),準(zhǔn)備好接收下一個數(shù)據(jù)之前,主機(jī)釋放時鐘。
6.在鍵盤傳輸數(shù)據(jù)到主機(jī)的過程中,主機(jī)任何時候都可以中斷這個傳輸,發(fā)送一個命令到鍵盤。主機(jī)拉低時鐘和數(shù)據(jù)線 即可中止傳輸。所以,鍵盤在時鐘為 低電平的時候必須取樣數(shù)據(jù)線。(無論什么時候輸出高數(shù)據(jù)位的時候)。在產(chǎn)生時鐘的上升沿時,必須讀取時鐘。
在任何時候發(fā)現(xiàn)這兩個條件不滿足,就拉高時鐘和數(shù)據(jù)線,放棄這次傳輸,并準(zhǔn)備從 主機(jī)接收命令。
Moto 香港公司的 Derek Lau
當(dāng)時鐘 高電平是,發(fā)送給主機(jī)的數(shù)據(jù)被主機(jī)讀取。在空閑狀態(tài),時鐘和數(shù)據(jù)線都被拉為高電平。主機(jī) 拉低 時鐘最少100ms(?還是us)開始發(fā)送數(shù)據(jù)給鍵盤:
1.主機(jī)等待,直到?jīng)]有外部設(shè)備傳輸被處理
2.主機(jī) 拉低時鐘
3.主機(jī)拉低數(shù)據(jù)作為開始位
4 .主機(jī)釋放時鐘
5.設(shè)備拉低時鐘
6.主機(jī)發(fā)送數(shù)據(jù)
7.設(shè)備釋放時鐘,讀取數(shù)據(jù)
8.設(shè)備檢查時鐘線,如果時鐘為低,中止傳輸
9.重復(fù) 5-7步,發(fā)送 數(shù)據(jù)1-到數(shù)據(jù)0,以及 奇校驗位
10. 設(shè)備拉低時鐘
11. 主機(jī)釋放數(shù)據(jù)
12.設(shè)備時鐘時鐘
13.設(shè)備讀取數(shù)據(jù)線,想得到停止位,如果數(shù)據(jù)線為低(不是停止位),產(chǎn)生錯誤
14.設(shè)備拉低 時鐘和數(shù)據(jù)線
15.設(shè)備釋放 時鐘和數(shù)據(jù)線
從設(shè)備發(fā)送到主機(jī)的數(shù)據(jù),在時鐘的下降沿被讀取。在發(fā)送數(shù)據(jù)前,設(shè)備檢查通過檢測時鐘信號為高來得知 主機(jī)是否貯備好:
1.鍵盤(設(shè)備)等待時鐘為高(約50ms?us)
2.如果數(shù)據(jù)為 低,終止
3.鍵盤 發(fā)送數(shù)據(jù)
4.鍵盤拉低時鐘為低
5.鍵盤釋放時鐘為高
6.鍵盤 讀取時鐘線,如果時鐘為低,中止傳輸
7.重復(fù) 4-6步,傳輸數(shù)據(jù)0-數(shù)據(jù)7,
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
評論