电阻触摸屏驱动程序

电阻触摸屏是一个单点触摸的设备,所谓单点触摸就是在同一时间内在屏幕里只能有一个触点。

1、触摸屏驱动程序框架,这个驱动程序还不能用

 1 #include <linux/errno.h>
 2 #include <linux/kernel.h>
 3 #include <linux/module.h>
 4 #include <linux/slab.h>
 5 #include <linux/input.h>
 6 #include <linux/init.h>
 7 #include <linux/serio.h>
 8 #include <linux/delay.h>
 9 #include <linux/platform_device.h>
10 #include <linux/clk.h>
11 #include <asm/io.h>
12 #include <asm/irq.h>
13 
14 #include <asm/plat-s3c24xx/ts.h>
15 
16 #include <asm/arch/regs-adc.h>
17 #include <asm/arch/regs-gpio.h>
18 
19 static struct input_dev *s3c_ts_dev;
20 static int s3c_ts_init(void)
21 {
22     /* 1. 分配一个input_dev结构体 */
23     s3c_ts_dev = input_allocate_device();
24 
25     /* 2. 设置 */
26     /* 2.1 能产生哪类事件 */
27     set_bit(EV_KEY, s3c_ts_dev->evbit);
28     set_bit(EV_ABS, s3c_ts_dev->evbit);
29 
30     /* 2.2 能产生这类事件里的哪些事件 */
31     set_bit(BTN_TOUCH, s3c_ts_dev->keybit);
32 
33     input_set_abs_params(s3c_ts_dev, ABS_X, 0, 0x3FF, 0, 0);
34     input_set_abs_params(s3c_ts_dev, ABS_Y, 0, 0x3FF, 0, 0);
35     input_set_abs_params(s3c_ts_dev, ABS_PRESSURE, 0, 1, 0, 0);
36 
37 
38     /* 3. 注册 */
39     input_register_device(s3c_ts_dev);
40 
41     /* 4. 硬件相关的操作 */
42     
43     return 0;
44 }
45 
46 static void s3c_ts_exit(void)
47 {
48 }
49 
50 module_init(s3c_ts_init);
51 module_exit(s3c_ts_exit);
52 
53 
54 MODULE_LICENSE("GPL");

2、硬件相关部分的讲解

触摸屏实际上就是巧妙的使用了欧姆定律

触摸屏是什么东西呢?拿到JZ2440会看到一个屏幕,实际上它不仅仅有一个LCD,在LCD上面还覆盖着两层很薄的膜.

 

触摸屏使用过程:

1)按下触摸屏,产生中断

2)在中断处理函数里面,启动ADC转换x  y坐标(注意这坐标是电压值)

3)ADC结束,产生ADC中断

4)在ADC中断处理程序里面,使用函数input_event上报事件,启动定时器

5)定时器时间到,再次启动ADC(用于你按下后不松开,滑动的情况)

6)松开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值