0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32学习笔记之电容触摸1

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-05-26 14:37 次阅读

电容触摸简介

8.1.1 电容触摸概述

随着科技的发展,传统的机械按键正在逐步从设备上面消失,这个原因主要有机械按键由于是采用机械接触的方式,寿命比较短,从用户体验上看,机械按键也显得操作复杂,对比现在的电容按键,电容按键具有寿命长,因为不存在机械接触,占用空间少,以前的机械按键在设计外壳的时候需要考虑尺寸,现在换成电容按键后这个问题不再需要考虑。

8.1.2 检测原理

常规的检测方式一般是通过计算电容放电时间来判断是否有手指按下,这是因为手指会与线路板的铜箔接触面上产生电容效应,当手指没有放在铜箔上的时候,铜箔与PCB之间存在杂散电容,这两个状态的电容值差别很大,检测原理如下图所示。

图片

在检测之前首先用开关将电容Cs里面的电荷放尽,然后此时CPU开始计算Cs的充电时间,这一部分是采用捕捉信号来测量,尽管单片机属于数字电路,但是数字电路的逻辑电平也是有电压限制的,比如在3.3V供电环境下,当电压大于2.4V则被认为是逻辑电平1,当电压小于0.4V则被认为是逻辑电平0,单片机的输入捕获功能来判断输入信号的电平是否为逻辑电平1,如果检测到逻辑电平1,则认为电容此时充电达到了2.4V以上,将这个时间记录下来,当手指放在铜箔上的时候,相当于增加了Cs的容值,此时我们继续进行输入捕获采样,将这个捕获的时间记录下来,两个时间求差值,这个差值高于某个阈值的时候就可以认为此时手指按下了电容按键,用这种方式就可以实现虚拟按键的使用了。这种检测原理实际是采用了在电路分析中学习到的RC电路的零状态响应来实现的。根据RC电路的零状态响应可以得出电容的充电公式为

图片

其中Vc表示电容的充电电压,VDD为RC电路的输入电压,R为电阻的阻值,C为充电电容的容值,通过这个公式我们可以反推得到充点电容的容值。也就是说我们可以利用这个公式实现电容的测量。

8.1.3 预备知识

首先我们在进行电容触摸检测的时候需要用到STM32的输入捕获功能,从这一章开始,关于寄存器文件的添加,驱动文件的添加不再作为重点,重点开始转为程序的编写及小算法的编写。

输入捕获的工作原理如下图所示。

图片

首先设置定时器的输入通道为上升沿捕获,检测到上升沿之后,将计数寄存器CNT中的数据存储在CCRx1中并清空CNT的数据,然后设置定时器的输入通道为下降沿捕获,检测到下降沿后将计数寄存器CNT中的数据存储在CCRx2中并清空CNT的数据,此时将CCRx2的值与CCRx1的值做差值就可以得到1个波形中高电平的时间,由于这两个数值获取的过程中,会由于高电平时间过长导致定时器产生多次中断,这个多次中断的值记为N,此时高电平的时间计算公式如下所示:

图片

其中M为定时器的计数周期,N为定时器的溢出次数,ARR为自动重装载计数器的值,CCRx2为捕获到的数据。

8.2 常用寄存器

8.2.1 捕获/比较寄存器1:TIMx_CCMR1

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IC2F[3:0] IC2PSC[1:0] CC2S[1:0] IC1F[3:0] IC1PSC[1:0] CC1S[1:0]

ICxF[3:0]:输入捕获x滤波器(定义输入采样频率及数字滤波器长度)

图片

ICxPSC[1:0]:输入/捕获x预分频器(一旦CCxE=0,则预分频器复位)

00:每1个事件触发一次捕获

01:每2个事件触发一次捕获

10:每4个事件触发一次捕获

11:每8个事件触发一次捕获

CCxS[1:0]:捕获/比较x选择(用于定义通道x输入还是输出)

00:输出模式

01:输入模式,映射在TI1上

10:输入模式,映射在TI2上

11:输入模式,映射在TRC上,此模式引用于内部触发器输入被选中时

8.2.2 捕获/比较使能寄存器:TIMx_CCER

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CC4P CC4E - CC3P CC3E - CC2P CC2E - CC1P CC1E

CCxP:输入/捕获x输入/输出极性

通道在输出模式下

0:高电平有效

1:低电平有效

通道在输入模式下

0:不反相,上升沿触发

1:反相,下降沿触发

CCxE:输入/捕获x输入/输出使能

通道在输出模式下

0:关闭输出

1:开启输出

通道在输入模式下

0:禁止捕获

1:使能捕获

8.3 电容触摸例程

现在PA1端口接一个触摸按键(一块铜箔),利用PA1的触摸按键控制PA0端口的LED状态,按下时LED点亮,抬起时LED熄灭。

