觸摸按鍵異常問題匯總
本文檔主要為觸摸按鍵出現(xiàn)異常,例如:異常跳鍵,觸摸按鍵不出鍵等異常情況的匯總,主 要包含以下問題,請(qǐng)用戶自行查閱:?
1、觸控按鍵出現(xiàn)不靈敏,卡頓的現(xiàn)象;
2、觸摸按鍵無法出鍵是為什么;?
3、觸摸按鍵不穩(wěn)定,有跳鍵的情況;?
4、觸摸按鍵在上電一段時(shí)間內(nèi)反應(yīng),過一段時(shí)間會(huì)恢復(fù)正常;?
5、觸控仿真時(shí)跑不到掃描函數(shù)里;?
觸摸按鍵出現(xiàn)異常情況以及解決辦法?
1、觸控按鍵出現(xiàn)不靈敏,快速按按鍵會(huì)出現(xiàn)漏鍵,卡頓的現(xiàn)象; 觸控按鍵反應(yīng)速度較慢,有漏鍵現(xiàn)象出現(xiàn),建議首先從以下幾個(gè)方面排查:?
1) 查看是否使用的按鍵數(shù)較多,按鍵個(gè)數(shù)超過 12 個(gè)一般反應(yīng)速度就可以感受出來,如 果按鍵個(gè)數(shù)較多可以適當(dāng)減小按鍵掃描周期,掃描周期的修改是在靜態(tài)調(diào)試的單通道 調(diào)試界面進(jìn)行修改,如下圖,一般默認(rèn)按鍵掃描周期為 8,建議修改后不要小于 4, 按鍵掃描周期和按鍵變化量成正比,掃描周期越小按鍵響應(yīng)速度越快,但是按鍵變化 量越小,按鍵穩(wěn)定性越差,一般建議按鍵變化量不要小于 250,所以在修改觸摸按鍵 掃描周期時(shí)需要考慮變化量的因素,不能盲目修改;

