1.触摸按键的原理
触摸按键大多根据手与板子之间的形成的电容,利用电容的充放电时间来判断按键是否按下。
当我们做pcb时,线与线之间有节电容,我们留一块覆铜区域用作我们的触摸按键,当我们手没有接触我们的覆铜区域时覆铜区域只与板子的线之间有电容(线电容),电容容量小充电快,我们手接触覆铜区域时,覆铜区域的电容有线电容和手与铜块形成的电容,电容容量相对于没有接触铜块的电容大,充电时间长如图所示,A是没有手按下的电容充电时间,B是有手按下的充电时间。
总结:我们只需要对我们的电容进行放电充电,检测充电的时间及可以检测手是否触摸的功能。
方法:我们使用 PA1(TIM2_CH2)来检测 TPAD 是否有触摸,在每次检测之前,我们先配置PA1 为推挽输出,将电容 Cs(或 Cs+Cx)放电,然后配置 PA1 为浮空输入,利用外部上拉电阻给电容 Cs(Cs+Cx)充电,同时开启 TIM2_CH2 的输入捕获,检测上升沿,当检测到上升沿的时候,就认为电容充电完成了,完成一次捕获检测。在 MCU 每次复位重启的时候, 我们执行一次捕获检测 (可以认为没触摸) , 记录此时的值,作为判断的依据。在后续的捕获检测,我们就通过与记录的数据对比即可以判断是否有触摸发生!
图一
图一为我的开发板的接线图(正点原子的战舰)
下面 是我的代码比较精简