<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > PS/2接口協(xié)議解析及應用

PS/2接口協(xié)議解析及應用

作者: 時(shí)間:2004-12-07 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:文中詳細介紹了/2協(xié)議的內容、電氣特性和標準鍵盤(pán)的第二套鍵盤(pán)掃描碼集。給出了基于嵌入式系統的/2的軟、硬件實(shí)現方法,并介紹了工控PC外接雙鍵盤(pán)的解決方案。通過(guò)使用模擬開(kāi)關(guān)CD4052巧妙地解決了工控PC外接雙鍵盤(pán)的沖突問(wèn)題。

關(guān)鍵詞:/2;串行通訊;單片機;鍵盤(pán);CD4052

1 PS/2接口標準的發(fā)展過(guò)程

隨著(zhù)計算機工業(yè)的發(fā)展,作為計算機最常用輸入設備的鍵盤(pán)也日新月異。1981年IBM推出了IBM PC/XT鍵盤(pán)及其接口標準。該標準定義了83鍵,采用5腳DIN連接器和簡(jiǎn)單的串行協(xié)議。實(shí)際上,第一套鍵盤(pán)掃描碼集并沒(méi)有主機到鍵盤(pán)的命令。為此,1984年IBM推出了IBM AT鍵盤(pán)接口標準。該標準定義了84~101鍵,采用5腳DIN連接器和雙向串行通訊協(xié)議,此協(xié)議依照第二套鍵盤(pán)掃描碼集設有8個(gè)主機到鍵盤(pán)的命令。到了1987年,IBM又推出了PS/2鍵盤(pán)接口標準。該標準仍舊定義了84~101鍵,但是采用6腳mini-DIN連接器,該連接器在封裝上更小巧,仍然用雙向串行通訊協(xié)議并且提供有可選擇的第三套鍵盤(pán)掃描碼集,同時(shí)支持17個(gè)主機到鍵盤(pán)的命令?,F在,市面上的鍵盤(pán)都和PS/2及AT鍵盤(pán)兼容,只是功能不同而已。

2?。校樱步涌谟布?/B>

2.1 物理連接器

一般,具有五腳連接器的鍵盤(pán)稱(chēng)之為AT鍵盤(pán),而具有六腳mini-DIN連接器的鍵盤(pán)則稱(chēng)之為PS/2鍵盤(pán)。其實(shí)這兩種連接器都只有四個(gè)腳有意義。它們分別是Clock(時(shí)鐘腳)、Data?數據腳?、+5V(電源腳)和Ground(電源地)。在PS/2鍵盤(pán)與PC機的物理連接上只要保證這四根線(xiàn)一一對應就可以了。PS/2鍵盤(pán)靠PC的PS/2端口提供+5V電源,另外兩個(gè)腳Clock(時(shí)鐘腳)和Data?數據腳?都是集電極開(kāi)路的,所以必須接大阻值的上拉電阻。它們平時(shí)保持高電平,有輸出時(shí)才被拉到低電平,之后自動(dòng)上浮到高電平?,F在比較常用的連接器如圖1所示。

2.2 電氣特性

PS/2通訊協(xié)議是一種雙向同步串行通訊協(xié)議。通訊的兩端通過(guò)Clock(時(shí)鐘腳)同步,并通過(guò)Data(數據腳)交換數據。任何一方如果想抑制另外一方通訊時(shí),只需要把Clock(時(shí)鐘腳)拉到低電平。如果是PC機和PS/2鍵盤(pán)間的通訊,則PC機必須做主機,也就是說(shuō),PC機可以抑制PS/2鍵盤(pán)發(fā)送數據,而PS/2鍵盤(pán)則不會(huì )抑制PC機發(fā)送數據。一般兩設備間傳輸數據的最大時(shí)鐘頻率是33kHz,大多數PS/2設備工作在10~20kHz。推薦值在15kHz左右,也就是說(shuō),Clock(時(shí)鐘腳)高、低電平的持續時(shí)間都為40μs。每一數據幀包含11~12個(gè)位,具體含義如表1所列。

表1 數據幀格式說(shuō)明

