遇到个鬼问题: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则不用改动,所以程序就不附上了,就是想听听大家的建议,看看有没有哪位大神遇到过这么诡异的问题。哎~~希望各位路过的大神能帮帮忙出出主意把这鬼给收了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
不是清触摸屏的寄存器,是清本地记录的数据
在判断到鬼触摸后tp_dev.y=0;tp_dev.x=0;tp_dev.sta = 0;mode = 0;这个是可以让外部程序不去处理错误的数据,只是每次tp_dev.scan时对触控芯片读寄存器总能读出数据来,目前是不影响程序运行,就是想找到问题的根本以及彻底解决掉
一周热门 更多>