本文设备使用触摸屏为 FT6336U 芯片
1 内核配置
内核需要打开对应驱动,这里恰好有该芯片驱动文件。
drivers/input/touchscreen/focaltech_touch/
Device Drivers → Input device support → Touchscreens : CONFIG_TOUCHSCREEN_FTS
需要注意:该驱动有自动升级的功能,最好前期就关闭它。
我最彻底,直接把代码升级部分全都注释掉。否则屏幕可能需要返厂维修。
2 DTS配置
电路图中
](https://img-blog.csdnimg.cn/3f00ba1ea8c846bbbc60aac4e0ffb8d4.png)
该触摸屏使用的是I2C-1接口。
i2c1@1{
compatible = "sstar,i2c";
reg = <0x1F223200 0x200>,<0x1F203c00 0x200>,<0x1F207000 0x200>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&CLK_miic1>;
i2c-group = <1>;
/*
* padmux: 1 -> PAD_GPIO2, PAD_GPIO3
* 2 -> PAD_HDMITX_SCL, PAD_HDMITX_SDA
* 4 -> PAD_TTL22, PAD_TTL23
* 5 -> PAD_SD_CLK, PAD_SD_CMD
*/
i2c-padmux = <1>;
/*
* speed: 0 -> HWI2C_HIGH(high speed: 400 KHz)
* 1 -> HWI2C_NORMAL(normal speed: 300 KHz)
* 2 -> HWI2C_SLOW(slow speed: 200 KHz)
* 3 -> HWI2C_VSLOW(very slow: 100 KHz)
* 4 -> HWI2C_USLOW(ultra slow: 50 KHz)
* 5 -> HWI2C_UVSLOW(ultra-very slow: 25 KHz)
*/
i2c-speed = <3>;
i2c-en-dma = <0>; // 0: disable; 1: enable;
status = "ok";
focaltech@48{
compatible = "focaltech,fts"; // do not modify
reg = <0x48>; // do not modify
interrupts-extended = <&ms_gpi_intc INT_GPI_FIQ_GPIO0>;
focaltech,reset-gpio = <PAD_GPIO1>; // RST脚
focaltech,irq-gpio = <PAD_GPIO0>; // INT脚
focaltech,max-touch-number = <3>; // 最大触点数
focaltech,display-coords = <0 0 720 720>; // 分辨率
interrupt-names = "focaltech_int";
};
};
注意:依据芯片官方文档I2c地址应该是 0x38,不过不知道怎么,该屏幕售后说需要使用0x48.
3 测试
cat /dev/input/event0
./tp_test
GET: type 3 code: 39 value:14
GET: type 3 code: 35 value:90
GET: type 3 code: 36 value:71
GET: type 1
GET: type 0
GET: type 3 code: 39 value:-1