1個(gè)起始位總是邏輯0
8個(gè)數據位(LSB)低位在前
1個(gè)奇偶校驗位奇校驗
1個(gè)停止位總是邏輯1
1個(gè)應答位僅用在主機對設備的通訊中

表中,如果數據位中1的個(gè)數為偶數,校驗位就為1;如果數據位中1的個(gè)數為奇數,校驗位就為0;總之,數據位中1的個(gè)數加上校驗位中1的個(gè)數總為奇數,因此總進(jìn)行奇校驗。

2.3 PS/2設備和PC機的通訊

PS/2設備的Clock(時(shí)鐘腳)和Data?數據腳?都是集電極開(kāi)路的,平時(shí)都是高電平。當PS/2設備等待發(fā)送數據時(shí),它首先檢查Clock(時(shí)鐘腳)以確認其是否為高電平。如果是低電平,則認為是PC機抑制了通訊,此時(shí)它必須緩沖需要發(fā)送的數據直到重新獲得總線(xiàn)的控制權(一般PS/2鍵盤(pán)有16個(gè)字節的緩沖區,而PS/2鼠標只有一個(gè)緩沖區僅存儲最后一個(gè)要發(fā)送的數據)。如果Clock(時(shí)鐘腳)為高電平,PS/2設備便開(kāi)始將數據發(fā)送到PC機。一般都是由PS/2設備產(chǎn)生時(shí)鐘信號。發(fā)送時(shí)一般都是按照數據幀格式順序發(fā)送。其中數據位在Clock(時(shí)鐘腳)為高電平時(shí)準備好,在Clock(時(shí)鐘腳)的下降沿被PC機讀入。PS/2設備到PC機的通訊時(shí)序如圖2所示。

當時(shí)鐘頻率為15kHz時(shí),從Clock(時(shí)鐘腳)的上升沿到數據位轉變時(shí)間至少要5μs。數據變化到Clock(時(shí)鐘腳)下降沿的時(shí)間至少也有5 μs,但不能大于25 μs,這是由PS/2通訊協(xié)議的時(shí)序規定的。如果時(shí)鐘頻率是其它值,參數的內容應稍作調整。

上述討論中傳輸的數據是指對特定鍵盤(pán)的編碼或者對特定命令的編碼。一般采用第二套掃描碼集所規定的碼值來(lái)編碼。其中鍵盤(pán)碼分為通碼(Make)和斷碼(Break)。通碼是按鍵接通時(shí)所發(fā)送的編碼,用兩位十六進(jìn)制數來(lái)表示,斷碼通常是按鍵斷開(kāi)時(shí)所發(fā)送的編碼,用四位十六進(jìn)制數來(lái)表示。

3 PS/2接口的嵌入式軟件編程方法

PS/2設備主要用于產(chǎn)生同步時(shí)鐘信號和讀寫(xiě)數據。

3.1 PS/2向PC機發(fā)送一個(gè)字節

從PS/2向PC機發(fā)送一個(gè)字節可按照下面的步驟進(jìn)行:

(1)檢測時(shí)鐘線(xiàn)電平,如果時(shí)鐘線(xiàn)為低,則延時(shí)50μs;

(2)檢測判斷時(shí)鐘信號是否為高,為高,則向下執行,為低,則轉到(1);

(3)檢測數據線(xiàn)是否為高,如果為高則繼續執行,如果為低,則放棄發(fā)送(此時(shí)PC機在向PS/2設備發(fā)送數據,所以PS/2設備要轉移到接收程序處接收數據);

(4)延時(shí)20μs(如果此時(shí)正在發(fā)送起始位,則應延時(shí)40μs);

(5)輸出起始位(0)到數據線(xiàn)上。這里要注意的是:在送出每一位后都要檢測時(shí)鐘線(xiàn),以確保PC機沒(méi)有抑制PS/2設備,如果有則中止發(fā)送;

(6)輸出8個(gè)數據位到數據線(xiàn)上;

(7)輸出校驗位;

(8)輸出停止位(1);

(9)延時(shí)30μs(如果在發(fā)送停止位時(shí)釋放時(shí)鐘信號則應延時(shí)50μs);

通過(guò)以下步驟可發(fā)送單個(gè)位:

(1)準備數據位(將需要發(fā)送的數據位放到數據線(xiàn)上);

