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

【嵌入式开发教程5】疯壳·平板电脑-触摸屏驱动实验教程

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
触摸屏驱动实验教程
——疯壳·嵌入式平板开发

1 s  b7 J2 f5 E' X' `2 f$ i
$ p4 @/ j2 z- v  Q9 q$ T% V
6 P5 _  N" x$ y+ Y3 a) s1 R9 Y第一节 input 输入子系统简单介绍 --- rockchip_gslX680_rk3168.c
4 a! n' P8 O' {& B$ `/ m' @' B9 V& t" N# d+ \, B& r0 `3 @2 A2 j' D
触摸屏驱动注册到 input 子系统中后要遵循的框架结构如下:% L$ }- h: C. {, K. m
1.input dev 的注册,参考 gsl_ts_init_ts()函数;
8 Z+ O2 x* B& E( \6 ~6 S+ o2.input 事件的注册,这部分没有明显的调用 input 子系统的 input_register_handler()函数,说明是用的系统缺省注册的 handler,即 evdev --- 一个原始的(raw)输入设备事件。; m$ u( U, I+ X

( {$ r  V; V7 K  |2 U, M ! A! A+ }3 k' A
图1
$ P* a9 R% B- l- U' U1 g. X9 ]" {: Y" {9 B+ x- u2 F. D
第二节 电路原理图介绍% }2 G6 u: Q5 ]) ?
2 H6 G" |' P. ]5 ~: R7 u( Y3 k7 N
下图来源于文档 3128_sdk_a02_20170325.pdf 中第 19 页。
; k0 g! b7 {8 ^/ t# J如下图可以确定 TP 是通过 I2c 与 cpu 相互通信的,cpu 作为主设备,TP 作为从设备。TOUCH_INT 是用中断的形式用作告诉 cpu 已经有触摸产生,cpu 可以从 I2c 接口读数据了。TOUCH_RST 是用作触摸的休眠/唤醒。" C5 m5 h9 \9 v' \" w0 d* _
9 n) S* I* ^7 D0 g

6 \7 K" ~# q" u2 g! z5 F1 ]图2% c1 l5 O: Q" q/ F9 h, q

, F6 K, ]* L' m2 ]; h! F% f第三节 TP 驱动代码结构4 \. v6 z+ [# e7 J1 B6 x

3 c+ R/ E; o( K) K$(dir)\rk3128-source\kernel\drivers\input\touchscreen\rockchip_gslX680_rk3128.c. m6 T1 e1 B+ @8 b# l) ^$ z
--- input device driver' f; R# V! U0 x% B
$(dir)\rk3128-source\kernel\drivers\input\evdev.c# C/ r: E" O, W0 ]- j- A8 d
--- input event handler
1 W3 U4 H3 i' B$ v7 [) S5 {$ ^. I/ |- W6 z
第四节 .config 文件的配置选择
( j, o, q0 r, e5 n
% g5 b: I% c* kkernel 目录中输入 make ARCH=ARM menuconfig 然后按下列步骤选择, |, k% R+ g! |# e
Device Drivers        --->; u  D+ M: H5 f( b; N2 }% A
Input device support--->
, a( X0 g* E- k% Z6 ]/ a3 gTouchscreens        --->4 C5 \' {, Q' I* C
<*>        gslX680 touchscreen driver
1 q$ [: Y# v; ^) t2 }- k9 c( _' F3 x4 L- m
选择之后在.config 文件中会有如下项被设置:5 }* a9 U" z& l+ Z7 }
CONFIG_TOUCHSCREEN_GSLX680=y
. T6 a9 M3 k# ~1 t  ?
* f& j& O0 K2 `+ J$ _. v2 ^相应的配置文件目录位于:
' Y0 \8 S8 r. f0 ?; f. z) NX:\rk3128-study\rk3128-source\kernel\drivers\input\touchscreen\Kconfig
/ g( b$ Q& z1 R5 {/ M6 ^7 ~config TOUCHSCREEN_GSLX680
8 i& J- G0 N0 ]0 q7 ]: G5 e6 P6 @  O3 L6 b1 T* g( U# Y+ M
tristate "gslX680 touchscreen driver"
4 @  v' g1 ]$ S2 U) T( J5 b" B- @+ chelp' Z, A. j' x( Z
gslX680 touchscreen driver
" J  @. U8 m$ ^4 d4 V; I, C$ U$ {$ B2 P# h3 [$ T, L

* y8 m9 Q# t# P0 N6 _. `第五节 实验代码8 d% L' r$ r' ]

# K& q3 C7 I0 r5 b) a5 {9 B1.dts part:5 ~# X) [6 W2 W, T9 X/ e/ j( c. ]
; m: Y0 p: c, t$ `* b6 r( S4 D

6 K" W  M6 B1 J. V0 z代码1
& j$ _5 ~, w: s2.增加一个可以动态测试的函数到驱动中,用户可以通过 adb shell 或者串口去输入数据完成触摸屏功能测试。  R6 v7 a' a# y$ r# T' D8 [6 w- T
6 t% Y2 F! x" C" }

3 A1 i2 d$ s; s/ _+ c , `5 u5 t/ _. I: V) I$ j* f6 ]
代码2
; g* z8 P! {7 A: {3.测试命令! `% W1 W! N! d
命令输入路径/sys/class/touchscreen_test   h3 q7 c' y0 W: i2 ^6 z
关闭触摸功能:
- n5 F7 j5 N6 _6 kecho sleep > touchscreen " l6 {& D( O/ A; ^1 s% I! g$ x
echo wake > touchscreen' |6 p, g2 W; q4 l0 N% e* q: ~
镜像触摸屏坐标:1 F7 c. {! L9 I  m% U1 T. _$ s( f; ^6 A2 w
echo mirror > touchscreen
! q0 c1 Z' i$ \- C4.代码调试中遇到问题
% v7 n  v5 q4 U3 w9 b1 U触摸挂上去后没有反应:a.中断产生了吗?可以通过在中断响应函数中增加调试信  息;b.I2c 通信正常吗?这个可能要接个示波器或 usb 逻辑分析仪去看波形是否正常。) ~% G6 u1 j; K3 L. D
  ]8 L* |- F1 {0 C$ D% I. Y
第六节 实验步骤 --- 镜像后的坐标如何调节
, E% O8 O4 Q& \# l5 \& L2 O
$ N" b! `$ C" S( Rcd        /sys/class/touchscreen_test 3 H% @. V4 h% o# [0 N
echo mirror > touchscreen! j: K/ Y# Z  V" A4 t
' T- Z  W5 ]5 `5 p
第七节 实验现象
& E- T; Z6 b$ P# O点击位置倒向,需要修改代码/ v7 h' S) W' U; U3 n* d6 L% s4 l( n
report_data()中的两个地方 --- 自己做实验了
8 R' ]& R2 |; C6 c1 }
$ m# y- z' r$ G0 _0 |  p
4 d1 D. u5 T3 _9 m! d: H" J( L% G

; L: |# y. O" T6 O7 E. {/ B
- M, k/ }% Z9 Q) C$ ^+ A文件下载请点击: 5、触摸屏驱动实验.pdf (446.7 KB, 下载次数: 0) / D6 L% Z1 Q/ ^5 B. l! f( a- K1 a

' C% J; o, a9 Y7 V! a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 20:40 , Processed in 0.140625 second(s), 28 queries , Gzip On.

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

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

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