电阻触摸屏驱动

电阻触摸屏硬件原理
在这里插入图片描述
触摸屏就是 2 层很薄的膜,引出 4 条线。
上面一层膜:XP 边(P 表示正极的意思),XM 边(M 表示负极的意思)。
下面一层膜:YP 边,YM 边

平时这两层膜接触不到,当有触摸时,即按压时,上下两层膜就会粘在一起。基于欧姆定律测试 x,y 坐标:

A,测试 X 坐标:
①,XP 接 3.3V
②,XM 接地-0V。
③,YP 与 YM 都不接。这样上面一层相当于个电阻了。
④,测试 YP 电压。

B,测试 Y 坐标:
①,YP 接 3.3V
②,YM 接地-0V。
③,XP 与 XM 都不接。这样上面一层相当于个电阻了。
④,测试 XP 电压。

分辨率:10位
最大时钟:2.5MHz(PCLK 50MHz,ADCCON设置预分频系数 ->1MHz)
4个控制信号引脚:TSXP,TSYP,TSXM,TSYM
输入模拟电压范围:0~3.3V
触摸屏工作模式
 普通转换模式:不使用触摸屏,用于普通的A/D转换
 分离的x/y轴坐标转换模式:测量x或y坐标,分别产生中断
 自动x/y轴坐标转换模式 :测量x和y坐标,产生一个中断
 等待中断模式:等待Pen Up或Pen Down中断,触摸屏被按下/松开产生中断,要转入上面的两种模式中的一种测量x,y坐标

寄存器设置
ADCCON:预分频使能,预分频系数,A/D转换通道,启动A/D转换
ADCTSC :选择工作模式:0xd3等待按下,0x1d3等待松开,自动测量x,y模式
ADCDLY :延时时钟(采样延时值,等待电压稳定后发出IRQ_TC中断)
ADCDAT0:bit15判断按下/松开,bit[9:0]x轴坐标值 ADCDAT0&3ff
ADCDAT1:bit15判断按下/松开,bit[9:0]y轴坐标值 ADCDAT1&3ff

触摸屏驱动

触摸屏驱动是基于输入子系统做的,右边软件相关的由系统提供的evdev.c做好,我们只做左边硬件相关的。
在这里插入图片描述
1 分配一个input_dev结构体
2. 设置
 2.1 能产生哪类事件
 2.2 能产生这类事件里的哪些事件
3. 注册
4. 硬件相关的操作
 4.1 使能时钟(为了省电,模块关闭)
 4.2 设置ADC/TS寄存器
 4.3 定时器处理长按,滑动的情况在这里插入图片描述

触摸屏使用过程:
1,按下产生中断INT_TC。
2,在“按下”中断处理程序里面,启动 ADC 转换 X、Y 坐标电压值。
3,启动 ADC 不会瞬间完成,一般来说启动就不管了。ADC 结束,产生 ADC中断INT_ADC(与‘按下’中断不同)。
4,在 ADC 中断处理函数里面,用 input_event() 来上报,启动定时器(处理长按、滑动的过程中也可以连续不断的转换这个坐标电压值,上报出来)。
5,定时器时间到,再到第 2 步,再次启动 ADC 。就是按下时产生一个“粘点”中断,过了一段时间(定时器),就会再启动一次 ADC 中断,这样就能处理“粘点”滑动的过程。
6,松开。

驱动程序

struct s3c_ts_regs {
   		//寄存器结构体
	unsigned long adccon;
	unsigned long adctsc;
	unsigned long adcdly;
	unsigned long adcdat0;
	unsigned long adcdat1;
	unsigned long adcupdn;
};

static struct input_dev *s3c_ts_dev;	//定义input_dev结构体
static volatile struct s3c_ts_regs *s3c_ts_regs;
static struct timer_list ts_timer;	//定义定时器

static void enter_wait_pen_down_mode(void){
   	 //进入等待按下模式
	s3c_ts_regs->adctsc = 0xd3;
}

static void enter_wait_pen_up_mode(void){
     //进入等待松开模式
	s3c_ts_regs->adctsc = 0x1d3;
}

static void enter_measure_xy_mode(void){
     //进入测量模式
	s3c_ts_regs->adctsc = (1<<3)|(1<<2);
}

static 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值