天天看點

觸摸屏驅動三部曲之功能實作及優化

        小夥伴們準備好了嗎?又到了看手冊寫代碼的時候了。既懂硬體又懂軟體的驅動工程師們。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等。。

參考:韋東山視訊第二期

繼續閱讀