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

2019-07-20 02:05发布

遇到个鬼问题: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则不用改动,所以程序就不附上了,就是想听听大家的建议,看看有没有哪位大神遇到过这么诡异的问题。哎~~希望各位路过的大神能帮帮忙出出主意把这鬼给收了


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-20 02:11
你在main函数初始化的时候,就把这个坐标清掉,试试看。
lzq12
2楼-- · 2019-07-20 02:31
 精彩回答 2  元偷偷看……
lzq12
3楼-- · 2019-07-20 03:19
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-20 08:45
lzq12 发表于 2017-3-6 09:24
少了个不字了,触控芯片的寄存器好像是不可以直接清零的,按道理FT_RST=0;复位了芯片之后,寄存器的值是 ...

不是清触摸屏的寄存器,是清本地记录的数据
lzq12
5楼-- · 2019-07-20 13:42
正点原子 发表于 2017-3-6 18:32
不是清触摸屏的寄存器,是清本地记录的数据

在判断到鬼触摸后tp_dev.y=0;tp_dev.x=0;tp_dev.sta = 0;mode = 0;这个是可以让外部程序不去处理错误的数据,只是每次tp_dev.scan时对触控芯片读寄存器总能读出数据来,目前是不影响程序运行,就是想找到问题的根本以及彻底解决掉
明天起飞吧
6楼-- · 2019-07-20 19:08
 精彩回答 2  元偷偷看……

一周热门 更多>