(1)新建基础工程,并创建tpad.c,tpad.h,led.c和led.h文件,并导入工程,如下图所示。

图片

(2)在tpad.h文件内添加以下代码。

图片

(3)在led.h文件内添加以下代码

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电阻
    +关注

    关注

    86

    文章

    5471

    浏览量

    171676
  • 机械
    +关注

    关注

    8

    文章

    1531

    浏览量

    40469
  • 电容按键
    +关注

    关注

    0

    文章

    5

    浏览量

    1410
收藏 人收藏

    评论

    相关推荐

    STM32各模块学习笔记

    STM32个模块学习笔记 目录 STM32笔记之一 中断优先级.......................................
    发表于 11-30 03:32 3146次阅读

    STM32F1电容触摸按键的详细资料说明

    本文档的主要内容详细介绍的是STM32F1电容触摸按键的详细资料说明。
    发表于 05-06 16:11 32次下载
    <b class='flag-5'>STM32F1</b><b class='flag-5'>电容</b><b class='flag-5'>触摸</b>按键的详细资料说明

    基于STM32触摸学习笔记资料下载

    电子发烧友网为你提供基于STM32触摸学习笔记资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到
    发表于 04-24 08:48 37次下载
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>触摸</b>屏<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>资料下载

    OpenStackCinder学习笔记

    OpenStackCinder学习笔记(开关电源技术教程ppt)-该文档为OpenStackCinder学习
    发表于 09-23 12:40 5次下载
    OpenStack<b class='flag-5'>之</b>Cinder<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>

    51单片机学习笔记数码管1显示数字0以及使用蜂鸣器

    51单片机学习笔记数码管1显示数字0以及使用蜂鸣器
    发表于 11-14 14:36 8次下载
    51单片机<b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b>数码管<b class='flag-5'>1</b>显示数字0以及使用蜂鸣器

    STM32学习笔记SysTick

    Systick大有不同,于是作此学习笔记。Systick的两大作用:1、可以产生精确的延时2、可以提供给操作系统一个单独的心跳(时钟)节拍通常实现Delay(N)函数的方法为:    &n
    发表于 11-25 10:36 1次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b>SysTick

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发

    STM32学习笔记1——软硬件基础keil5编程与GPIO开发
    发表于 11-30 12:36 4次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>1</b>——软硬件基础<b class='flag-5'>之</b>keil5编程与GPIO开发

    STM32学习笔记--------day1

    STM32学习笔记--------day1
    发表于 12-05 20:36 8次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>--------day<b class='flag-5'>1</b>

    STM32电容触摸按键

    STM32F4 开发板上的触摸按键(TPAD)来实现对 DS1 的亮灭控制。这里 TPAD 其实就是探索者 STM
    发表于 12-14 18:49 39次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>按键

    STM32学习笔记(11)电容触摸按键

    所需时间T1,当触摸时,触摸系统相当于并联多一个电容,总电容增大,充电时间延长,通过测量此时充电所需时间T2,如果T2>T
    发表于 12-28 19:17 5次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(11)<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>按键

    STM32F1开发指南笔记36----触摸

    向大家介绍STM32控制战舰TFTLCD模块(包括电阻触摸电容触摸),实现触摸屏驱动,最终实现一个手写板的功能。
    发表于 12-31 19:36 30次下载
    <b class='flag-5'>STM32F1</b>开发指南<b class='flag-5'>笔记</b>36----<b class='flag-5'>触摸</b>屏

    STM32入门(二十一)----电容触摸

    电容触摸电容触摸原理硬件连接实验程序程序思路电容触摸原理RC电路充放电公式Vt = V0+(V
    发表于 01-17 11:25 4次下载
    <b class='flag-5'>STM32</b>入门(二十一)----<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>

    stm32学习笔记1

    此博客仅个人学习笔记,用以本人学习stm32的记录、分析、总结。有所错漏再所难免,有则改之无则加勉。这里就直接以通俗的语言来记录了,大家见谅。学习
    发表于 01-18 08:37 59次下载
    <b class='flag-5'>stm32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>1</b>

    C语言和STM32学习的一些学习笔记

    自己总结的一些C语言和STM32F1学习的一些笔记,适合想快速了解学习C语言和STM32单片机的同学
    发表于 03-24 14:53 36次下载

    STM32学习笔记电容触摸2

    传统的机械按键正在逐步从设备上面消失,这个原因主要有机械按键由于是采用机械接触的方式,寿命比较短,从用户体验上看,机械按键也显得操作复杂,对比现在的电容按键,电容按键具有寿命长,因为不存在机械接触,占用空间少,以前的机械按键在设计外壳的时候需要考虑尺寸,现在换成
    的头像 发表于 05-26 14:41 436次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>电容</b><b class='flag-5'>触摸</b>2