05_触摸屏驱动
1、硬件原理和编程思想
电阻触摸屏原理:
编程框架:
触摸屏执行流程:
2、8th编程
2.1、入口函数s3c_ts_init中
1、 设置输入结构input_dev
1.1、分配一个input_dev结构体
s3c_ts_dev = input_allocate_device();
1.2、能产生那类事件
set_bit(EV_KEY,s3c_ts_dev->evbit);
set_bit(EV_ABS, s3c_ts_dev->evbit);
设置struct input_dev 的evdev数组中的EV_KEY位和EV_ABS位
1.3、设置产生这类事件的哪些件
set_bit(BTN_TOUCH, s3c_ts_dev->keybit)
input_set_abs_params(s3c_ts_dev, ABS_X, 0, 0x3FF, 0, 0)
input_set_abs_params(s3c_ts_dev, ABS_Y, 0, 0x3FF, 0, 0)
input_set_abs_params(s3c_ts_dev,ABS_PRESSURE, 0, 1,0, 0)
BIN_TOUCH : 触摸"按键"事件
ABS_X/ABS_Y : X/Y绝对位移
ABS_PRESSURE : 绝对位移压力事件
1.4、注册input_dev
input_register_device(s3c_ts_dev);
2、 硬件操作
2.1、使能时钟
clk = clk_get(NULL, "adc");
clk_enable(clk);
2.2、ioremap寄存器
s3c_ts_regs = ioremap(0x58000000, sizeof(struct s3c_ts_regs));
2.3、设置AD分频系数和ADCDLY
s3c_ts_regs->adccon = (1<<14)|(49<<6);
2.4、注册INT_TS和AD中断
//TS中断
request_irq