首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux驱动开发-编写FT5X06触摸屏驱动

前言 这篇文章介绍在Linux下如何编写FT5X06系列芯片驱动,完成触摸屏驱动开发, FT5X06是一个系列,当前使用具体型号是FT5206,它是一个电容屏触摸芯片,内置了8位单片机(8051...所说起触摸屏大家都不会陌生,现在手机、手表、家电、很多地方都支持触摸了。最开始触摸屏都是电阻屏,在诺基亚时代时候,使用触摸屏都是电阻屏,后来Android兴起时候,手机都向电容屏发展了。...,其中TOUCH2,TOUCH3…这些都是存放触摸屏坐标点值。...编写触摸屏驱动 Linux下编写标准触摸屏驱动需要使用到输入子系统,当前文章重点是读取触摸屏坐标,所以示例代码里不会加输入子系统代码,只是在驱动层完成触摸屏笔中断响应,触摸屏坐标点获取并打印。...); /*模块许可证*/ MODULE_LICENSE("GPL"); /*模块作者*/ MODULE_AUTHOR("wbyq"); 3.2 驱动端代码 #include <linux/kernel.h

2.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

电容触摸屏原理以及敦泰TP FT5X06驱动

根据I2C规格设计上手册上了解到,由于I2C接口设计大多采用是集电极开路或者是开漏输出接口,当总线为空闲时候,两根线均为高电平,由于I2CSDA和SCL都具有线与功能,什么是线与?...线与就是有0为0,同1为1,这是数字电路逻辑相关了。...1、高电平 2、低电平 3、高阻态 如图(5),这种无法确定电路状态到底是高电平还是低电平,就是高阻态。...这时候疑问就来了,为什么有些MCU不需要加上拉电阻也可以正常驱动I2C总线呢? 答:有些MCU内部带了弱上拉电阻,这样也可以与I2C总线实现线功能,这样可以保证I2C在空闲时候都为高电平。...但考虑到驱动能力问题,毕竟由芯片输出驱动能力有限,所以在外部接上拉电阻可以增加驱动能力。 至于电阻大小取什么值,可以参考博客末尾文章。

2K30

基于瑞芯微RV1109 Linux触摸屏GT911驱动调试心得(二)-设备树刷厂商给触摸屏固件

之前调试触摸屏文章如下: 基于瑞芯微RV1109 Linux触摸屏GT911驱动调试心得 由于之前调触摸屏一直都对不上点,然后厂商又给了我新驱动代码。...但是还是没能解决问题,所以我初步怀疑是固件问题,因为驱动基本上只要写对了是不会有问题,因此,我让厂商帮我调了一个适配触摸屏固件,最后这个问题就解决了。...厂商给过来固件是一个.cfg文件,使用记事本打开方式打开这个文件,发现是一个16进制数组: 如果是老版本不支持设备树驱动,则直接将这个文件复制到驱动目录路径下,然后将gt9xx_cfg.h打开...然而现在驱动支持设备树了以后,Linux内核设备树里配置触摸屏参数写法是这样: //TP:GT911 &i2c5 { status = "okay"; goodix_ts@5d { compatible...然后将这个数组替换设备树里对应位置即可: //TP:GT911 &i2c5 { status = "okay"; goodix_ts@5d { compatible = "goodix,gt9xx

3.4K30

基于瑞芯微RV1109 Linux触摸屏GT911驱动调试心得

1.2、使用i2cdetect工具确定设备地址 由于我触摸屏是连接在I2C5上,硬件原理图如下所示: 但是我还没有实现它驱动,所以可以通过i2cdetect工具来确定设备I2C地址是多少,ARM...如上图所示,这个5d就表示当前触摸屏I2C地址,为什么是5d呢?你把触摸屏拔掉,再用这个命令查看是不是消失了就可以验证这个问题了。...2、GT911驱动移植 2.1、配置Linux内核支持gt9xx GT911在Linux内核中已经支持了,位于以下路径,如果没有的话就需要跟触摸屏厂商要驱动代码,如果要不到那么就拿着Datasheet自己干吧...2.2.3、配置max-x、max-y max-x 触摸X方向分辨率,由于我触摸屏是1024*600,项目上需要竖屏触摸,所以X方向分辨率配置为600。...max-y 触摸Y方向分辨率,由于我触摸屏是1024*600,项目上需要竖屏触摸,所以X方向分辨率配置为1024。

7.4K70

DRV_03_编写最简单触摸屏驱动程序_基于QEMU