2) 查看按鍵一輪掃描完成標(biāo)志的判斷時(shí)間間隔是不是比較長,建議 1ms 判斷一次,以 便于用最快的速度對(duì)按鍵進(jìn)行處理,加快按鍵響應(yīng)速度;?
3) 如果按鍵個(gè)數(shù)比較多可以適當(dāng)減小按鍵確認(rèn)次數(shù),默認(rèn)為 5 次,建議用戶修改按鍵確 認(rèn)次數(shù)不要小于 3 次;
4) 檢查觸摸面板的材質(zhì)是否具有微導(dǎo)電性,觸摸面板應(yīng)該是絕緣的非導(dǎo)電材質(zhì),若觸摸 按鍵面板具有導(dǎo)電性,觸摸按鍵就有可能出現(xiàn)異常;?
5) 檢查觸摸按鍵間臨鍵影響是否比較大,按其中某個(gè)按鍵時(shí),是否相鄰按鍵也會(huì)有較大 的變化,可以通過靜態(tài)調(diào)試查看各按鍵的數(shù)據(jù),如果有臨鍵影響較大的情況,可以更 換 T2 庫看一下效果,T2 的觸摸庫可以適應(yīng)更廣的臨鍵影響;?
6) 應(yīng)用層獲取到鍵值后是否沒有立刻進(jìn)行處理,建議得到鍵值后立刻進(jìn)行處理,以加快 檢查程序邏輯,得到鍵按鍵響應(yīng)速度;?
7) 檢查按鍵變化量是否過大或過小,一般變化量在 250~1500 以內(nèi)比較常規(guī);?
8) 是否觸摸參數(shù)調(diào)整的不合適,建議重新調(diào)整觸摸參數(shù)。?
9) 應(yīng)用層中是否有對(duì)觸摸鍵值再次進(jìn)行濾波,觸控庫算法已經(jīng)對(duì)觸摸數(shù)據(jù)和鍵值進(jìn)行濾 波,一般情況下應(yīng)用層不需要再進(jìn)行濾波了,得到鍵值后進(jìn)行功能處理就可以了,如 果有進(jìn)行濾波建議先去掉,看是否是由于額外的濾波導(dǎo)致的按鍵響應(yīng)速度過慢。
2、觸摸按鍵無法出鍵是為什么?
觸摸按鍵不出鍵,可以從以下幾個(gè)方面排查:
1) 請(qǐng)確認(rèn)在進(jìn)行觸摸參數(shù)調(diào)試時(shí),是否有蓋上實(shí)際使用的面板進(jìn)行調(diào)試;
2) 在調(diào)試軟件調(diào)試完成之后,有沒有將調(diào)試的數(shù)據(jù)替換到程序中;
3) 觸控按鍵的確定需要多次確定才會(huì)給出按鍵值,默認(rèn)的按鍵確認(rèn)次數(shù)為 5,如果是用
仿真的方式去查看鍵值的,仿真的時(shí)候打斷點(diǎn)讓程序停下來就會(huì)導(dǎo)致確認(rèn)次數(shù)不夠,
建議讓芯片全速跑程序,然后手按在觸控按鍵上一段時(shí)間,然后停止運(yùn)行,查看按鍵
返回值或者在程序中寫一個(gè) if 判斷,判斷按鍵返回值是否為 0,在 if 判斷里面打斷
點(diǎn),看手指按下時(shí),是否可以進(jìn)入 if 判斷;
4) 查看觸摸掃描函數(shù)是如何調(diào)用的,如果是定時(shí)調(diào)用,可以直接將觸摸掃描函數(shù)放到主
循環(huán)里面調(diào)用,排除由于定時(shí)器異常導(dǎo)致無法執(zhí)行觸摸掃描函數(shù)的原因;
5) 請(qǐng)檢查加入的觸控庫是否與所使用的芯片型號(hào)對(duì)應(yīng),賽元每個(gè)系列的芯片都有單獨(dú)的
觸控庫,獲取觸摸庫請(qǐng)發(fā)送“觸摸庫的獲取”;
6) 檢查使用的庫是否為 T2 庫,T2 庫不支持 3 個(gè)以下的觸摸按鍵的應(yīng)用,如果按鍵個(gè)數(shù)
小于 3 個(gè),應(yīng)該使用 T1 庫;
7) 按鍵返回值的變量應(yīng)該定義為 32 位,請(qǐng)檢查是否定義為 32 位變量;
8) 檢查原理圖設(shè)計(jì)是否在 CMOD 腳上接了參考電容,此參考電容是必須要接的,推薦使
用 103 電容;
9) 檢查 CMOD 電容是否有焊錯(cuò)或者虛焊的情況;
10) 檢查觸控 TK 走線上是否有虛焊或開路的情況,檢查所按下的按鍵通道與實(shí)際使用的
是否相符;
11) 建議寫個(gè)測試程序在獲取到鍵值之后立馬對(duì)觸摸鍵值進(jìn)行處理,例如:如果按鍵值非
0 即將某個(gè) IO 口置 1,否則置 0,以此來判斷是否為程序鍵值處理不當(dāng)導(dǎo)致異常;
12) 可以將動(dòng)態(tài)調(diào)試庫加入到應(yīng)用程序中,使用動(dòng)態(tài)調(diào)試查看觸摸數(shù)據(jù)是否有異常,查看
手指按下按鍵時(shí)對(duì)應(yīng)觸摸通道的 rawdata 的值是否有變化量,變化量是否達(dá)到閾值,
在沒有按鍵按下時(shí),觸摸是否有噪聲,動(dòng)態(tài)調(diào)試的操作步驟可以發(fā)送“高靈敏度觸控
動(dòng)態(tài)調(diào)試操作說明”進(jìn)行查看。
13) 查看所使用的觸摸庫是那種類型,使用的庫為 T2 庫時(shí),當(dāng)按鍵個(gè)數(shù)大于 8 個(gè),需要
判斷半輪標(biāo)志是否被置起,然后啟動(dòng)下半輪;使用的庫為高可靠的庫時(shí),需要判斷單
通道掃描完成的標(biāo)志是否置起,觸摸資料里面每一個(gè)類型的庫都有提供對(duì)應(yīng)的例程,
建議客戶按照例程中的寫法來寫程序;
14) 檢查總中斷 EA 是否關(guān)閉了,觸摸庫中需要用到觸摸中斷,所以需要總中斷保持為打
開狀態(tài);
15) 觸摸庫的編譯模式分為 S 和 L 兩種,S 表示編譯模式為 small,L 表示編譯模式為
large,在觸摸庫文件的命名中都有寫明編譯模式為 S 或者 L,如果是觸摸庫文件的
命名中沒有寫明編譯模式是 S 還是 L,則此觸摸庫文件的編譯模式為 S,客戶需要查
看 keil 中的設(shè)置 Option for Target 'Target 1'<Target<Memory Model 查看編譯
模式的設(shè)置是否與觸摸庫文件的編譯模式一致。
3、觸摸按鍵不穩(wěn)定,有跳鍵的情況
當(dāng)遇到觸摸按鍵不穩(wěn)定時(shí)建議先排查如下問題:
1) 檢查 TK 的 IO 口是否設(shè)置為輸出模式,使用到的 TK 通道所在的 IO 口需要設(shè)置為強(qiáng)
推挽輸出模式;
2) 檢查觸摸掃描函數(shù)的調(diào)用,是否是當(dāng)程序處理完觸控?cái)?shù)據(jù)后,再啟動(dòng)的下一輪掃描函
數(shù);
3) 可能觸控調(diào)試參數(shù)不是最佳,可重新調(diào)試觸控參數(shù)后測試并對(duì)比與原本機(jī)器上的觸摸
參數(shù)差異有多大;
4) 程序中先屏蔽觸控,看一下是否還會(huì)有異?,F(xiàn)象,或直接將觸摸鍵值賦值為 0,排查
一下是不是觸控引起的跳鍵,還是其它原因?qū)е碌漠惓,F(xiàn)象;
5) 檢查觸摸面板是否導(dǎo)電,觸摸面板需要為絕緣材料;
6) 檢查觸摸調(diào)試數(shù)據(jù)時(shí)所用的面板與實(shí)際使用的面板是否一致;
7) 檢查觸摸參考電容容值是否正確,推薦 103,檢查電容是否有虛焊的情況;
8) 將動(dòng)態(tài)調(diào)試庫加入到功能程序中,在觸摸調(diào)試軟件上面去查看觸摸的實(shí)時(shí)數(shù)據(jù),看跳
鍵時(shí),觸摸的 rawdata 以及 besline 的數(shù)據(jù)是否正常,如果看到數(shù)據(jù)異常導(dǎo)致跳鍵,
說明是有干擾存在導(dǎo)致觸摸跳鍵,可以通過屏蔽某些功能,換供電電源,換 PCB 板
上的關(guān)鍵元器件(例如 CMOD 電容)等方式去排查干擾來源,然后再想辦法解決干
擾,動(dòng)態(tài)調(diào)試庫的使用方法可以發(fā)送“高靈敏度觸控動(dòng)態(tài)調(diào)試操作說明”查看動(dòng)態(tài)調(diào)試
的操作步驟。
4、觸摸按鍵在上電一段時(shí)間內(nèi)反應(yīng),過一段時(shí)間會(huì)恢復(fù)正常
程序在上電時(shí)會(huì)調(diào)用觸摸初始化函數(shù) TouchKeyInit();觸摸初始化函數(shù)的作用是適應(yīng)當(dāng)前
環(huán)境并確定觸摸按鍵基線的初始值,所以需要盡量保證此時(shí)的環(huán)境穩(wěn)定,且盡量保持與初
始化完之后觸摸按鍵掃描時(shí)的環(huán)境相近;比如:觸摸初始化函數(shù)需要在沒有手指觸摸的情
況下執(zhí)行,所以在剛上電時(shí),手指不能接觸到按鍵,否則可能會(huì)導(dǎo)致觸摸按鍵有幾秒鐘的
時(shí)間無法響應(yīng);在執(zhí)行觸摸初始化函數(shù)的時(shí)候,如果有 LED 燈全亮全滅或其他對(duì)芯片供
電電壓以及芯片電流有較大影響的操作或有觸摸按鍵的動(dòng)作時(shí),可能會(huì)出現(xiàn)短時(shí)間的按鍵
無反應(yīng)或觸摸按鍵跳鍵的情況,建議等全部初始化和 LED 全亮的動(dòng)作完成后再調(diào)用觸摸
初始化函數(shù)。
5、觸控仿真時(shí)跑不到掃描函數(shù)里
觸摸按鍵仿真時(shí)無法跑到觸摸掃描函數(shù)的位置,可以從以下幾個(gè)方面查看:
1) 請(qǐng)檢查參考電容是否焊接良好,推薦使用 103 電容;
2) 請(qǐng)檢查 TouchKeyInit(); TouchKeyRestart(); TouchKeyScan();這 3 個(gè)函數(shù)是否有正
確調(diào)用,觸摸資料里面每一個(gè)類型的庫都有提供對(duì)應(yīng)的例程,可以按照例程里面的方
式對(duì)函數(shù)進(jìn)行調(diào)用;
3) 檢查使用的庫是否為 T2 庫,T2 庫不支持 3 個(gè)以下的觸摸按鍵的應(yīng)用,如果按鍵個(gè)數(shù)
小于 3 個(gè),應(yīng)該使用 T1 庫;
4) 查看所使用的觸摸庫是哪種類型,使用的庫為 T2 庫時(shí),當(dāng)按鍵個(gè)數(shù)大于 8 個(gè),需要
判斷半輪標(biāo)志是否被置起,然后啟動(dòng)下半輪;使用的庫為高可靠的庫時(shí),需要判斷單
通道掃描完成的標(biāo)志是否置起,觸摸資料里面每一個(gè)類型的庫都有提供對(duì)應(yīng)的例程,
建議客戶按照例程中的寫法來寫程序;
5) 觸摸庫的編譯模式分為S和L兩種,S表示編譯模式為small,L表示編譯模式為large,
在觸摸庫文件的命名中都有寫明編譯模式為 S 或者 L,如果是觸摸庫文件的命名中沒
有寫明編譯模式是 S 還是 L,則此觸摸庫文件的編譯模式為 S,客戶需要查看 keil 中
的設(shè)置 Option for Target 'Target 1'<Target<Memory Model 查看編譯模式的設(shè)置
是否與觸摸庫文件的編譯模式一致;
6) 查看觸摸掃描函數(shù)是如何調(diào)用的,如果是定時(shí)調(diào)用,可以直接將觸摸掃描函數(shù)放到主
循環(huán)里面調(diào)用,排除由于定時(shí)器異常導(dǎo)致無法執(zhí)行觸摸掃描函數(shù)的原因。
