2019 4 12 触摸屏驱动

使用输入子系统,参考源码S3c2410_ts.c (c:\嵌入式学习\b盘\system\system\linux-3.4.2\linux-3.4.2\drivers\input\touchscreen) 

输入子系统框架input_dev

  • 分配input_dev结构体
  • 设置能产生那类事件,这类事件的哪些操作
  • 注册
  • 硬件操作
    • 使能时钟
    • 设置S3C2440 ADC/TS寄存器

先写出框架

填充硬件操作,注册TS中断,测试是否能进入中断打印触摸屏按下松开信息

注册ADC中断,在TS中断中进入测量数值模式,启动ADC,在ADC中断中打印XY值

进行优化

  1. init函数中设置ADCDLY为最大值
  2. 在ADC中断中进去时判断触摸屏是否仍被按下,若已松开则继续进入等待按下模式
  3. ADC中断中输出XY值前进行求平均
  4. 在求平均前进行软件过滤

添加定时器支持连按

  init中

   init_timer(&ts_timer);
   ts_timer.function = s3c_ts_timer_function;
   add_timer(&ts_timer);

  在ADC中断中 

    /* 启动定时器处理长按/滑动的情况 */
     mod_timer(&ts_timer, jiffies + HZ/100);//HZ是1S,当前为10ms

  在其中断函数中依然对按键是否按下进行判断,若仍按下,启动进入测量模式,启动ADC

猜你喜欢

转载自www.cnblogs.com/calm-monkey/p/10694315.html