(2)延時(shí)20μs;

(3)把時(shí)鐘線(xiàn)拉低;

(4)延時(shí)40μs;

(5)釋放時(shí)鐘線(xiàn);

(6)延時(shí)20μs。

3.2 PS/2設備從PC機接收一個(gè)字節

由于PS/2設備能提供串行同步時(shí)鐘,因此,如果PC機發(fā)送數據,則PC機要先把時(shí)鐘線(xiàn)和數據線(xiàn)置為請求發(fā)送的狀態(tài)。PC機通過(guò)下拉時(shí)鐘線(xiàn)大于100μs來(lái)抑制通訊,并且通過(guò)下拉數據線(xiàn)發(fā)出請求發(fā)送數據的信號,然后釋放時(shí)鐘。當PS/2設備檢測到需要接收的數據時(shí),它會(huì )產(chǎn)生時(shí)鐘信號并記錄下面8個(gè)數據位和一個(gè)停止位。主機此時(shí)在時(shí)鐘線(xiàn)變?yōu)榈蜁r(shí)準備數據到數據線(xiàn),并在時(shí)鐘上升沿鎖存數據。而PS/2設備則要配合PC機才能讀到準確的數據。具體連接步驟如下:

(1)等待時(shí)鐘線(xiàn)為高電平。

(2)判斷數據線(xiàn)是否為低,為高則錯誤退出,否則繼續執行。

(3)讀地址線(xiàn)上的數據內容,共8個(gè)bit,每讀完一個(gè)位,都應檢測時(shí)鐘線(xiàn)是否被PC機拉低,如果被拉低則要中止接收。

(4)讀地址線(xiàn)上的校驗位內容,1個(gè)bit。

(5)讀停止位。

(6)如果數據線(xiàn)上為0(即還是低電平),PS/2設備繼續產(chǎn)生時(shí)鐘,直到接收到1且產(chǎn)生出錯信號為止(因為停止位是1,如果PS/2設備沒(méi)有讀到停止位,則表明此次傳輸出錯)。

