STM32触摸按键的示例分析

您所在的位置:网站首页 笔记本换系统怎么激活 STM32触摸按键的示例分析

STM32触摸按键的示例分析

2022-06-05 03:21| 来源: 网络整理| 查看: 265

STM32触摸按键的示例分析 发布时间:2021-12-27 11:34:54 来源:亿速云 阅读:109 作者:小新 栏目:互联网科技

这篇文章主要为大家展示了“STM32触摸按键的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“STM32触摸按键的示例分析”这篇文章吧。

01、触摸按键原理

触摸使用RC充放电原理:

STM32触摸按键的示例分析

RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用的电路。

充电过程:

电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度小。充电的速度与电阻和电容的大小有关。电阻R越大,充电越慢,电容C越大,充电越慢。衡量充电速度的常数t(tao)=RC。

放电过程:

电容C通过电阻R放电,由于电容刚开始放电时电压为E,放电电流I=E/R,该电流很大,所以放电速度很快。随着电容不断的放电,电容的电压也随着下降。电流也很快减小。电容的放电速度与RC有关,R的阻值越大,放电速度越慢。电容越大,放电速度越慢。

RC电路充放电公式:

Vt = V0+(V1-V0)*[1-exp(-t/RC)]

V0 为电容上的初始电压值;

V1 为电容最终可充到或放到的电压值;

Vt 为t时刻电容上的电压值。

如果V0为0,也就是从0V开始充电。那么公式简化为:

Vt=  V1* [1-exp(-t/RC)]

结论:同样的条件下,电容值C跟时间值t成正比关系,电容越大,充电到达某个临界值的时间越长。

02、电路设计

电路设计时其实就是个上拉电阻

STM32触摸按键的示例分析

PCB设计,直接一个圆形,和底层接地覆铜形成杂散电容。

STM32触摸按键的示例分析

电容触摸按键原理

STM32触摸按键的示例分析

R:外接电容充放电电阻。

Cs:TPAD和PCB间的杂散电容。

Cx:手指按下时,手指和TPAD之间的电容。

开关:电容放电开关,由STM32IO口代替。

03、代码设计

检测电容触摸按键过程

①TPAD引脚设置为推挽输出,输出0,实现电容放电到0。

②TPAD引脚设置为浮空输入(IO复位后的状态),电容开始充电。

③同时开启TPAD引脚的输入捕获开始捕获。

④等待充电完成(充电到底Vx,检测到上升沿)。

⑤计算充电时间。

触摸按键初始化

uint8_t Touchpad_Init(void) {   uint16_t buf[10];  uint16_t temp;   uint8_t j,i;       TIM_ICInitTypeDef  TIM_ICInitStructure;      /* TIM12Configuration */   TIM_Config();    TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;  TIM_ICInitStructure.TIM_ICFilter = 0x0;    TIM_ICInit(TIM12, &TIM_ICInitStructure);      /* Enablethe CC1 Interrupt Request */   TIM_ITConfig(TIM12,TIM_IT_CC1|TIM_IT_Update, ENABLE);      /* TIM enablecounter */   TIM_Cmd(TIM12, ENABLE);     for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3