天天看點

FT5316調試記錄

這個敦泰tp晶片的調試,沒什麼大問題,但也做一些記錄。

1.這個晶片理論上可以支援10手指,但為了相容他們之前的做法,現在隻是彙報了第一個手指的坐标點,相當于隻是單點。

2.這個晶片提供三種工作模式,通過設定寄存器0,可以在不一樣的工作模式下工作;預設寄存器0的值為0,即正常操作模式,在這個模式下可以讀取按鍵坐标;

  通過核心API  i2c_transfer,可以一次性讀取多個寄存器。

static int ft5316_i2c_read(struct i2c_client *client,u8 addr,u8 *data, int length)

{

struct i2c_msg msgs[] = {

{

.addr = client->addr,

.flags = 0,

.len = 1,

.buf = &addr,

},

{

.addr = client->addr,

.flags = I2C_M_RD,

.len = length,

.buf = data,

},

};

return  i2c_transfer(client->adapter, msgs, 2);

}

3.剛開始調試完之後用tslib 庫進行校準,測試,沒有反應;

觸摸屏有三種工作方式,down touch up;當down 和 touch的時候需要彙報一個完整的資料包,包括sync;

  當up的時候,不用彙報坐标點,隻需彙報

input_report_key(input, BTN_TOUCH, 0);

input_report_abs(input, ABS_PRESSURE, 0);

input_sync(input);

  隻需彙報這三個值就行。

     通過檢視代碼,發現沒有處理當手指為0(up);

通過修改,當手指大于0時候(down touch),彙報完成資料;

       當手指為0時候,隻彙報input_report_key(input, BTN_TOUCH, 0);

input_report_abs(input, ABS_PRESSURE, 0);

input_sync(input);

      修改之後,可以用tslib工具正常測試。

4.正确加載驅動之後,

  在/sys/class/input/ 下生成 input0

 cat /sys/class/input/input0/event0/uevent   可以看到主次裝置号,以及裝置名字,也就是在/dev下面的名字

 MAJOR=13

MINOR=64

DEVNAME=input/event0

  在/dev下面,确實可以看到ls -l /dev/input/event0 

5.移植tslib,正确設定環境變量,測試ok

繼續閱讀