拿到ctp和相應的驅動**,原廠的驅動**差別很大,有的廠家的驅動**寫得規規矩矩,注釋清楚,有的寫的就是一團糟,甚至還存在著邏輯錯誤。
拿到ctp 驅動**後,直接將**合進去,然後看效果,不管怎麼觸控,ctp的列印一直不出來。。看了看,**也沒什麼問題,最後用示波器看中斷腳電平,
發現一直為高,高為無效。然後用萬能表看了看ctp的vcc,發現居然為低,,原來ctp的電源都有問題,根本就沒起來工作。
1 解決電源問題
然後看原理圖,發現ctp的vcc腳不是直接接電源,而是接cpu的引腳,這引腳必須用**控制才能拉高。。然後在poweron 和init函式裡加上了啟動電源腳2.8v
的**,在poweroff裡加上了取消電源腳2.8v的**,,然後編譯,燒錄,開機,用手觸控,發現列印出現了,但是座標有問題。。
2 轉換座標
ctp的座標範圍是2880*2880,而lcd是240*240,這就需要將ctp的原始座標轉換為lcd的座標,轉換很簡單,因為ctp和lcd的原點都一樣,都是在左上角,
轉換演算法: new = old * 240 / 2880; 這樣,座標轉換就ok了。
3 除錯滑動效果
列印是有了,但是滑動介面,有時可以滑動,有時不行,,以為是mmi的應用有問題,但是看了很久,也沒發現什麼問題,而且mmi touch panel**是mtk自帶的。
後來發現mmi touch panel **中有個函式是用來判斷 ctp事件是down還是up,
true 表示down;
false 表示up;
用手觸控ctp,發現列印中只有down事件,沒有up事件。
忽然想起左邊同事說,每次只有ctp driver發生錯誤,才會正常滑動。。心中便有了個疑問,驅動**是不是還有問題,是不是在read all point那裡沒有正常地返回false,
導致up事件一直出現不了。
對照mtk **商coretek給的另一套ctp驅動**,發現,原廠的**確實沒有在正確讀到座標時返回false,原廠作者應該是把false當成錯誤了,其實false表示up事件。
在讀取正確座標後,新增 return false; 編譯,燒錄,滑動,效果終於正常了。。。。
總結一下,除錯硬體驅動不能一上來就直接看效果,總結一下,大致的步驟如下:
1 在**中配置好相關的引腳(mtk使用drvtool來配置)
2 新增**後,先看硬體的vcc和其他狀態腳是否正常。
3 如有中斷產生,用示波器看中斷的電平變化。
4 驅動調好後,再看應用層的效果。
如果驅動一直調不好,可以請原廠的fe過來看看。
MTK平台驅動除錯指南
gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...
MTK平台驅動除錯指南
gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...
Mtk開機除錯步驟
開機除錯 1 將原來使用的mtk版本的tools目錄下的如下檔案 資料夾拷貝到tools目錄下 msys mingw make.exe 2 將目錄plutommi customer resgenerator下的exe檔案拷貝到新版本的plutommi customer resgenerator目錄下...