视频观看 百问网驱动大全 List item 编写最简单触摸屏驱动程序_基于QEMU 参考资料: STM32MP157\source\A7\05_Input\03_touchscreen_qemu...* 深入学习内核及驱动 * 使用QEMU可以非常方便地调试内核、查看驱动程序执行过程 * 有助于深入研究内核及驱动 * 学习某些驱动时可以用QEMU模拟硬件,简化硬件操作,把精力放在驱动程序框架本身...准备工作 在2021.03.27,我们给QEMU增加了新功能:模拟触摸屏。 如果你是在这个时间之前下载了百问网QEMU映像,那么需要重新下载。...编写驱动程序 request_irq 在中断处理函数里 上报按下、松开事件 如果触摸屏被按下,启动定时器 如果触摸屏被松开,取消定时器 在定时器函数里 如果触摸屏还是被按下状态...,上报坐标值,并设置下一个超时时间 5.

1.3K30

【技术干货】工业触摸屏驱动开发及异常分析(连载)

触摸屏作为嵌入式产品中常用交互设备,具有交互直观,编程简易等特点,本系列文章将以多种角度分析如何选择合适触摸屏方案及常见故障解决方法。本文主题为电阻屏驱动组成以及多数触摸屏异常分析。...1.1测试环境处理器:AM335x内核版本:Linux-3.2硬件条件:四线电阻屏、五线电阻屏1.2驱动组成部分触摸屏处理流程离不开,响应中断上报事件,对于电容屏同样有效。...代码清单1.2   ADC模块驱动路径:drivers/mfd/ti_tscadc.c最后就来介绍负责抽象整个触摸设备触摸屏驱动文件,触摸驱动内封装了中断、ADC模组寄存器操作、输入事件上报工作。...当系统设备为五线模式时,开启XPP、YNN、XNN、YPP形成电场,INP_5代表采集引脚为AN4。...当系统设备为五线模式时,开启XPP、YNN、XNP、YPN形成电场,INP_5代表采集引脚为AN4。

99430

18.Llinux-触摸屏驱动(详解)

,就是使能CLKCON寄存器某个模块位 4.电阻式触摸屏介绍: 如下图所示,2440开发板使用是4线触摸屏,该4线连接在2440AIN4~AIN7引脚上,该引脚专门是用来接收模拟输入信号....引脚说明: YM: (Y Minus)触摸屏Y坐标的负线,也可以用Y -表示 YP : (Y Power)触摸屏Y坐标的正线, 也可以用Y+表示 XM: (Y Minus)触摸屏Y坐标的负线, 也可以用...X-表示 XP : (Y Power)触摸屏Y坐标的正线, 也可以用X+表示 4.1  4线触摸屏包含了两个阻性层,如下图所示: 当没有触摸按下时,X层和Y层是分离,此时就测不到电压 4.2 测X坐标方向时..., 不编进内核和模块 然后make uImage 编译内核 将新触摸屏驱动模块放入nfs文件系统目录中 7.2然后烧写内核,装载触摸屏驱动模块 如下图, 通过 ls -l /dev/event* 命令可以看到我们触摸屏驱动设备为...、去抖、校准等功能,通常作为触摸屏驱动适配层,为上层应用提供了一个统一接口。

3.3K91

linux驱动ioctl函数,Linux中与驱动相关ioctl函数

