Exynos4412——触摸屏驱动

⑧tiny4412 Linux驱动开发之触摸屏(TouchScreen)驱动程序 本节主要是说一下触摸屏驱动的编写. 触摸屏输入输入设备,所以我们本次通过输入子系统的方式来实现,输入子系统的框架图如下: 然后,我们看一线电路图的触摸屏部分: 可以看到触摸屏是通过I2C接口进行数据和命令的传输,接在了i2c1上面,然后,同时接了一个中断引脚,这个中断引脚主要是在初始化和有数据时使用,比如当用户按下触摸屏产生信息后,首先会产生一个中断,告诉soc有数据来了,这个我们就可... 阅读详情

优快云仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。
本博文对应地址: https://hceng.cn/2017/12/26/Exynos4412——触摸屏驱动/#more
移植Exynos4412的I2C接口触摸屏驱动。

这应该是Exynos4412 LCD部分的最后一部分了。
为了去探索LCD驱动,前面做了一系列的准备工作,最后终于完成了LCD驱动,现在只剩下触摸屏这个最后的“尾巴”。

1.工作原理

前面LCD之backligth部分说了,友善之臂这个屏,为了改善大尺寸四线电阻触摸屏的性能,外加了一个低成本的MCU去控制专业的触控芯片,将滤波后的稳定数据通过GPIO传回到ARM上。
但我的板子LCD是电容屏,查阅相关资料后得知,是通过一个FT5406触摸屏芯片实现的电容触摸功能。

根据FT5x06.pdf手册可得知其工作的框架:

当触摸屏上发生触摸操作时,通过TXn(Transmit output pin)和RXn(Receiver input pins)传输给FT5406,FT5406经过处理后,将坐标信息通过Serial Interface(I2C or SPI)发给Host(开发板)。

查阅FT5x06.pdf,可以看到FT5x06对外有如下接口:

I2C/SPI:与主机进行数据交换的接口
INT:中断信号接口,通知主处理器触摸数据准备好读取
WAKE:主机将FT5x06从休眠模式切换到主动模式的中断信号
RST:外部低电平信号复位芯片

因此,开发板至少的有I2C/SPI和INT与FT5x06相连。

2.原理图

  • Tiny4412-1412-Schematic.pdf:

    I2C使用I2C1,INT使用GPX1_6引脚。

  • Tiny4412SDK-1506-Schematic.pdf:

    在底板上经过一次电平转换引出到LCD1接口上。

  • LCD-S702-1509.pdf:


    LCD上并没有FT5x06的相关信息,只提供了一个CON5接口。
    友善之臂封装好了LCD和触摸屏,对外只提供I2C接口。

对于驱动来说,触摸屏就是一个带中断的信号的I2C设备。

3. 设备树文件

ft5406 作为 i2c_1 的子节点。

&i2c_1 {
    samsung,i2c-sda-delay = <100>;
    samsung,i2c-max-bus-freq = <400000>;
    status = "okay";
    polytouch: edt-ft5x06@38 { 
        compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
		reg = <0x38>;
		interrupt-parent = <&gpx1>;
		interrupts = <6 IRQ_TYPE_EDGE_FALLING>; 
        touchscreen-size-x = <800>;
        touchscreen-size-y = <480>;
    }; 
};

内核已经有了ft5x06驱动,所有对应的也会有设备树的描述文件:
linux-4.13.9/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt
linux-4.13.9/Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt
详细介绍了设备树的必要参数和非必要参数。

4. 驱动程序

内核中ft5x06驱动所在路径:
linux-4.13.9/drivers/input/touchscreen/edt-ft5x06.c

这块的内容,暂时不想分析,涉及I2C子系统和输入子系统,回头再慢慢分析。

5. 测试程序

