這次需要支援5線touch panel,硬體選擇透過egalax touch IC(MER4485XRU) 控制
我們用的是電阻式touch 所以必須要再做touch 校正

Egalax touch IC 支援界面有USB and I2C
在IC韌體部分有bootload and firmware 兩部分,其中firemware用來跟上層drivere溝通
default IC是支援USB interface , 如果要支援i2c則是bootload and firmware兩個都要支援
如果bootload 沒有支援可以發現INT pin不會正常low 開機也不會有 high -> low -> high 變化
另外 透過i2cTOUSB 轉板 透過i2cTOUSB 轉板
如果firmware 沒有支援可以發現, 開機之後 INT pin不會正常low 可以透過i2cTOUSB轉板加上Windows 程式讀出firmware

Egalax Touch IC 在一開機時會丟一個i2c 封包, 如果封包沒有去接受時 INT pin 會keep low

egalax firmware 有支援USB and i2c interface 運作方式是

  1. 一上電會透過D+/D-看溝通有沒有成功去決定要不要走USB 界面
    當USB 封包溝通沒有成功時 會導向i2c界面
  2. INT 這根Pin 是有egalax 自己決定要不要拉low, 而且只有在i2c 這個interface時才會有作用
    一上電時INT會拉上3.3v接下來egalax 會拉low ,這時候master端要去處理i2c封包 要不然會keep low狀態

校正方式

在透過firmware溝通可以做到校正功能 , 這邊要注意因爲跟收touch資訊是透過i2c
fiemware溝通也是透過i2c 所以interrupt是共用的 kernel driver 這邊會將所有的封包都收掉
所以需要區分並且將跟fiemware溝通的回報值另外丟出來了到user space 這樣才有辦法處理