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

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

3天内不再提示

基于CH32V103系列MCU的触摸按键检测

CHANBAEK 来源:CSDN-借过风景 作者:CSDN-借过风景 2023-01-31 14:53 次阅读

简介

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

本章教程使用CH32V103开发板的触摸按键TK1进行触摸按键检测,并将检测信息通过串口调试助手打印显示。

1、TKEY简介及相关函数介绍

1、TKEY_V 开启

TKEY_V单元检测内部复用了ADC模块的通道选择及部分寄存器地址,所用使用 TKEY_V功能需要开启ADC模块(ADON=1),并打开 ADC 时钟以此来访问相关寄存器。然后将TKEY_V_CTLR(ADC_CTLR1)寄存器的TKENABLE 位置1,打开TKEY_V 单元功能。

注:因为共用了采样通道选择,所以ADC和TKEY_V检测功能不能同时使用。

2、工作原理

一旦开启了TKEY_V功能,硬件内部将自动进行周期性地采样计数转换过程,并在完成一次转换后,通知应用代码在固定时间(tDR)内取走数据,开启下一次转换,此循环过程在TKEY_V开启下是自动进行的。如图所示,硬件内部会提供了用来计数的脉冲源TKCLK,应用软件选择当前硬件计数周期为500us或 1ms,当内部完成周期内的计数统计后,会产生 TKIF 标志通知应用代码读取本次转换数值,应用代码需要在最长43us(tDR)内取走数据,否则下一轮的转换将影响数据寄存器的内容。

poYBAGPYumaAChyyAAEXKNaPXF4322.png

关于CH32V103触摸按键检测具体信息,可参考CH32V103应用手册。

2、硬件设计

本章教程所用资源均为开发板内部资源,无需进行硬件设计。

3、软件设计

TKEY_V通过电容改变影响内部振荡频率变化的原理,以统计计数值大小检测触摸按键。具体操作流程如下:

1)开启RCC模块的ADCEN位,打开TKEY_V寄存器操作权限。

2)开启TKEY_V功能,置ACON位为1,唤醒ADC模块。将ADC_CTLR1寄存器的TKENABLE位置1,打开TKEY_V单元。

3)配置采样周期,操作TKEY_V_CTLR寄存器的CCSEL[2:0]和TKCPS位,选择500us 或1ms周期。单元内部是以AHB时钟计时,所以需要CCSEL[2:0]域与当前 AHB 频率相等,否则会导致采样周期偏大或偏小。

4)配置采样通道,设置TKEY_V_CHANNEL寄存器,此寄存器的写操作会触发新的一轮周期开始。

5)等待TKIF标志置1,表示完成一次转换,可以读取TKEY_V_SDR寄存器中的 TKDR[13:0]计数值。TKSTA指示当前TKDR[13:0]域计数值是否有效。TKIF标志需要软件写1清0。如果置位了TKIEN,在TKIF=1时会同步触发TKEY_V(ADC)中断,进入ADC中断服务函数。

6)重复 3-5 步骤,获取下一次计数值。3-4为可选配置。

根据上述操作步骤,编写程序如下:

tkey.h文件

pYYBAGPYumaARfQJAACUs-B2rmo684.png

tkey.h文件主要进行相关定义及函数声明;

tkey.c文件

pYYBAGPYumaAUrnAAACtV0rqKXo116.png

poYBAGPYumaAUVbnAAA-hcPjBWc667.png

tkey.c文件主要进行相关初始化配置以及获取触摸按键检测值

main.c文件

pYYBAGPYumaAXlTVAACTlN1uOLA025.png

main.c文件主要进行函数初始化以及触摸按键检测计数值的打印输出。

4、下载验证

将编译好的程序下载到开发板并复位,串口打印具体情况如下:

pYYBAGPYumaAalVXAACeMnzUcgo113.png

手指触摸触摸按键之后,串口打印具体情况如下:

poYBAGPYumaAYxKQAACcO5b4tBo049.png

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

    关注

    146

    文章

    16022

    浏览量

    343693
  • 开发板
    +关注

    关注

    25

    文章

    4437

    浏览量

    94084
  • 触摸按键
    +关注

    关注

    7

    文章

    114

    浏览量

    67088
  • RISC-V
    +关注

    关注

    41

    文章

    1906

    浏览量

    45056
  • CH32V103
    +关注

    关注

    1

    文章

    13

    浏览量

    967
  • ch32
    +关注

    关注

    0

    文章

    73

    浏览量

    510