{% codeblock lang:c [app.c] https://github.com/hceng/learn/blob/master/tiny4412/03_touchscreen/app.c %}
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/input.h>

int main()
{
int keys_fd;
char ret[2];
struct input_event t;

keys_fd = open("/dev/input/event0", O_RDONLY);    //打开TP设备  
if(keys_fd<=0){  
	printf("open /dev/input/event0 device error!\n");  
	return 0;  
}  

while(1)  
{     
	if(read(keys_fd, &t, sizeof(t))==sizeof(t)) 
    {  
		if (t.type == EV_KEY)
        {  
			printf("  type: EV_KEY, event = %s, value = %d \r\n",   
					t.code == BTN_TOUCH ? "BTN_TOUCH" : "Unkown", t.value);   
		}  
		else if(t.type == EV_ABS)
        {  
			printf("  type: EV_ABS, event = %s, value = %d \r\n",   
					t.code == ABS_X ? "ABS_X" :   
					t.code == ABS_Y ? "ABS_Y" :   
					t.code == ABS_PRESSURE ? "ABS_PRESSURE" :"Unkown", t.value); 
		}  
	}  
}     
close(keys_fd);  

return 0;  

}
{% endcodeblock %}

参考博客:Linux和android下测试键盘和触摸屏

多点电容触摸驱动(基于gt911) 多点电容触摸的驱动使用到的知识主要有input子系统、gpio硬件中断、iic子系统,tslib测试等知识点,下面将针对多点电容触摸屏的驱动开发的四个知识点进行展开,以及gt911芯片的知识,官方gt9xx驱动的移植。 阅读详情

相关推荐

从Galaxy S3到开发板:用Tiny4412复刻经典手机CPU的嵌入式开发体验

本文详细介绍了如何通过Tiny4412开发板复刻三星Galaxy S3的Exynos 4412处理器,探索嵌入式开发的实践与优化。从硬件架构解析到开发环境搭建,再到传感器集成和图形性能调优,为开发者提供了全面的技术指南。同时,文章还展示了该开发板在智能家居、工业视觉检测等物联网场景中的创新应用。

weixin_28729205的博客 417

【TINY4412】LINUX移植笔记:(23)设备树LCD触摸屏驱动

【TINY4412】LINUX移植笔记:(23)设备树 LCD触摸屏驱动 宿主机 : 虚拟机 Ubuntu 16.04 LTS / X64 目标板[底板]: Tiny4412SDK - 1506 目标板[核心板]: Tiny4412 - 1412 LINUX内核: 4.12.0 交叉编译器: arm-none-linu

大水猫 4419

FT5506 FT5606 FT5816 Datasheet(V06)-Preliminary

FT5506 FT5606 FT5816数据手册,True Multi-Touch Capacitive Touch Panel Controller

电容屏FT5x06驱动与设计

电容屏FT5x06驱动与设计 说明书               拟 制 人:周亦行 核 准 人: 发布单位: 发布时间:                           版本变更说明 版本 变更说明 作者 日期 V1.00 初始版本 周亦

MTzhou的专栏 6932

ft5x06触摸驱动数据手册

ft5x06触摸驱动数据手册

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 190

Android底层驱动移植--gslx680电容触摸屏驱动

一、具体操作配置1.添加GSLX68X到内核的Kconfig配置路径:xxx/kernel/drivers/input/touchscreen/Kconfig 2.编写Makefile文件路径:xxx/kernel/drivers/input/touchscreen/Makefile 3.在触摸屏驱动目录xxx/kernel/drivers/input/touchscreen/文件夹下,添加一下

zgkxzx的专栏 1万+

保姆级教程:用BMS的HVIL检测电路,手把手教你排查高压互锁故障(附PWM/直流源方案对比)

本文详细解析了BMS中的HVIL检测电路,通过对比直流源与PWM两种方案,提供了一套系统化的高压互锁故障诊断流程。从电路原理到实战技巧,帮助维修人员精准定位故障根源,提升电动汽车高压系统的安全性和可靠性。

weixin_29300241的博客 389

gslx680.c触摸屏驱动

转:http://blog.youkuaiyun.com/zgkxzx/article/details/56980769 前言 gslx680电容触摸屏是一种目前Android嵌入式设备中比较常用的触摸屏类型。这里我们以Exynos4412为Android bsp平台,移植一款gslx680电容触摸屏。 关于电容触摸屏的原理,这里不进行讲解,不明白的,可以参照一下博客:http:

WXXGoodJob的博客 5432

ctfshow WEB web4

ctfshow WEB web4

weixin_68416970的博客 720

【C++PTA】6-1 Point类的运算 (10 分)

定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。 函数接口定义: 实现Point类。 裁判测试程序样例: /* 请在这里填写答案 */ int main(int argc, char const *argv[]) { P

libertye的博客 2367

Linux下触摸屏驱动程序分析

本文以Linux3.5--Exynos4412平台,分析触摸屏驱动核心内容。Linux下触摸屏驱动(以ft5x06_ts为例)需要了解如下知识:1.  I2C协议2.  Exynos4412处理器的I2C接口3.  I2C接口触摸屏基本知识4.  bus-dev-drv模型5.  Linux下I2C总线驱动框架6.  Linux下输入子系统7.  Linux下中断处理8.  Linux下工作队列机...

zjy900507的博客 3335

Electron多窗口开发避坑指南:Pinia状态同步的3种解决方案对比

本文深入探讨了在Electron多窗口应用中实现Pinia状态同步的三种核心方案。针对Electron多窗口架构下状态隔离的挑战,文章对比了基础事件通信、共享存储以及智能Pinia插件等方案的优劣与适用场景,并提供了生产级的实现指南与选型建议,帮助开发者构建健壮高效的桌面应用。

spice的博客 479

Internal error: Oops: 37 [#1] PREEMPT SMP ARM。处理方法果然touchscreens被编译了,但是我的触摸屏没有接,取消此编译选项,重新编译,开发成功启动

Internal error: Oops: 37 [#1] PREEMPT SMP ARM。处理方法果然touchscreens被编译了,但是我的触摸屏没有接,取消此编译选项,重新编译,开发成功启动

二进制模----细微行动改变影响世界 2128

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1049

手把手教您如何在飞牛NAS上部署OpenClaw(Clawdbot/Moltbot)智能助手,接入钉钉,0成本使用(万字保姆级教程)

想在飞牛NAS上部署一个24小时待命的AI助手?🤖 本文手把手教您如何在飞牛NAS上部署一个完全免费的OpenClaw智能助手 ✅

XiaoqiangClub的博客 7226

数码相框(LCD、I2C)

一:项目介绍 该项目最终实现的功能很简单,手指在触摸屏左滑(下一张图片),右滑(上一张图片) 1.1软硬件资源 硬件:pc机,ARM Cortex-A9开发板 软件:linux 操作系统 1.3项目流程 本项目主要分为三大模块: 一:LCD驱动编写 二:I2C驱动编写 三:使用I2C读取触摸屏上的数据,...

anyifu6885的博客 958

ISP 芯片作为独立设备节点的驱动实现要点:多平台结构差异与工程部署策略解析

随着 ISP(Image Signal Processor)从 SoC 集成形态向独立芯片模块演进,在多摄系统、高动态场景、AI 图像前处理等需求下,ISP 作为单独设备节点进行驱动设计已成为主流趋势。尤其在多 SoC 平台(如高通、联发科、展锐、Rockchip)中,不同厂商对 ISP 的抽象方式与驱动接口处理存在显著差异。本文以实际工程为基础,从 Linux 内核下的设备注册流程、media\_entity 配置、VideoDevice 分配、数据 DMA 管理、与 sensor 的流同步控制等关键点展

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1461

Exynos4412——LCD驱动

优快云仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。 本博文对应地址: https://hceng.cn/2017/12/22/Exynos4412——LCD驱动/#more Exynos4412的LCD驱动。 终于迎来了LCD驱动,本该10月初就搞定的事,一直拖到了12月份。 不过,晚来总比不来好,完成这个心结,才好进入下一个阶段。 1. 基础...

hceng_linux 4465

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Exynos4412——LCD之backligth

优快云仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。 本博文对应地址: https://hceng.cn/2017/11/22/Exynos4412——LCD之backligth/ Exynos4412的背光驱动,采用友善之臂的“一线触摸”。 1.背景 关于一线触摸友善之臂官方说明:LCD-S702/zh 在大部分的ARM主控板中,我们发现...

hceng_linux 1335

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

十五、电容触摸屏驱动

在读者学习本章以及后续章节之前,最好拥有ADC和触摸屏裸机基础,可以参考:ADC和触摸屏编程。 和按键驱动类似,触摸屏也是通过电平来体现按下或松开。因此如果想要写出通用的触摸屏驱动,需要使用输入子系统完成。 考虑到我是用的并不是之前的TINY4412,在此给出下文所分析的文件: https://files.cnblogs.com/files/Lioker/15_ts.z...

aa508508的博客 871

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: Exynos4412——LCD驱动
下一篇: 嵌入式Linux网络编程——TCP/UDP
hceng_blog
博客等级 码龄10年 263粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值