【f1c200s/f1c100s】FT5426触摸屏驱动适配

  • 前言
  • 设备树配置
    • IIC控制器
    • FT5426设备树配置
  • 内核配置
  • 结果

前言

  1. 嵌入式linux下的触摸屏驱动是基于input子系统的,当触摸发生时,内核上报触摸事件至用户层。
  2. 我使用的显示屏是正点原子的7寸RGB接口显示屏,触摸芯片为FT5426。和其他很多外设一样,FT5426的驱动linux内核(5.2)也是自带的,FT5426的数据接口是IIC,因此我们只需要在设备树中配置IIC并且打开内核相关功能即可。

设备树配置

IIC控制器

我的板子的触摸屏IIC数据线接到了PE11、PE12引脚,因此需要首先配置引脚为IIC功能。

因为PE11、PE12可复用为i2c0,因此在pio: pinctrl@1c20800节点内添加i2c0子节点,将这俩复用为i2c0。

pio: pinctrl@1c20800 {compatible = "allwinner,suniv-f1c100s-pinctrl";reg = <0x01c20800 0x400>;interrupts = <38>, <39>, <40>;clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;clock-names = "apb", "hosc", "losc";gpio-controller;interrupt-controller;#interrupt-cells = <3>;#gpio-cells = <3>;//以下是添加的i2c0_pins: i2c0_pins {pins = "PE11", "PE12";function = "i2c0";};
};

这里的IIC控制器是源码中自带的,为了方便整理何记录,将其复制过来。
其中的寄存器首地址、范围、中断号都是能够在f1c200s的参考手册中查询到的。

i2c0: i2c@1C27000 { //0x1C27000为I2C0的寄存器首地址compatible = "allwinner,sun6i-a31-i2c"; reg = <0x01C27000 0x400>;//寄存器范围interrupts = <7>; //i2c0中断号clocks = <&ccu CLK_BUS_I2C0>;resets = <&ccu RST_BUS_I2C0>;pinctrl-names = "default";pinctrl-0 = <&i2c0_pins>; //i2c0引脚需要为pio中复用的引脚status = "disabled";#address-cells = <1>;#size-cells = <0>;
};

FT5426设备树配置

然后需要将FT5426的硬件信息添加至设备树。原理图中给出了FT5426的硬件连接

功能 引脚
SDA PE12
SCL PE11
RESET复位 PE10
INT中断 PE5

我们需要在设备树中添加以上信息,SDA、SCL在IIC控制器设备树配置中已经编写了,还需要配置剩余的两个引脚功能,其中RESET配置为输出,INT配置为输入,在pio节点中追加以下内容:

&pio {ts_reset_pin: ts_reset_pin {pins = "PE10";function = "gpio_out";};ts_int_pin: ts_int_pin {pins = "PE5";function = "gpio_in";};};

然后在i2c0节点中中追加如下内容:
关于ft5426的子节点如何编写,内核自带的绑定文档给出了详细的编写方法,可见Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt

&i2c0 {status = "okay";//使能i2c0驱动ft5426: touchscreen@38 { //38为设备地址(16进制)compatible = "edt,edt-ft5406"; //兼容性配置reg = <0x38>;//设备地址interrupt-parent = <&pio>;//gpio中断interrupts = <4 5 IRQ_TYPE_EDGE_FALLING>; //PE5为中断引脚,下降沿触发pinctrl-names = "default";pinctrl-0 = <&ts_int_pin>; //中断pinctrlreset-gpios = <&pio 4 10 GPIO_ACTIVE_LOW>; //PE510为复位引脚,低电平有效touchscreen-size-x = <800>; //屏幕分辨率touchscreen-size-y = <480>;touchscreen-swapped-x-y; //可选项,屏幕和触摸屏坐标反了则使能此项};
};

至此,设备树编写完毕。

内核配置

  1. 首先是使能IIC控制器和设备树对i2c设备的支持;
    menuconfig中路径如下。至于为什么全志芯片使用的是marvell的i2c控制器,可以参考内核绑定文档:Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt

  2. 然后是使能FT5426的驱动。

结果

编译后拷贝内核和设备树至板子,不出意外在启动时会出现驱动加载成功的信息,如下图所示。
内核启动时,先后加载了i2c驱动和ft5x06的驱动。


进入系统后利用evtest工具进行测试,当手指接触触摸屏时,终端输出指针位置等信息。