(7 輸出應答位。

(8) 檢測奇偶校驗位,如果校驗失敗,則產(chǎn)生錯誤信號以表明此次傳輸出現錯誤。

(9)延時(shí)45 μs,以便PC機進(jìn)行下一次傳輸。

讀數據線(xiàn)的步驟如下:

(1)延時(shí)20μs;

(2)把時(shí)鐘線(xiàn)拉低?

(3)延時(shí)40μs?

(4)釋放時(shí)鐘線(xiàn)?

(5)延時(shí)20μs?

(6)讀數據線(xiàn)。

下面的步驟可用于發(fā)出應答位;

(1)延時(shí)15μs;

(2)把數據線(xiàn)拉低;

(3)延時(shí)5μs;

(4)把時(shí)鐘線(xiàn)拉低;

(5)延時(shí)40μs;

(6)釋放時(shí)鐘線(xiàn);

(7)延時(shí)5μs;

(8)釋放數據線(xiàn)。

4 用于工控機的雙鍵盤(pán)設計

工控機通常要接標準鍵盤(pán),但是為了方便操作,常常需要外接一個(gè)專(zhuān)用鍵盤(pán)。此實(shí)例介紹了在工控PC機到PS/2總線(xiàn)上再接入一個(gè)自制專(zhuān)用鍵盤(pán)的應用方法。

該設計應能保證兩個(gè)鍵盤(pán)單獨工作,而且相互不能影響。因此,不能直接把專(zhuān)用鍵盤(pán)和標準鍵盤(pán)一起接到工控PC的PS/2口。鑒于這種情況,本設計使用模擬開(kāi)關(guān)CD4052并通過(guò)時(shí)分復用工控PC的PS/2口,來(lái)使在同一個(gè)時(shí)刻只有一個(gè)鍵盤(pán)有效,從而解決上述問(wèn)題。其硬件原理圖如圖3所示。其中P2口和P1口用于鍵盤(pán)掃描電路(圖中未畫(huà)出),P0.0為數據端,P0.1為時(shí)鐘端,P0.2為模擬開(kāi)關(guān)選通端。由于專(zhuān)用鍵盤(pán)不需要接收工控PC機的命令,所以軟件中并不需要寫(xiě)這部分相應的代碼。

通過(guò)軟件可在專(zhuān)用鍵盤(pán)復位后把P0.2清0,以使模擬開(kāi)關(guān)CD4052打開(kāi)相應的通道。這時(shí)工控PC的標準鍵盤(pán)將開(kāi)始工作。標準鍵盤(pán)可以完成工控PC剛啟動(dòng)時(shí)對外設檢測的應答。復位后的專(zhuān)用鍵盤(pán)不停地掃描有沒(méi)有按鍵,如果有鍵按下則識別按鍵,并且按照預先的設計進(jìn)行編碼,同時(shí)調用發(fā)送程序并通過(guò)PS/2口發(fā)送到工控PC。此時(shí)模擬開(kāi)關(guān)關(guān)閉相應通道(將P0.2置1),專(zhuān)用鍵盤(pán)接入工控PC PS/2口的時(shí)鐘線(xiàn)和數據線(xiàn)而工作,但標準鍵盤(pán)被模擬開(kāi)關(guān)從PS/2的時(shí)鐘線(xiàn)和數據線(xiàn)中斷而不工作,這樣,雙鍵盤(pán)便可時(shí)分復用同一個(gè)工控PC機的PS/2口。相應的發(fā)送子程序如下:

#define DATA P00 用P0.0做數據線(xiàn)

#define CLK P01 用P0.1做時(shí)鐘線(xiàn)

#define INHIBIT P02 用P0.2做CD4052的INH端

#define PORTR P1 用P1口做讀入口

#define PORTW P2 用P2口做寫(xiě)出口 可以實(shí)現64個(gè)自定義鍵

void send(uchar x)/***function for send a char da-ta***/

{

uchar i,temp,char_temp;

bit flag_check=1;

INHIBIT=1;//disable standard keyboard

delay_ ms(3);

temp=x;

for(i=0;i<8;i++)//find the number of 1 in this uchar x is odd or not

{

char_temp=temp&0x01;

if(char_temp==0x01)

{

flag_check=!flag_check;

}

temp=temp>>1;

}

CLK=1;//send 1 to P1 then read P1

while (!CLK) //if CLK is low wait

{

;

}

CLK=1;DATA=1;//send 1 to P1 then read P1

if(CLK==1)

{

delay_us(30);//

}

if(CLK==1&&DATA==1)//send data

{

DATA=0;//start bit 0

delay_us(10);

CLK=0;

delay_us(5);//

temp=x;

for(i=0;i<8;i++)//send 8 bits LSBfirst

{

CLK=1;

delay_us(5);

char_temp=temp&0x01;

if(char_temp==0x01)

{

DATA=1;

}

else

{

DATA=0;

}

//DATA=(bit)(temp&0x01);

//LSB

delay_us(10);

CLK=0;

delay_us(5);

temp=temp>>1;

}

CLK=1;//send check bit

delay_us(5);?

DATA=flag_check;

delay_us(10);?

CLK=0;

delay_us(5)

CLK=1;//send stop bit

delay_us(5);?

DATA=1;

delay us?10??

CLK=0?

delay_us(5);?

CLK=1;

delay_us(30);? ?

CLK=1;DATA=1;//send 1 to P1 then read P1

if(CLK==1&&DATA==0)

{

return; //pc is sending data to mcu, go to

receiving function

}

INHIBIT=0; //enable standard keyboard

}

5 結論

PS/2接口協(xié)議是現在大多數鍵盤(pán)、鼠標與PC機通訊的標準協(xié)議。其中鼠標對PC機的通訊更為簡(jiǎn)單,只是傳輸數據的內容不一樣而已。充分理解PS/2接口協(xié)議,可以幫助設計者自主開(kāi)發(fā)一些工控機上的專(zhuān)用鍵盤(pán)等外設,并能夠按照用戶(hù)的要求開(kāi)發(fā)出專(zhuān)用的多功能鍵盤(pán)。該工控機的雙鍵盤(pán)設計目前已被某工控公司所采納,并已作為組件加入到產(chǎn)品當中。



關(guān)鍵詞: PS 接口 協(xié)議解析

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>