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

【教程5】手把手教你做平板电脑-触摸屏驱动实验教程

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
触摸屏驱动实验教程
——疯壳·嵌入式平板开发
# ], \4 ]0 j( n9 k  o/ K. b
: P) d4 G- K( q) Z

/ }& l3 s/ w# w4 }9 y4 {% I5 y7 C
( H" O; V. ~/ {( O7 R& r3 Y# m. I. h$ E' |7 R
第一节 input 输入子系统简单介绍 --- rockchip_gslX680_rk3168.c4 L! j' n* E) K

" g  x# u' j7 p$ P触摸屏驱动注册到 input 子系统中后要遵循的框架结构如下:3 \  S0 ?  q( K+ c( S
1.input dev 的注册,参考 gsl_ts_init_ts()函数;7 C/ L$ F$ v" \, o  s/ ~
2.input 事件的注册,这部分没有明显的调用 input 子系统的 input_register_handler()函数,说明是用的系统缺省注册的 handler,即 evdev --- 一个原始的(raw)输入设备事件。
5 C1 g- m3 X9 B5 G7 [& I/ h
/ X8 y: B' Z8 }( H+ o & y/ {% a" V1 k1 S" N) m6 \4 m* S
图1- Q! N! Y, k# ^( A
" ?2 I. f, U0 f0 t+ H
第二节 电路原理图介绍' e6 S" F7 Z) X1 ^
% m/ J" I8 [3 E( s. U# E
下图来源于文档 3128_sdk_a02_20170325.pdf 中第 19 页。  {3 [1 n& j. E$ H& i& G
如下图可以确定 TP 是通过 I2c 与 cpu 相互通信的,cpu 作为主设备,TP 作为从设备。TOUCH_INT 是用中断的形式用作告诉 cpu 已经有触摸产生,cpu 可以从 I2c 接口读数据了。TOUCH_RST 是用作触摸的休眠/唤醒。, T. x9 x8 |1 C
* A3 H0 ]8 O" b. Z$ ?

! F( d# k! j7 g; A  d+ B9 X图2. e) m: V! K9 Z% V* e# N" Y

* |0 P9 j, X. @0 S& L7 u; B第三节 TP 驱动代码结构
) N0 v: v+ k& d0 v8 A% @% f9 _" k& n& Y. x& ^) i0 |3 j/ ?# l
$(dir)\rk3128-source\kernel\drivers\input\touchscreen\rockchip_gslX680_rk3128.c
3 A7 M+ @* ^' N--- input device driver
: i- I  {4 j' N2 T# a0 n$(dir)\rk3128-source\kernel\drivers\input\evdev.c
3 ~9 O. o% h9 n--- input event handler
  [# I; r+ x; @$ |. M& k) C& E. k3 ]# f( W% G: U
第四节 .config 文件的配置选择
% h- B  [7 v2 h( h( Q% \; _
# \# t& q5 Q5 b  t, q9 ^kernel 目录中输入 make ARCH=ARM menuconfig 然后按下列步骤选择* o. `: F9 S# T3 \/ U
Device Drivers        --->- O4 J. `+ R/ \# e' B8 f5 N/ F$ u1 q( _
Input device support---> * e' o& N( ?6 L  A0 a
Touchscreens        --->0 s% R7 F( i: O7 P/ k
<*>        gslX680 touchscreen driver
' k6 w' e9 A- y* C/ {& }7 G, f; D# v" r
选择之后在.config 文件中会有如下项被设置:8 p' ^" K3 ^3 l) b% Y( q
CONFIG_TOUCHSCREEN_GSLX680=y
" s4 n7 Y3 c; j2 C
* x2 C1 G) W5 J. g" M相应的配置文件目录位于:
+ O2 @3 M# B+ u9 A* R6 r! iX:\rk3128-study\rk3128-source\kernel\drivers\input\touchscreen\Kconfig
; c$ Y$ p* c0 ]# kconfig TOUCHSCREEN_GSLX680
6 K# A; s, ~/ D; {) ?
1 W1 T& N3 K6 |6 C! K! F  t0 X, rtristate "gslX680 touchscreen driver" . ?& m& U! Q- z# Q6 h$ ^; y) X0 Z. C# F9 a
help  c6 i6 P2 n. F* @5 w+ Q& Q6 i
gslX680 touchscreen driver
9 m% i: C2 }, z2 }. h% Q* v. A( k1 ~) I- N4 f7 @) _- Z
8 w% k2 s0 \" T" D# g% X4 l' z
第五节 实验代码
$ d, W4 a! B. S! q! Y- @, H; w; p
1.dts part:
. V, V% {6 o8 G) T6 D+ s$ X7 I' A/ G0 g: y/ J2 }% Q$ F- |

. D0 y0 O  k8 E% q代码1
1 B6 h, g4 H1 U! E* y9 N" R2.增加一个可以动态测试的函数到驱动中,用户可以通过 adb shell 或者串口去输入数据完成触摸屏功能测试。8 R8 e( ~0 v: ?- K9 Q7 d' s

+ v1 A/ ]3 G$ G1 D# t3 A* B . z* h, h: f7 K
( R4 @7 a+ L& n% F) t
代码29 N1 F, z) X$ s  E7 ?8 Y, T: C
3.测试命令/ M0 J4 V: Q" f0 `
命令输入路径/sys/class/touchscreen_test   V5 R- f& f; b' U; s. S/ @
关闭触摸功能:
& h  t( \4 q1 \- M1 n1 ?( gecho sleep > touchscreen . L$ s2 O7 H5 R& s1 [
echo wake > touchscreen
: Q# p6 {- u  M+ l) W镜像触摸屏坐标:  P5 `  m; j% e% N- S# i
echo mirror > touchscreen
4 w/ L/ `6 T5 S4.代码调试中遇到问题
% b$ A6 V, u4 q. h触摸挂上去后没有反应:a.中断产生了吗?可以通过在中断响应函数中增加调试信  息;b.I2c 通信正常吗?这个可能要接个示波器或 usb 逻辑分析仪去看波形是否正常。
8 {% [7 e3 D8 v& L% y  G# ?* J
" F7 K0 M3 w, J' [- a第六节 实验步骤 --- 镜像后的坐标如何调节6 H" `7 y9 ]* N5 w7 b
; }% i; t% Z7 k
cd        /sys/class/touchscreen_test " N( O" h8 `4 l& H& |1 g* X- c
echo mirror > touchscreen; S) t* \9 b+ d
- F% r3 l- [: y1 Y
第七节 实验现象0 V6 P; M3 @( }( _& s: F
点击位置倒向,需要修改代码
! w7 t+ b. j, e& d' ]5 Q$ R6 [report_data()中的两个地方 --- 自己做实验了( w. V5 Y, n+ m8 J' P
) p7 z3 l5 b' j8 o* d1 s
7 |, R7 v1 \9 D1 Z0 R& X0 @

) w1 N% k/ H  G7 a5 T/ P7 P4 N' Q( ~. M1 @
3 \/ `9 L' k6 p& j( l
文件下载请点击: 5、触摸屏驱动实验.pdf (446.7 KB, 下载次数: 0) " T8 s$ |8 q+ F0 C4 f. g* A  M+ F
# H% Z8 z8 R& Y: r& l% k1 ]7 ^

该用户从未签到

2#
发表于 2022-8-23 15:55 | 只看该作者
这是完整的教程吗?
9 P5 _5 |+ X5 Y9 L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 17:53 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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