OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5479|回复: 8

STM32F407 7寸电容屏一直被虚拟按下 感觉就是个鬼触摸,路过的大神帮忙把这鬼收了吧

[复制链接]

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2017-3-3 14:19:59 | 显示全部楼层 |阅读模式
20金钱
遇到个鬼问题:7寸电容屏在正常运行时,按下任意一个位置后松手,如x:400,y:120,然后通过串口进行软件复位(通过串口或者其他方式调用NVIC_SystemReset()),复位起来之后,就会一直检测到x:400,y:120这个位置有按下,实际是并没有任何东西触碰。此时,用手任意按下触屏后松手,触屏就正常了。通过软件复位出现的概率比较大,十次有八次会出现。通过直接拔电再插电的方式出现的概率就比较小。


硬件配置为 STM32F407,原理图同探索者,7寸电容屏,驱动电路也是用原子哥的,但触控芯片是FT5316(原子哥的是FT5206),FT5316的驱动和FT5206的差不多,已经完全能够使用。


目前对此问题做出的调试有:
1.降低FT5316的灵敏度,即FT5316_WR_Reg(FT_ID_G_THGROUP,temp,1);中temp的值由20改大到140也不行。
2.修改激活周期,即FT5316_WR_Reg(FT_ID_G_PERIODACTIVE,temp,1); 的temp由12改成其他值也不行。
3.延长触控芯片复位时间,即FT_RST=0;        delay_ms(20);//20         FT_RST=1;                delay_ms(50);,就是delay_ms(20);改成更大,达到几秒钟也不行。
4.在对触控芯片的寄存器配置完毕之后,检测是否有触点按下,判断到之后对触控芯片进行复位,即在读取芯片版本号之后,读取触摸点状态FT5316_RD_Reg(FT_REG_NUM_FINGER,temp,1);,判断到if(temp>0 && temp<6)后直接FT_RST=0;delay_ms(1000);delay_ms(1000);delay_ms(1000);delay_ms(1000);FT_RST=1;        ,后面不重新配置触控芯片的寄存器或者重新配置一遍,也还是不行。
5.对FT_RST增加下拉电阻,以保证有效复位触控芯片,也不行。在上电检测到鬼触摸之后,直接把FT_RST接地,会停止,松开之后,还是仍然检测到那个位置有按下的触摸值。
6.更换另外一块电容屏,问题依旧~~~

其实原子哥F407探索者的软件和硬件各方面还是很稳定的,就是自己一换个芯片啥的就能把自己折腾死。
另外说明一下,FT5316和FT5206的驱动是兼容的,就是需要在原子哥的iic那里需要稍稍改动一下,写和读那里增加个1us的延时就好了,至于FT5206.c则不用改动,所以程序就不附上了,就是想听听大家的建议,看看有没有哪位大神遇到过这么诡异的问题。哎~~希望各位路过的大神能帮帮忙出出主意把这鬼给收了


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-3-4 12:46:06 | 显示全部楼层
你在main函数初始化的时候,就把这个坐标清掉,试试看。
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-3-6 09:11:54 | 显示全部楼层
正点原子 发表于 2017-3-4 12:46
你在main函数初始化的时候,就把这个坐标清掉,试试看。

触控芯片的寄存器好像是可以清零的,软件上是可以实现记住这个错误的坐标,然后给tp_dev.x[0]和tp_dev.y[0]赋0,但只要重启之后没有触摸,去读触控芯片的触摸点状态时都会读得到那个坐标被按下。现在程序上是不影响使用了,但一直这么被“按下”,总感觉哪里有问题,但又找不到问题所在
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-3-6 09:24:17 | 显示全部楼层
正点原子 发表于 2017-3-4 12:46
你在main函数初始化的时候,就把这个坐标清掉,试试看。

少了个不字了,触控芯片的寄存器好像是不可以直接清零的,按道理FT_RST=0;复位了芯片之后,寄存器的值是清零了,但不管怎么操作,感觉这个坐标就是被一直按下。当然软件上是可以实现记住这个错误的坐标,然后给tp_dev.x[0]和tp_dev.y[0]赋0,但只要重启之后没有触摸,去读触控芯片的触摸点状态时都会读得到那个坐标被按下。现在程序上是不影响使用了,但一直这么被“按下”,总感觉哪里有问题,但又找不到问题所在
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-3-6 18:32:42 | 显示全部楼层
lzq12 发表于 2017-3-6 09:24
少了个不字了,触控芯片的寄存器好像是不可以直接清零的,按道理FT_RST=0;复位了芯片之后,寄存器的值是 ...

不是清触摸屏的寄存器,是清本地记录的数据
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-3-7 11:14:33 | 显示全部楼层
正点原子 发表于 2017-3-6 18:32
不是清触摸屏的寄存器,是清本地记录的数据

在判断到鬼触摸后tp_dev.y=0;tp_dev.x=0;tp_dev.sta = 0;mode = 0;这个是可以让外部程序不去处理错误的数据,只是每次tp_dev.scan时对触控芯片读寄存器总能读出数据来,目前是不影响程序运行,就是想找到问题的根本以及彻底解决掉
回复

使用道具 举报

11

主题

70

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2016-1-5
在线时间
208 小时
发表于 2017-3-7 11:18:50 | 显示全部楼层
应该是触摸屏底层软件的问题  我也有类似的问题
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
 楼主| 发表于 2017-3-7 11:23:28 | 显示全部楼层
明天起飞吧 发表于 2017-3-7 11:18
应该是触摸屏底层软件的问题  我也有类似的问题

寄存器配置或者IIC驱动问题么?大神有什么建议么,我修改了原子哥的IIC,但寄存器配置那些没有改,目前触摸都是可以用的,寄存器配置也正常,读数据和写数据都稳定,所以很难找到IIC和寄存器配置文件的bug
回复

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2018-5-20
在线时间
13 小时
发表于 2019-5-7 17:12:00 | 显示全部楼层
lzq12 发表于 2017-3-7 11:23
寄存器配置或者IIC驱动问题么?大神有什么建议么,我修改了原子哥的IIC,但寄存器配置那些没有改,目前触 ...

IIC怎么改,我一直读不到寄存器数据,能不能把IIC的程序发一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 09:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表