硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4134|回复: 4
收起左侧

[有问必答] TSC2046 读值不稳定,添加了等待busy信号置低的语句后正常

[复制链接]

3

主题

11

回帖

20

积分

新手上路

积分
20
发表于 2018-12-26 00:56:01 | 显示全部楼层 |阅读模式
参考V6做的板子,触摸芯片由STMPE811改为了TSC2046,800x480的屏

起初异常现象:读到的x轴和y轴adc值会随触摸点变化,但不稳定,emWin的指针会抖动得比较厉害,且读到的值整体偏低,移动到一侧后最高只能到1500的样子,与满12bit(4096)相差过多

把x+ y+ x- y-四根线飞出接示波器,发现通道切换速度过快,两次采集的时间约为每次12us,大概受到触摸板分布电容的影响,可以看到波形有明显的上升沿,而且没有上升到稳定值时,就已经切到了下一通道,也就是说读adc值时,电平还没稳定下来

把之前买的V6板子配屏(STMPE811)的四根模拟通道线也接到示波器,波形是很规矩漂亮的方波,采集周期是ms级的

对比我的板子,采集时间只有us级,貌似太短

怀疑是芯片或者PCB模拟通路的问题,做了若干实验没有搞定

后来仔细研究TSC2046的驱动文件(直接copy V5光盘里 <96.emWin触摸校准>的),发现函数 TSC2046_ReadAdc 里,读数据前没有查询busy脚信号,试着加入一句 while(GPIO_ReadInputDataBit(BUSY_PORT,  BUSY_PIN)); 后,读值正常,移动至屏幕一侧,最高值可以达到3500左右,指针也不再抖动了

记录下来供大家参考
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107882
QQ
发表于 2018-12-26 02:04:30 | 显示全部楼层
通过2046的INT中断引脚判断状态即可,我们的ili9488屏用的这个芯片。
bsp_tcouh.c文件里面的TOUCH_Scan函数。

QQ截图20181226020556.jpg
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2018-12-26 08:58:24 | 显示全部楼层
本帖最后由 jackjeanxp 于 2018-12-26 09:19 编辑
eric2013 发表于 2018-12-26 02:04
通过2046的INT中断引脚判断状态即可,我们的ili9488屏用的这个芯片。
bsp_tcouh.c文件里面的TOUCH_Scan函 ...

bsp_touch.c 这里没有改动,经实验若不判断IRQ脚的状态,则在触摸板任务中会每次都去读TSC2046,仍是不稳定的值

但有新发现,昨天增加等待busy脚置低后能正常工作的程序,实际和busy脚状态并无关系,而是因为我修改过SPI总线速率,从SPI_BaudRatePrescaler_64的1M降到了SPI_BaudRatePrescaler_256,约250K,速率改回去,又恢复了老样子,无论判断busy与否

看TI的手册,里面提到了触摸板电平建立时间与外部滤波电容(板上确实有4个电容,但调试时已经焊下,我猜是触摸板的分布电容也有影响)的关系,和解决办法

第一次传图……

大概就是图2图3里的意思,TSC2046在每次adc转换完成后,会把触摸板驱动电压关闭,如果有滤波电容,每次转换都会有上升沿,直接读会读到处于变化中的值

TI给出的解决方法:

1. 直接降低 SPI 时钟速率。这条我误打误撞蒙到了
2. 在指令里控制PD0这个bit,使触摸板驱动电压保持开启,然后连读n次,在最后一次读取时关闭驱动电压。我现在暂时用的这个方法
3. 一次没传输完毕就立即读第二次,这样驱动电压不会关闭。这个貌似STM32无法实现

图1是调试程序,一共读了六次,前五次时power-on状态,第六次power-off并取值。放了能缓存五次读取值的变量,输出到LCD上,发现第一次读到的值相差较大,第二次差的不多,三四五六保持一致,还是和实际波形相符的

实际上不管怎样做,貌似都是在读2046时加入了延时,从uCOS任务的CPU占用上可以看出,这样改以后触摸任务占用大了,但还能接受

我看STMPE811的波形,触摸板驱动电压貌似是一直给着的。2046貌似还不能直接一直power-on,IRQ引脚就不能用了

今天没示波器,等有机会确认一下

捕获1.PNG
捕获2.PNG
捕获3.PNG
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2018-12-26 09:38:35 | 显示全部楼层
看来确实无需判断busy脚,V5的驱动没错,我买的触摸板太挫了,需要读慢点
回复

使用道具 举报

84

主题

407

回帖

679

积分

金牌会员

积分
679
QQ
发表于 2019-9-15 22:08:09 | 显示全部楼层
感谢楼主   碰到一样的问题,仔细拜读楼主帖子,触摸终于弄好了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-17 09:32 , Processed in 0.195858 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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