驅動調試常見問題_Keypad

來源:互聯網
上載者:User
 

作者:劉旭暉 Raymond轉載請註明出處

Email:colorant@163.com

BLOG:http://blog.csdn.net/colorant/

首頁:http://sites.google.com/site/rgbbones/

 

    這裡的Keypad不是PC上用的編碼式的鍵盤,而是在嵌入式裝置中常見的非編碼式的鍵盤。Keypad的常見串連方式有:矩陣掃描式的,直接GPIO檢測式的。檢測方式上,可以通過GPIO掃描自己實現檢測,也有的CPU整合了掃描電路邏輯,可以進行自動檢測。 某些鍵位的索引值取值出現固定的錯誤
  • 癥狀
    

    某些鍵位的索引值多數情況下讀出來的值為一個恒定的錯誤值,比如理論上應該為0x20的值,讀取出來變成0或0x420等等,而有時在放開的一瞬間又能夠讀到正確的索引值,不同的板子基本上都是相同的一些鍵存在這樣的問題。而某些鍵永遠也不會出現讀取錯誤的問題。

 
  • 分析

    開始認為是鍵盤的工藝問題,接觸不良導致某些交叉點相互串擾造成的     但是仔細分析發現,所有出問題的按鍵都是處在同一個掃描行上,而且所有該掃描行的按鍵都有問題,表現出來都是疊加上了下一行同一列的索引值。分析認為是在鍵盤驅動掃描的時候,相鄰行之間掃描電平變化過快,硬體上由於有電容等因素存在,掃描電平在讀取索引值的時候尚未穩定,導致錯誤的讀取了索引值。     所以主要矛盾在於我所使用的CPU的SPI口的片選和時鐘訊號無法與資料線分開獨立自由控制。 
  • 解決
        從硬體上來說,要盡量減少掃描線上的附加電容    從軟體上來說,可以增加改變行掃描電壓和讀取寄存器之間的延遲時間,等待充放電過程的完成。 只按下一個鍵卻讀取到多個索引值
  • 癥狀
        一個鍵按下以後,可以檢測到多個索引值同時發生。 
  • 分析
        這個問題其實是上一個問題的另一種表現形式,由於充放電過程的幹擾,造成陣列掃描過程的誤判。 
  • 解決
     同上。 某些索引值驅動已經檢測到,但上層應用無法讀取得到
  • 癥狀
        某些鍵按下以後,在驅動中可以看到索引值已經檢測到,但是上層應用從裝置節點中卻沒有讀取到相應的值。 
  • 分析
        這個問題通常是因為沒有正確的設定Input子系統中,鍵盤事件的掩碼 input_dev->keybit,如果沒有設定對應索引值的掩碼,input子系統會將相應的事件丟棄,不會向上層應用分發。 
  • 解決
     正確設定每一個按鍵的掩碼位

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.