驱动调试常见有关问题_触摸屏
驱动调试常见问题_触摸屏 电阻式触摸屏的Controller从原理上,简单的说就是一个可切换通道的AD转换器,常见
驱动调试常见问题_触摸屏
电阻式触摸屏的Controller从原理上,简单的说就是一个可切换通道的AD转换器,常见的有类似TSC2046这一系列的独立芯片,也有Buildin在MPU里的集成模块。这里记录的主要是这类触摸屏驱动的调试中我所遇到过的一些问题,因为具体硬件平台和环境不同,有些问题,现象和原因可能不一定与你的实际情况相同,仅供参考。
数据线上无法得到正确的数据- 症状
读取的测量数据变化不定,几乎没有规律 - 分析
Tsc2046控制器在接收到8个bit的测量指令后,需要一段的时间完成测量和AD转换工作,这期间在其busy线上会输出高电平,直到电平拉低后在数据线上才会输出数据。 而这期间,其片选信号从spec上看,应该要保持有效,所以在使用SPI接口时候,需要采用比如32位传送的方式,使得在传完8位指令后,继续保持片选和时钟,已接收后续的测量结果数据,因为这期间无法测量busy信号,假定其为某一恒定时间,位移得到所需测量结果。分析数据不稳定的原因在于这段busy等待时间在不同的测量情况下,长度可能不一定是确定的,导致无法准确判断应该提取SDO口上的哪段数据作为测量结果。 所以主要矛盾在于我所使用的CPU的SPI口的片选和时钟信号无法与数据线分开独立自由控制。 - 解决 采用GPIO口模拟SPI时序,从而可以自己控制clk和片选信号,因此此时可以测量busy线的信号,从而准确的得知何时tsc2046开始完成测量并输出测量结果。
busy线长期处于忙等待状态- 症状 送完指令,等待busy拉低的过程中,busy信号始终为高
- 分析 仔细分析spec,发现在busy状态下,tsc2046依然需要clk来完成AD转换工作,所以在等待busy信号的时候,要同时继续保持CLK信号
- 解决 每读一次busy信号的同时,继续用GPIO口模拟一个周期的CLK信号。
不断产生pendown中断- 症状 在第一次触摸屏幕,pendown中断产生,并完成测量后,即使放开触摸屏,依然连续不断的有pendown中断信号产生,反复进入测量过程。
- 分析 测量触摸屏X+ pin 上的电平发现,即使在等待中断的过程中,X+ pin 也始终为低电平,而理论上,此时该pin应该为高电平,由于Y- pin 接地,在触摸屏被按下的时候,X+ pin 电压被拉低,从而产生pendown中断。 反复调试发现该pin电压为低的原因在于在上一次测量中,最后一次测量的是Z1,在触摸屏放开的时候,测量Z1的过程中,X+为低电平。而后回到等待中断状态的时候,X+ pin 由于外部电容的原因,被上拉电阻重新拉高为高电平需要一段的时间,在此之前,如果打开中断,就会误判,错误的收到中断信号