ioctl是设备驱动程序中对设备I/O通道进行管理函数,所谓对I/O通道进行管理,就是对设备一些特性进行控制,例如,在串口线上收发数据通过read/write操作,而串口波特率、校验位、停止位通过...ioctl函数是文件结构中一个属性分量,就是说如果你驱动程序提供了对ioctl支持,用户就可以在用户程序中使用ioctl函数控制设备I/O通道。...例如,我们可以在驱动程序中实现write时候检查一下是否有特殊约定数据流通过,如果有的话,那么后面就跟着控制命令(一般在socket编程中常常这样做)。...要记住,用户程序所作只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做事情。...设备节点赋值,”/dev/video0″是真实物理摄像头设备在linux表示 if (videodevice == NULL || *videodevice == 0) { videodevice

2.2K180

linux设备驱动程序第四部分:从如何定位oops对代码调试方法,驱动线「建议收藏」

问题,在应用程序中执行这样程序就会报segmentation fault错误,而因为驱动程序特殊性,出现此类情况后往往会直接造成系统宕机。并会抛出oops信息。...那么我们怎样来分析oops信息呢,甚至依据oops信息来定位详细出错代码行呢?以下就依据一个简单实例来说明怎样调试驱动程序。...怎样依据oops定位代码行 我们借用linux设备驱动第二篇:构造和执行模块里面的hello world程序来演示出错情况,含有错误代码hello world例如以下: #include <linux...printk用法类似printf,仅仅是要注意一下打印级别,具体介绍在linux设备驱动第二篇:构造和执行模块中已有描写叙述,另外须要注意是大量使用printk会严重拖慢系统,所以使用过程中也要注意...介绍完驱动调试方法后。下一篇会介绍下linux驱动并发与竞态,欢迎关注。

81110

Linux系统驱动之最简单LCD驱动_基于QEMU

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 最简单LCD驱动_基于QEMU 本节视频对应源码在GIT...为什么要用QEMU Linux驱动 = 驱动框架 + 硬件操作。 如果硬件操作足够简单,我们就可以把精力放在驱动程序框架上,这才是Linux核心。...使用QEMU,虚拟出一款简单LCD控制器,可以简化硬件操作,让我们把精力放在驱动框架上。 2....修改LCD驱动程序添加硬件操作 4. 下载、安装、运行QEMU 参考:http://wiki.100ask.org/Qemu 5.

2.8K10

Linux驱动开发IIC设备驱动投机取巧

前言 LinuxIIC驱动想必大家都耳熟能详,网上也有很多相关教程。 网上教程总结,比如: 方法问题描述Linux 3.X.X版本之后,设备树+驱动此方法是比较符合linux驱动写法。...他将会操作多个文件 上面的做法都有些困难及弊端存在,经过摸索了一遍LinuxI2C驱动框架,我发现可以很精简写一个I2C设备设备驱动。...而且是放在内核态中,这样处理一下GPIO或者中断什么都很方便。 投机取巧I2C驱动 I2C设备驱动说明 投机取巧I2C驱动是参考I2C总线驱动代码实现。...投机取巧I2C驱动不需要设备树,这也让一些不熟悉设备树小伙伴能编写一个设备驱动。 投机取巧I2C驱动精简,方便理解。...分析I2C总线驱动说明 I2C总线驱动代码在linux源码中--i2c-dev.c中。 在代码中可以看到他提供一套文件操作接口,open,read,write,close接口。

1.8K20

Linux 设备和驱动相遇

一个开发板 上一节最后我们讲到设备树三大作用,其最后一个作用也是最重要作用:设备信息集合。这一节结合设备信息集合详细讲解来认识一下设备和驱动是如何绑定。...我们看到一个开发板有很多设备,这些设备是如何一层一层展开呢?设备和驱动又是如何绑定呢?我们带着这些疑问进入本节主题。...各级设备展开 内核启动时候是一层一层展开地去寻找设备,设备树之所以叫设备树也是因为设备在内核中结构就像树一样,从根部一层一层向外展开,为了更形象理解来看一张图: ?...第一节中讲了总线、设备和驱动模型原理,即任何驱动都是通过对应总线和设备发生联系,故虽然 soc 内部没有具体总线,但是内核通过 platform 这条虚拟总线,把控制器一个一个找到,一样遵循了内核高内聚...这样就完成了 spi 设备注册。 各级设备展开 学到这里相信应该了解设备硬件信息是从设备树里获取,如寄存器地址、中断号、时钟等等。

2.4K40

Linux驱动开发-编写超声波测距模块驱动

示例代码 下面是超声波测距模块驱动代码,将超声波模块输出脚接在开发板支持中断IO口上,配置为上升沿触发,当超声波输出脚检测到高电平就进去中断服务函数,在中断服务函数里调度工作队列,最终在工作函数里完成高电平时间长度获取...,计算测量距离,直接在驱动代码里打印出来。...下面是测量结果: 2.1 驱动代码 #include #include #include #include..._linux_csb_init); /*驱动入口--安装驱动时候执行*/ module_exit(tiny4412_linux_csb_cleanup); /*驱动出口--卸载驱动时候执行*/...MODULE_LICENSE("GPL"); /*设置模块许可证--GPL*/ 2.2 Makefile KER_DRI=/home/wbyq/work/linux-3.5/linux-3.5

1.7K30

Linux驱动实践:如何编写【 GPIO 】设备驱动程序?

目录 示例程序目标 编写驱动程序 编写应用程序 卸载驱动模块 在前几篇文章中,我们一块讨论了:在 Linux 系统中,编写字符设备驱动程序基本框架,主要是从代码流程和 API 函数这两方面触发。...编写驱动程序 以下所有操作工作目录,都是与上一篇文章相同,即:~/tmp/linux-4.15/drivers/。...创建驱动目录和驱动程序 $ cd linux-4.15/drivers/ $ mkdir mygpio_driver $ cd mygpio_driver $ touch mygpio.c mygpio.c...文件内容如下(不需要手敲,文末有代码下载链接): #include #include #include <linux/ctype.h...从代码中可以看出:驱动程序使用 alloc_chrdev_region 函数,来动态注册设备号,并且利用了 Linux 应用层中 udev 服务,自动在 /dev 目录下创建了设备节点。

4.9K30

Linux 总线、设备、驱动模型探究

设备驱动模型需求 总线、设备和驱动模型,如果把它们之间关系比喻成生活中例子是比较容易理解。...没错,Linux 内核里就是运用了这种设计思想去对设备和驱动进行适配隔离,只不过在内核里我们不叫做适配层,而取名为总线,意为通过这个总线去把驱动和对应设备绑定一起,如图: ?...基于这种设计思想,Linux 把设备驱动分为了总线、设备和驱动三个实体,这三个实体在内核里职责分别如下: ?...最底层是不同板子板级文件代码,中间层是内核总线,最上层是对应驱动,现在描述板级代码已经和驱动解耦了,这也是 Linux 设备驱动模型最早实现机制,但随着时代发展,就像是人类贪婪促进了社会进步一样...完美的 Linux 怎么会允许这样事情存在,于是乎,设备树(DTS)就登向了历史舞台,下一篇内容将探讨设备树实现原理和用法。 【部分内容整理于宋宝华老师课程】

6.4K41

谈谈Linux内核驱动coding style

最近在向Linux内核提交一些驱动程序,在提交过程中,发现自己代码离Linux内核coding style要求还是差很多。...如果去看drivers/staging下代码,就会发现很多驱动程序都没有严格遵守内核coding style,而且在很多驱动程序TODO文件里,都会把"checkpatch.pl fixes"作为自己目标之一...在Linux内核coding style里,switch和case要求有相同缩进。本例代码很少,错误也只有这一个,手动修改很方便。如果类似的缩紧错误很多怎么办?...比如,Linux内核coding style要求,行尾不能有空格(包括Tab),去除这些空格就可以借助sed。 我自己习惯很差,经常在代码行尾留下一些空格。...else { otherwise(); } 空格 4、在关键字“if, switch, case, for, do, while”之后需要加上空格,如: if (something) 5

1.7K10

多云发展5驱动因素

有很多因素在推动企业采用多云环境,以下将介绍5驱动因素: 1、加速云端创新 新兴技术是多云环境采用主要推动因素,我们目睹了顶级云提供商、开源组织和厂商在云端创新速度加快,这为IT组织提供了构建多云环境更多选择...虽然与云端创新保持同步可能对IT构成挑战,但新功能部署和技术更新为用户了解云功能并创建强大线环境提供了基础。...3、监管要求 HIPAA和欧盟新“通用数据保护条例”(GDRP)等数字监管措施以及数据驻留和合规性要求是多云环境另一个驱动因素,在全球不同地区,法律法规和公司政策要求企业数据驻留在特定地点。...随着云管理平台和工具成熟,组织可以更轻松地决定在多个公有云或私有云中运行哪个应用程序。 5、公有云提供商提供多云功能 随着企业对公有云和内部数据中心问题进行评估,多云环境成为新常态。...这种开放将有助于推动公有云和私有云采用。 结论 组织通常需要多个云端部署来满足多个应用程序和部门需求,由于上述5驱动因素,多云时代已经到来并且加速发展。

79450

基于Linux智能家居设计(3)

(4) 触摸板接口支持4线电阻式触摸板;LCD接口支持4.3寸TFT LCD,利用触摸屏实现人机交互。...ZigbeeP0_6与DHT11数据port相连接,实现温湿度数据传输;P1_4、P1_3、P1_2、P1_1分别接到UL2003A芯片驱动电灯;可调光敏传感器数据port接P1_5port;...P1_7接在减速电机(窗帘)驱动器上,控制窗帘开关。P0_4、P0_5与门禁模块相连接。读取门禁卡信息;P0_0与舵机信号线相连,控制门开关。...TFT触摸屏和ARM之间硬件框图如图2-9所看到: TFT触摸屏和S3C6410硬件接口图 门禁部分 门禁系统使用是RFID读卡模块RC522,利用舵机控制门开关,当钥匙不对时刷卡会出现蜂鸣器报警...直到正确钥匙到了开门才停止报警。门禁部分基本框图如图2-10所看到: 门禁部分基本框图 后面的在基于Linux智能家居设计(4)。

85140
领券