其他分享
首页 > 其他分享> > RISC-V MCU应用教程之触摸按键

RISC-V MCU应用教程之触摸按键

作者:互联网

简介

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)内取走数据,否则下一轮的转换将影响数据寄存器的内容。

 

 关于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文件

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

tkey.c文件

 

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

main.c文件

 

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

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

 

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

 

标签:教程,触摸,按键,RISC,开启,ADC,寄存器,MCU,TKEY
来源: https://www.cnblogs.com/Zhuzzz/p/16092949.html