小伙伴们准备好了吗?又到了看手册写代码的时候了。既懂硬件又懂软件的驱动工程师们。come on.....
一.总体框图
二.驱动代码
三.程序分析(代码注释的比较完整,我主要对硬件方面的设置进行讲解)
1.设置adccon寄存器
2.设置adctsc寄存器
3.关于adcdat0与adcdat1
四.程序优化
1.设置adcdly为最大值, 这使得电压稳定后再发出irq_tc中断(电压不稳肯定测不准,触屏原理是电阻嘛)
2.如果adc完成时, 发现触摸笔已经松开, 则丢弃此次结果
3.多次测量求平均值(多测几次,肯定比一次准嘛)
4.软件过滤 (就是设置个限定值,连续测量时,突然有一个值非常大或者小,那就认定它为错误值,舍去)
5.使用定时器处理长按,滑动的情况(其实就是加一个定时器延时,定时器在我以前写的按键驱动恩恩怨怨之防抖动那篇文章有详细的讲解)
a.初始化
b.启动
c.处理
五.测试(我用的是tslib 1.4)
1.主机先安装
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
2.编译
tar xzf tslib-1.4.tar.gz
cd tslib
./autogen.sh
mkdir tmp
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
make
make install
3.安装
cd tmp
cp * -rf /ts_dir(只要是你的根文件目录就行,不一定是这个文件夹)
4.使用(先安装s3c_ts.ko, lcd.ko)
a.修改 /etc/ts.conf第1行(去掉#号和第一个空格):
# module_raw input
改为:module_raw input
b.定义环境变量
export qws_mouse_proto=tpanel:/dev/input/event0
export t_root=/ts_dir (这里要和你前面放的那个根目录)
export ld_library_path=$t_root/lib
export tslib_consoledevice=none
export tslib_fbdevice=/dev/fb0
export tslib_tsdevice=/dev/event0
export tslib_calibfile=$t_root/etc/pointercal
export tslib_conffile=$t_root/etc/ts.conf
export tslib_plugindir=$t_root/lib/ts
c.测试ts_calibrate等。。
参考:韦东山视频第二期