找回密码
 注册
关于网站域名变更的通知
查看: 180|回复: 1
打印 上一主题 下一主题

【教程4】手把手教你做平板电脑-设备按键驱动实验教程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-17 14:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
设备按键驱动实验教程
——疯壳·嵌入式平板开发

  R3 i8 s3 h. o! d; q0 u. f9 `& c( Y2 [2 p5 s1 j1 a

: t( N, T( s" @7 J# `% L( x9 U- I9 S) H% |9 P: |1 J, G
, [8 n/ K# L3 A( D# }9 F
    第一节 引言 --- 如何看一个 GPIO 按键的电路原理图3 H# [" i3 \- Y& z) O

7 n0 W" Q5 H% Y0 ^    下图来源于文档 3128_sdk_a02_20170325.pdf 中第 9 页和第 12 页。
1 _% e6 v: R' z/ N0 W8 d    如下第一张图 PMIC_PWRON 引脚在按钮按下前一直保持高电平,按键按下后变成低电平并触发中断休眠/唤醒屏幕。第一张图所示 pmic_pwron 连接的是一个按键电路,第二张图所示 pmic_pwron 连接的是 GPIO0_A2。综上所述,按键可以由 gpio 来实现的。
' J1 }( I( w$ S, O
4 E. l8 }& z' |- `6 t8 _ . W# M! x! W  E" _5 o
   1 Y9 e( `: B4 U8 t* b4 Z
    图1, j6 q3 x+ X) N( k1 e2 |5 t, w" J
; W5 ~7 ^0 v- H* S! \6 ?4 Q
    第二节 按键配置实例 --- 以 GPIO2_D1 为例,高电平触发上升沿来模拟按键被按下8 @! _% F" M9 e$ P( w( Z
5 X& m5 w1 _3 e" ]
    gpio 引脚通常可以配置成输入和输出功能。作为输入功能,一般在 linux 系统里面是以中断的方式来使用;如果作为输出功能一般主要用来提供一个高低电平信号。本文利用  gpio 的输入功能来模拟一个按键。* K: h* A' m2 l
    本章主要以 GPIO2_D1 为例子讲解,给 GPIO2_D1 一个高电平来触发上升沿产生中断操作并串口打印一条语句。
- i( x; G/ y: n5 x6 g. Z/ @. m4 z9 U8 v  q- a
   + k, z6 h1 I" [& s1 d
    图2# @. o9 d( k% M, Q  y
    图示红框位置表示将要配置的 gpio 在开发板上的位置
- z! D, d  X! U( n6 G5 C9 D  I
7 I- X5 |# J( ^0 k* S/ f    
  q/ z3 G) k6 W3 Q9 G& g; H    gpio 在电路图中的位置
4 s$ S, g" o; {6 B6 v8 U    图3
* u3 U. ]8 U$ c3 j8 l
9 E" @4 G) v1 `% S2 C/ [    第三节 rk3128 开发板 gpio 在 DTS 中的配置
1 M' t+ d% E! D
7 M7 h4 z; E: L* |+ f7 K9 [; a: W    rk3128 驱 动 配 置 使 用 的 是 Device Tree 的 方 式 , 所 以 在 kernel 路径 $(dir)\rk3128-source\kernel\arch\ARM\boot\dts 中 rk3128-study.dts 描述了我们整个系统的驱动配置,gpio 的配置如下所示:
- J# _$ x7 }0 m5 [
/ ?7 U/ A8 m' B3 H6 M1 `( f    
! v% ?  [# E) \4 l1 n代码16 U- |8 L8 k: t; O

1 G& ?7 I6 n' W/ Q' b    第四节 实验步骤
3 c+ I" U( {  C' [% \
0 A: ~, Z# r( Q- Z: H# X    1.如何看中断是否注册成功 --- cat /proc/interrupts
4 ], C; Z5 `. D4 d    我们注册的中断名字是:gpio_input_test 对应于中断号 160. J  D8 R- ~9 W( J4 _. b# x
) i+ s1 a1 X/ X+ O
    2 o' E8 z% H+ h/ w; S7 X4 f; b
    图4
2 |# f& P: m9 ~8 u  c3 Z' ~! e    2.kernel 实验步骤! ~( D  H" t3 v
: N# ?8 Q( g# J) i& p5 j" Z
   
/ r& V  X+ A* Q- o! S$ C4 U% d    图5' z, |2 r$ d: c; I' ~3 N% T
    第五节 实验现象7 W( H5 X& e9 s- b+ T5 l. G
    以一根杜邦线为例,低电平触发中断: |" |. \/ L7 [$ I7 l( [" L, _

1 I& S5 a% \6 _8 v     & ?+ v8 V) ]6 C: {: M
    图6
" y% Y; }) k% l" @5 _& [( H; ]# q    第六节 AD 按键
6 T7 a% L+ Q* o/ W6 e9 |6 v+ P; `% F) W; L" Q6 M) ^; }# u
    什么是 AD 按键:“AD 检测法实现简单实用的按键”,仅仅需要一个 AD 接口和若干的电阻,就可以实现 1  个,2 个,3 个        多个按键输入。原理就是按键按下的时候,IO 口将检测
4 R+ y- Q, S1 v$ v3 w    到不同的电压值。
' `. j# S' h7 W: P    本节第一张图所示三个按键就组成了 AD 按键并对应不同的阻值报告给 cpu,cpu 检测后知道那个键被按下,相应的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中rk3128-study.dts 的&adc{ }选项,源代码对应文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c
( F: M# j) |" a& V0 C    下图来源于文档 3128_sdk_a02_20170325.pdf 中第 9 页。
4 g/ u2 x: l* [' W4 |: ?0 v$ S! t$ V& P  \2 f9 a$ M
   # E) m* L' _/ B# k7 S1 |7 p$ z/ a
    图一 AD 按键原理图
" P/ \( z! B, _    图7' L) F8 _# I% S. U9 \' S; E

0 N" `1 N4 O5 L  u1 E. n+ c     . l* D+ [% o3 ^$ K
    图二 cpu 侧接线图( f& X5 n! R( d9 m; C
    图8
0 v9 T- O0 B3 e3 B9 v+ |+ O. M$ F
! r+ D* J% S- p& I    第七节 PMIC_PWRON 休眠/唤醒屏幕
4 L  ]& A- N) T, U$ p
: D5 U8 y! [# T  n' Z: t) L    本节主要是继续第一节课的原理图讲解一下屏幕的休眠/唤醒功能(gpio 的一个应用) 相应的 driver 配置看$(dir)\rk3128-source\kernel\arch\arm\boot\dts 中 rk3128-study.dts的&adc{...}选项,源代码对应文件是$(dir)\rk3128-source\kernel\drivers\input\keyboard\rk_keys.c" j0 }3 p0 |- O9 V) g) R1 w
    注意中断响应函数 keys_isr(int irq, void *dev_id),具体的屏幕休眠/唤醒由它来处理。
1 f6 u( |" ~, b9 \1 ]& K1 E+ i0 p! {& T9 M, i4 @8 l

+ J+ A; [; v  z4 E5 K6 o' }3 U. ?
# b" f; z* Y( h& [
    文件下载请点击: 4、设备按键驱动实验.pdf (887.32 KB, 下载次数: 0)   i9 X2 t% e. m3 i; ?
* D3 q; ]9 I; ]( u& G% P" e$ j/ A
1 v  Z' `! m+ R& j+ T+ n" r! \
8 e  r7 M+ `/ R0 S& M* T. e9 T

该用户从未签到

2#
发表于 2022-8-23 15:59 | 只看该作者
实验教程有没有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-26 14:56 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表