linux驅動開發:觸摸屏的認識(FT5x06 IC的分析)

我們板子上的觸摸屏是電容屏,當然也有電阻屏。不過目前絕大多數是電容屏。
原理:按下某個位置,得到某個位置的特定電阻/電容值,電阻屏(可能通過好幾個adc去捕獲這些電阻值),因爲平面上一個點至少需要a(x,y)表示.

拆開LCD屏的板子,找到觸摸屏那塊的主控IC:FT5206.

所以我們現在研究這顆IC的SPEC就好了.

IIC總線/SPI總線
INT腳
wake up腳

這裏寫圖片描述

CTP – Capacitive touch panel
CTPM – Capacitive touch panel module

FT5x06 IC 介紹 :支持5點觸摸最多
1.通訊方式:IIC ,SPI
具體到我的開發板溝通方式:
1.通過IIC總線傳送數據
2.通過中斷腳發送中斷當存在有效觸摸時
3.發送wakeup信號給CTPM.

如何獲得touch的數據?
必須需要中斷信號 和串口信號兩者配合獲得數據。
有兩種時序方式:
1)中斷輪詢:有觸摸信號,中斷拉低,串口傳送觸摸位置數據
2)中斷觸發:有觸摸信號,中斷信號做一個週期性的方波信號,當中斷信號爲低,獲取數據。

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

中斷信號的作用:
當有觸摸信號時,CTPM用中斷告訴master device可以讀取數據了
中斷引腳變低,提醒主機讀數據

wake up信號:
主機喚醒IIC的從設備

reg:

device mode val(reg前綴)
Operating(op) 000b read touch point and gesture
Test (Te) 100b read raw data
system info(sy) 001b read system info

關心的REG:
DEVICE_MODE: op,00h//三種工作模式設置

GEST_ID: op,01h :手勢touch獲取

TD_STATUS: op,02 h: 同時偵測到幾個點:1-5

TOUCHn_XH (n:1-5): Op,03h~Op,39h:第n個按下點的x座標的高位[11:8],和按下,釋放,接觸的狀態等 event flag

TOUCHn_XL (n:1-5):Op,04h~Op,3Ah: 第n個按下點的x座標的低位[7:0],單位像素

TOUCHn_YH (n:1-5) :Op,05h~Op,3bh:第n個按下點的y座標的高位[11:8], 和當前按下點的touch id

TOUCHn_YL (n:1-5) :Op,06h~Op,3ch:第n個按下點的y座標的低位[7:0]

ID_G_THGROUP: op 80h:電容觸摸時判斷有效觸摸的閾值/門限 ,要求4的整數倍,默認 280/4

ID_G_THPEAK: op 81h:峯值檢測 閾值 默認 60

ID_G_ THCAL: op 82h: 計算觸摸焦點時的閾值 默認 16

ID_G_ THWATER: op 83h: 描述表面有水時的閾值 默認 60

ID_G_ THTEMP: op 84h: 描述溫度補償的閾值 默認 10

ID_G_ THDIFF: op 85h: 描述一個座標的精度閾值(獲得電容值在誤差偏差多少算是同一個點) 默認 20

ID_G_ CTRL : op 86h:運行模式控制器 0 :no auto jump 1:auto jump

ID_G_ TIMEENTERMONITOR:op 87h: 輸入數據的輸入延時:默認 2

ID_G_ PERIODACTIVE:op 88h: 本寄存器描述了活躍狀態期間,不應小於12 range :3-14

ID_G_ PERIODMONITOR: op 89h:本寄存器描述了監視狀態的狀態,它不應小於30

ID_G_ AUTO_CLB_MODE: op a0h: 該寄存器描述了自動校準模式 00:enable ff ;disable

ID_G_ LIB_VERSION_H: op a1h: 庫版本 高字節

ID_G_ LIB_VERSION_L: op a2h: 庫版本 低字節

ID_G_ CIPHER: op a3h : 供應商 芯片ID

ID_G_ MODE : op a4H: 描述主機中斷狀態 0 :enable int 1: disable int

ID_G_ PMODE : op a5h: CTPM 運行時的功耗模式 0:active 1:監聽,測定 3: sleep

ID_G_ FIRMWARE_ID: op a6h: 應用程序的固件標識

ID_G_ STATE : OP a7h: 配置TPM的運行模式: 0:configuare 1:work 2:校準 3:工廠 4:自動校準

ID_G_ FT5201ID : op a8h: 廠商芯片IC號

ID_G_ ERR : op a9h: 運行時的error code:
8’h00:OK
8’h03:chip register writing inconsistent with
reading
8’h05:chip start fail
8’h1A:no match among the basic input(such as
TX_ORDER) while calibration

ID_G_ CLB : op aah:用來配置TPM當校準 :
Mapping the Array of G_Bank1, total length is
NUM_TX+NUM_RX+1. the array address
increases 1 after every write

Te mode:
不研究了,等寫的時候有用到再看

sys mode:
不研究,用時再看

這裏寫圖片描述

CTPM FT5206 模塊圖:
這裏寫圖片描述

知道了這些,我們便可以自己編寫驅動,或者移植驅動.

獲取哪些點按下了,即按下的位置,獲取手勢等,這就夠了.

不過寄存器還真有點多,鬱悶

下了兩份SPEC,剛纔翻看了另外一份,發現還不一樣,擦~

FT5x06是可編程的,裏面有一個51的微控制器,相當於一個51內核的單片機.LCD實際的線路圖:

這裏寫圖片描述

這裏寫圖片描述
開發板的線路圖的IC是FT5206GE1,而這邊好像說只支持最高3.8英寸屏,而我的開發板是7寸屏,我覺得有問題啊。因爲對不上啊!
我又把LCD拆開了,確認了下沒錯是5206,這真是見了鬼了。

這裏寫圖片描述
這邊我們先不管,那我們的連接方式是IIC。那麼slave的地址是:

這裏寫圖片描述

剩下不明白的等真正研究驅動時,哪邊寫不下去了,再來看唄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章