收藏 人收藏

    评论

    相关推荐

    基于CH32V103系列MCU的ADC采样设计

    CH32V103系列是以青稞V3A处理器为核心的32位通用RISC-V MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列
    的头像 发表于 01-31 14:21 3446次阅读
    基于<b class='flag-5'>CH32V103</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的ADC采样设计

    CH32V103数据手册

    教程基于沁恒32位通用增强型RISC-V架构MCU CH32V103,力争全面分析CH32V103的每个外设功能及使用方法,手把手教大家玩转RISC-
    发表于 07-19 07:55

    如何入门CH32V103

    如何入门CH32V103
    发表于 02-16 07:12

    CH32V103复位如何保持变量?

    CH32V103复位如何保持变量,只有上电才清零. 原来用stm32f103可以设置 __attribute__((unused, section(".noinit")))改用 CH32V103 后, 每次复位都会得到一固定的值
    发表于 06-15 06:13

    系列比如103系列CH32V103系列CH32F103有哪些区别?

    系列比如103系列CH32V103系列CH32F103有哪些区别?
    发表于 03-09 10:05

    CH32V103基础教程2-GPIO库函数介绍

    本章通过点亮LED作为CH32V103系列MCU应用开发的第一个教程,其LED灯控制使用到GPIO外设的基本输出功能,将通过点亮LED对CH32V103的GPIO进行基本的学习了解。
    发表于 04-13 15:52

    CH32V103基础教程22-触摸按键检测 (TKEY)

    本章教程使用CH32V103开发板的触摸按键TK1进行触摸按键检测,并将
    发表于 04-19 16:04

    CH32V103基础教程78-USART-空闲中断

    ,在此不再赘述。 2、硬件设计由于CH32V103系列MCU的串口1在debug文件中被用于调试打印,因此本次教程使用串口2进行收发验证。由CH32V103数据手册可知,串口2对应引脚
    发表于 05-08 15:57

    CH32V103基础教程98-RTC-脉冲

    。 1、RTC简介关于RTC,在前面章节已经进行过介绍,在此不再赘述。关于RTC工具介绍,可参考前面章节及CH32V103应用手册。 2、硬件设计本章教学主要使用PC13引脚产生脉冲,同时使用传送
    发表于 05-12 16:34

    RISC-V MCU应用开发教程之CH32V103

    教程基于沁恒32位通用增强型RISC-V架构MCU CH32V103,力争全面分析CH32V103的每个外设功能及使用方法,手把手教大家玩转RISC-V MCU应用开发。教程侧重于外设
    发表于 11-18 16:21 18次下载
    RISC-V <b class='flag-5'>MCU</b>应用开发教程之<b class='flag-5'>CH32V103</b>

    基于CH32V103系列MCU点亮LED

    CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。 片上集成了时钟安全机制、多级电源管理、通用DMA控制器。 此系列具有1路U
    的头像 发表于 01-31 12:01 1728次阅读
    基于<b class='flag-5'>CH32V103</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>点亮LED

    CH32V103系列MCU内部FLASH读写操作方式

    CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB
    的头像 发表于 01-31 15:02 3235次阅读
    <b class='flag-5'>CH32V103</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>内部FLASH读写操作方式

    ch32v103应用教程 ch32v103c8t6兼容 ch32v103c8t6烧录器

    的应用教程以及烧录器、编程器的介绍。 一、CH32V103应用教程 1.硬件连接 首先,我们需要准备好CH32V103的开发板和一些外围设备,如LED灯、按键
    的头像 发表于 08-22 15:19 1024次阅读

    ch32v103和stm32的区别

    和stm32。虽然它们共同作为微处理器的代表,但是它们之间还是有很多不同的。下面就详细地对这两种芯片进行比较和解析。 1、基本介绍 CH32V103是一款以ARM结构为基础,具有射频控制功能,能提供所有常规的数字接口的单片机芯片。其中包含有多种与ARM控制器及AC55XX系列
    的头像 发表于 08-22 15:48 841次阅读

    ch32v103与stm32f103的区别

    ch32v103与stm32f103的区别  Ch32v103与STM32f103是两种不同的芯片,虽然它们都是基于ARM Cortex-M3内核的32位微控制器,但它们在硬件配置、功
    的头像 发表于 08-22 15:49 1414次阅读