最近在测试CH549的触摸功能,参考的例程是CH549EVT\EXAM\TouchKey,经测试,触摸无效,只有按下轻触开关才能输出ADC数据,串口数据如下:
请问,这个问题是不是因为触摸端口P11 P14到触摸弹簧接脚的PCB周边(包括上面和底面)敷铜导致?还是其他的原因?P11 P14没有接上拉电阻,应该没有问题吧?请大师指点,谢谢!
最近在测试CH549的触摸功能,参考的例程是CH549EVT\EXAM\TouchKey,经测试,触摸无效,只有按下轻触开关才能输出ADC数据,串口数据如下:
请问,这个问题是不是因为触摸端口P11 P14到触摸弹簧接脚的PCB周边(包括上面和底面)敷铜导致?还是其他的原因?P11 P14没有接上拉电阻,应该没有问题吧?请大师指点,谢谢!
您好,
触摸按键上层的底层不铺地,尽量避免走线靠近IIC或SPI等通讯线,触摸需要根据实际触摸效果打印出来的采样值变化调整判定阈值优化触摸效果。
请问大佬,这样设计,触摸开关有没有问题?
经过测试,昨天还好,手指直接触及触摸焊盘?value = TouchKeySelect(ch, CPW_Table[ch])还有几百的变化值,今天怎么又没变化了,都是初始值4093左右?
GPIO配置模式可以配成高阻输入,您代码里这个没配好,触摸按键建议底层和顶层都不要铺地线,参考下评估板设计,ADC测量可以多测几次,丢掉前面几次,可以考虑切换通道之前先让这个脚输出1us 左右的低电平充分电容放电。
我原以为
P1_MOD_OC &= 0x60; //P15 P16高阻输入
P1_DIR_PU &= 0x60; //P15 P16高阻输入 0110 0000
是设置了输入高阻了,原来是设置错了。应该是
P1_MOD_OC &= 0x9f; //P15 P16高阻输入
P1_DIR_PU &= 0x9f; //P15 P16高阻输入 1001 1111
看了P1_MOD_OC和P1_DIR_PU后面的说明才清楚。
其实还不如删除上面的代码,在主程序中用
GPIO_Init(PORT1, PIN5, MODE0); // P1.5高阻输入
GPIO_Init(PORT1, PIN6, MODE0); // P1.6高阻输入
来得方便。
现在还有个问题,就是:如果用手直接触摸TK5的焊盘,触摸及弹起的效果与轻触开关一样,但是如果隔着一张纸进行触摸,则串口打印的信息显示是反复多次的“触摸”及“弹起”:
这个问题又该如何解决呢?
触摸焊盘有变化功能本身应该正常,可能纸张本身在触摸的过程中有抖动,可以找个薄盖板真实固定住试试。
我用86型空白面板试了,基本可以实现普通轻触开关的功能,但必须细调DOWM_THRESHOLD_VALUE和UP_THRESHOLD_VALUE两个阀值的参数。
用起来不是太顺滑,估计还得加入什么算法,就像普通轻触开关去抖一样。