FT5316调试记录

来源:互联网 发布:scratch少儿趣味编程 编辑:程序博客网 时间:2024/05/20 19:15

这个敦泰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

原创粉丝点击