S3C6410 KeyPad驅動(下)

來源:互聯網
上載者:User

S3C6410 KeyPad驅動(下)

1.1 按鍵中斷處理流程

1.1.1 按鍵掃描的處理流程

在初始狀態,所有的列線(輸出)處於低電平,當沒有按鍵按下的狀態時,所有的行線(輸入)都是高電平(使用上拉功能)。當任何按鍵按下時,相應的行和列線串連在一起,並且相應的行被驅動為低電平,此時產生一個鍵盤中斷。接著CPU(軟體)通過寫列資料輸出寄存器KEYIFCOL向一列寫入低電平,而向其他列寫入高電平。在每次寫入的時候,CPU讀取行資料輸入寄存器KEYIFRO來相應的列按鍵是按下,這樣,當掃描處理完成後,就可以找到按下的一個或多個按鍵。

圖24 鍵盤掃描初始化狀態

下面假設按下按鍵27,是如何確定此按鍵的流程:

1) 當按下27鍵的時候,它所在的第3行輸入低電平,也即GPK11輸入低電平,這可通過讀取KEYIFROW寄存器獲知。

2) CPU通過寫KEYIFCOL寄存器來寫第0位為低電平,第1到第第7位為高電平,然後來讀取KEYIFROW寄存器的值,這時讀取到的值為11111111,沒有其中一行輸入為低電平,說明,按鍵的按鍵不在第0列,見

圖25 鍵盤掃描處理流程II

3) 直到CPU向KEYIFCOL寄存器低八位寫入11110111,這時讀取到KEYIFROW寄存器低八位的值為11110111,可知第3行輸入為低電平,此時對應的是掃描條件時第3列輸入低電平,這樣就可以判斷按鍵在第3行和第3列交叉處的按鍵,從而判斷了具體的按鍵。

4) 對於多個按鍵,掃描原理一樣,見的說明。

圖26鍵盤掃描處理流程III

1.1.2 PDD的IST處理

下面來看IST線程KeyMatrix::IsrThreadProc()的主要處理部分:、

圖27 IST線程KeyMatrix::IsrThreadProc()

此IST對按鍵的處理流程有下面一些情況:

下面分別介紹調用到的一些函數:

1) KScan_ProcIO函數

圖28 KScan_ProcIO函數體

按下第3行第3列的按鍵時,ChangeState[3]=0x8,這裡的3是指第3列,而0x8的位元是00001000,表示第3行,由此根據ChangeState[3]=0x8,可以知道是按下第3行第3列的按鍵被按下,其他idx對應的ChangeState[idx]值是0;同理,對於按下第3行第2列的按鍵時有ChangeState[2]=0x8,但如果同步選取這兩個按鍵,這ChangeState[3:2]=0x8。也就是說ChangeState數組中的idx值用來指示是哪一列的按鍵,而ChangeState[idx]的值(非零)用來指示是哪一行的按鍵。

備忘:下面基於4*4的鍵盤來描述,其中採用了低4行(GPK8~GPK11)和高四列(GPL4~GPL7)。

2) KeybdEventCallback函數

PDD層通過調用KeybdEventCallback函數把當前device layout按下的按鍵的掃描碼和按鍵狀態發送給MDD層,此函數體如下:

圖29 KeybdEventThreadProc函數

3) KeybdEventThreadProc線程

接收來之KeybdEventThreadProc函數發送過來的鍵盤事件,把掃描碼轉換為虛擬鍵碼,然後發送重新對應的鍵盤事件給GWES,此線程主要部分如下:

圖30 KeybdEventThreadProc線程

鍵盤驅動就先介紹到這裡了,其實還有很多內容的,大家可以深入MDD層部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.