這幾天鬱悶死了。調了一個touch Driver調了整整3天!期間出現了很奇怪的問題,記錄之:
1. 校正的時候反反覆複點,都出現了一堆錯誤。對比其他的可用的BSP,touch driver 參數沒有區別。想到可能是經過轉接板,類比訊號有衰減,但是客戶堅持說以前用的是好的,所以我也遲遲沒有用他的NK燒進去測試一下,因為燒他那個太麻煩了...結果,這一怕麻煩,把我折磨了整整一天半。後來,沒招了,燒進去吧,結果發現他哪一個NK也不行。後來找到一根短的線,插上去,問題解決!
2. 換了另外一塊屏,原來的參數又不可以用了,那調參數吧。調採樣率,調閥值,調最大錯誤數,還是不可以校正。客戶又說是可以用的。這次我聰明了,自己燒了看看再說。結果大跌眼鏡,他的居然真的是可以用的。哪是什麼回事呢?我的每次採樣4個點的時候都至少有兩個是相差太大被過濾的。後來想想是不是ADC採樣過快了,觸控螢幕反應太慢。可惜沒有觸控螢幕的Spec,客戶也沒有。我認真研究了一下三星的SPEC, 想是不是PCLK的問題呢,一看,暈~~~真的是,他能用的是33.2MHZ的,而我的是66.5MHZ的。那調PCLK吧。調了一下,發現要改動太多了,還因為一個觸控螢幕把其他的都影響了,不划算。那調ADC的分頻和等待時間吧。暈的是,把分頻調高反而不行,結果我調低了,即是採樣率變快了才起了作用!
3.HIVE註冊表,觸控螢幕啟動時居然沒有校正好!不過查看註冊表資料是有儲存的!~~~~~~~~~~~~~~~其他的音量什麼的都正常!
難道是GWES在HIVE註冊表沒有準備好之前就啟動觸控螢幕驅動了?研究了一下觸控螢幕的載入順序,沒有找到,編了一個DEBUG版本,發現檔案系統很早就初始化好了!在PULIC裡面的驅動加入設定校正資料時的調試資訊,發現設定的資料是註冊表裡的資料!!!暈!!!那怎麼不起作用呢!!發現重啟後重新校正,校正出來的資料跟原來的資料差了幾百!!!汗。一定是轉接板的問題了。問題解決!!
附:
觸控螢幕的驅動是由GWES啟動的。GWES啟動觸控螢幕前會先讀註冊表的校正資料,然後把資料通過觸控螢幕驅動儲存在一個結構。以後每次採樣都會跟這個結構來做比較,計算結果。