【f1c200s/f1c100s】FT5426触摸屏驱动适配相关推荐

  1. F1C100S电阻触摸屏驱动

    https://whycan.cn/t_2143.html 移植触摸屏驱动. 移植后遇到的问题,触摸中断一直在触发.[原因:由于rtp引脚复用没有设置] //读0x01C20800寄存器,可以看到没有 ...

  2. 【f1c200s/f1c100s】mangopi自制linux开发板驱动适配进度(PCB、代码开源)

    [f1c200s/f1c100s]mangopi自制linux开发板驱动适配进度(PCB.代码开源) 目前进度 过程记录博客 目前进度 目前自制的mangopi设备驱动适配已完成部分包含: 基于扫描的 ...

  3. 【迅为iMX6Q】开发板 Linux 5.15.71 RTL8211E 以太网驱动适配

    相关参考 [迅为iMX6Q]开发板 u-boot 2022.04 SD卡 启动 [迅为iMX6Q]开发板 u-boot 2020.04 RTL8211E 以太网驱动适配 [迅为iMX6Q]开发板 Li ...

  4. STM32MP157驱动开发——多点电容触摸屏驱动

    STM32MP157驱动开发--多点电容触摸屏驱动 一.简介 二.电容触摸屏驱动框架简介 多点触摸(MT)协议详解 三.驱动开发 1.添加 FT5426 设备节点 2.FT5426 节点配置 3.驱动 ...

  5. LVGL8.3 集成 ST7789V 显示驱动和 CST816T 触摸屏驱动

    LVGL8.3 集成 ST7789V 显示驱动和 CTS816S 触摸屏驱动 起因 效果(正常显示,触摸屏可调换X,Y轴) 使用方式 前提 操作步骤 最后 参考 起因 LVGL的ESP32 Drive ...

  6. Android触摸屏驱动屏幕翻转

    项目中移植了Android触摸屏驱动,后来需要把屏幕翻转180度,此时触摸的坐标是没有适配的,修改以下代码即可: frameworks/native/services/inputflinger/Inp ...

  7. WINCE6.0+S3C6410的触摸屏驱动

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

  8. linux 触摸屏驱动编写

    早在诺基亚手机还比较流行的时候,那时候触摸屏用的还不多.但是随着触摸屏手机.即智能手机的流行,触摸屏基本成了手机的标配.所以,今天可以看看触摸屏驱动在linux上是如何进行的. 1.驱动目录 driv ...

  9. linux内核关闭触摸屏校准,linux内核usb触摸屏驱动bug调试- selected device is not a touchscreen I understand...

    近期给客户调试一块数控板,今天客户带过来一个屏,并且有一个usb的触摸屏芯片接在屏上.屏很快就弄好正常显示. 触摸屏在内核下找到usb 触摸屏驱动,内核启动后这个usb转的触摸屏也正常找到,注册为ev ...

最新文章

  1. Python爬虫入门(2):爬虫基础了解
  2. 《互联网+流通——F2R助力传统产业创新与转型》一一第1章 “互联网+”的新时代...
  3. Content Security Policy 入门教程
  4. 盈利模型的内容都有哪些?
  5. TCP粘包拆包基本解决方案
  6. Windows XP Embedded SP2 + 简体中文语言包
  7. python编写tftp服务器
  8. 纸牌、挖金子源码链接
  9. jclasslib安装
  10. Android、Symbian系统手机通讯录和Google Gmai同步
  11. 蓝桥杯质数的后代码c语言,质因数
  12. 微信支付开通流程,及微信支付商户号申请详细流程介绍
  13. java软件更换皮肤怎么做_java窗体程序更换皮肤方法详细步骤
  14. 【多目标进化优化】MOEA 的分类
  15. 有关人、社会的本质的思考--现代的捕蛇者说
  16. 生成统计图类pchart---中文翻译手册
  17. 股东转让股权后是否还应承担出资义务
  18. Java面试官:java高级工程师简历csdn
  19. 源码通透-mybatis源码分析以及整合spring过程
  20. linux下批量改文件名命令,Linux 批量更改文件名命令

热门文章

  1. 360急救盘一直停在linux界面,利用360急救盘解决电脑操作系统进不去的情况
  2. Android 反编译初探-基础篇
  3. win8.1系统如何激活
  4. echarts怎么控制圆饼图的大小
  5. ubuntu tenda u12 无线配置
  6. MS Sql Server查询数据库文件大小和剩余空间,数据库日志压缩
  7. 思科防火墙——实验练习加命令
  8. 出师一表通今古,夜半挑灯更细看
  9. qq电脑登录二维码加载失败怎么回事(解决办法)
  10. XML格式文件详解及Java解析XML文件内容方法