設(shè)備按鍵驅(qū)動實(shí)驗(yàn)教程
第一節(jié) 引言 --- 如何看一個(gè) GPIO 按鍵的電路原理圖
下圖來源于文檔 3128_sdk_a02_20170325.pdf 中第 9 頁和第 12 頁。
如下第一張圖 PMIC_PWRON 引腳在按鈕按下前一直保持高電平,按鍵按下后變成低電平并觸發(fā)中斷休眠/喚醒屏幕。第一張圖所示 pmic_pwron 連接的是一個(gè)按鍵電路,第二張圖所示 pmic_pwron 連接的是 GPIO0_A2。綜上所述,按鍵可以由 gpio 來實(shí)現(xiàn)的。
圖1
第二節(jié) 按鍵配置實(shí)例 --- 以 GPIO2_D1 為例,高電平觸發(fā)上升沿來模擬按鍵被按下
gpio 引腳通?梢耘渲贸奢斎牒洼敵龉δ。作為輸入功能,一般在 linux 系統(tǒng)里面是以中斷的方式來使用;如果作為輸出功能一般主要用來提供一個(gè)高低電平信號。本文利用 gpio 的輸入功能來模擬一個(gè)按鍵。
本章主要以 GPIO2_D1 為例子講解,給 GPIO2_D1 一個(gè)高電平來觸發(fā)上升沿產(chǎn)生中斷操作并串口打印一條語句。
圖2
圖示紅框位置表示將要配置的 gpio 在開發(fā)板上的位置
gpio 在電路圖中的位置
圖3
第三節(jié) rk3128 開發(fā)板 gpio 在 DTS 中的配置
rk3128 驅(qū) 動 配 置 使 用 的 是 Device Tree 的 方 式 , 所 以 在 kernel 路徑 $(dir)\rk3128-source\kernel\arch\arm\boot\dts 中 rk3128-study.dts 描述了我們整個(gè)系統(tǒng)的驅(qū)動配置,gpio 的配置如下所示:
代碼1
第四節(jié) 實(shí)驗(yàn)步驟
1.如何看中斷是否注冊成功 --- cat /proc/interrupts
我們注冊的中斷名字是:gpio_input_test 對應(yīng)于中斷號 160
圖4
2.kernel 實(shí)驗(yàn)步驟
圖5
第五節(jié) 實(shí)驗(yàn)現(xiàn)象
以一根杜邦線為例,低電平觸發(fā)中斷
圖6
第六節(jié) AD 按鍵
什么是 AD 按鍵:“AD 檢測法實(shí)現(xiàn)簡單實(shí)用的按鍵”,僅僅需要一個(gè) AD 接口和若干的電阻,就可以實(shí)現(xiàn) 1 個(gè),2 個(gè),3 個(gè) 多個(gè)按鍵輸入。原理就是按鍵按下的時(shí)候,IO 口將檢測
到不同的電壓值。
本節(jié)第一張圖所示三個(gè)按鍵就組成了 AD 按鍵并對應(yīng)不同的阻值報(bào)告給 cpu,cpu 檢測后知道那個(gè)鍵被按下,相應(yīng)的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中rk3128-study.dts 的&adc{ }選項(xiàng),源代碼對應(yīng)文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c
下圖來源于文檔 3128_sdk_a02_20170325.pdf 中第 9 頁。
圖一 AD 按鍵原理圖
圖7
圖二 cpu 側(cè)接線圖
圖8
第七節(jié) PMIC_PWRON 休眠/喚醒屏幕
本節(jié)主要是繼續(xù)第一節(jié)課的原理圖講解一下屏幕的休眠/喚醒功能(gpio 的一個(gè)應(yīng)用) 相應(yīng)的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中 rk3128-study.dts的&adc{...}選項(xiàng),源代碼對應(yīng)文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c
注意中斷響應(yīng)函數(shù) keys_isr(int irq, void *dev_id),具體的屏幕休眠/喚醒由它來處理。
更多完整學(xué)習(xí)資料和對應(yīng)開源套件,請登陸官網(wǎng):“瘋殼”
文件下載請點(diǎn)擊:
4、設(shè)備按鍵驅(qū)動實(shí)驗(yàn).pdf
(887.32 KB)
2022-7-14 14:58 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
|