小夥伴們準備好了嗎?又到了看手冊寫代碼的時候了。既懂硬體又懂軟體的驅動工程師們。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等。。
參考:韋東山視訊第二期