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

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

3天内不再提示

【爱普特APT32F110开发板工程师测评4】电容触摸按键测试 和Touch Key 使用串口工具波形分析

爱普特微电子 2023-03-05 10:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

APT32F110X内嵌了一个最大支持32个扫描通道的电容触摸按键检测模块。该模块支持基于电荷转移的检测技术,以满足不同应用条件下电容触摸检测。

APT32F110X触摸是MCU的一大亮点!

• 最大支持32通道按键检测

• 支持低功耗模式,并基于扫描值偏差自动唤醒CPU

• 支持通道扫描超时检测

• 支持连续扫描序列间隔时间设置

• 多种扫描模式

- 单序列模式

- 连续模式

原理:

电容式按键传感器是一种基于自电容检测技术,在人体或带电物体靠近传感极点时,导致自电容的变化,根据这种变化从而实现按键或者触摸滑条等应用的实现。系统时钟由随机时钟 MFO 调制后控制 TOUCH IO 对触摸电容充放电(固定频率,随机相位)。充电电流由内部 LDO 提供,LDO 的输出电流镜像给感应振荡器 S-OSC,控制 S-OSC 输出频率。因为充电频率固定,S-OSC 输出频率正比于 TOUCH IO 负载电容,在 R-OSC 经过 N 个周期所确定的固定时间内,SFO 的周期数将被一个内部采样计数器记录(CHxDAT)。寄生电容变大时,CHxDAT 值会变大;寄生电容变小时,CHxDAT 值会随之变小。

模拟框图:

370792dc-b91d-11ed-ad0d-dac502259ad0.png

3736f9fa-b91d-11ed-ad0d-dac502259ad0.png   

开发板自带4个触摸按键,需要短接R11~R14

376123ce-b91d-11ed-ad0d-dac502259ad0.png

APT32有完整的触摸按键生态工具和SDK。

SerialPlot软件配合串口转USB工具分析触摸按键波形数据:

378990ca-b91d-11ed-ad0d-dac502259ad0.png


37b6e7f0-b91d-11ed-ad0d-dac502259ad0.png

37df0262-b91d-11ed-ad0d-dac502259ad0.png

//#include "include/test_func.h"

#include "iostring.h"

#include

#include "soc.h"

#include "sys_clk.h"

#include

#include

#include

#include

#include

#include

#include

#include "uart.h"

#include "gpio.h"

#include "timer.h"

#include "pin.h"

#include "cnta.h"

#include "tkey.h"

csi_cnta_tg_tCnta;

csi_tkey_t g_tTkey;

csi_gpio_t g_gpioA0;

csi_uart_tg_tUart;

extern void system_init(void);

extern uint16_thwScanCnt;

extern uint32_twKeyMap;

extern uint32_twTimeCnt;

extern uint8_tbyBaseUpdata;

extern uint32_twTkeyBaseCnt;

/** \brief cnta interrupt callback function

*

* \param cnta_handle: handle timer handle to operate

* \param arg: para

* \return none

*/

static void user_cnta_event(csi_cnta_t *cnta_handle, void *arg)//定时器中断,用来定时更新基线(任意定时器都可以,只要把下面的代码放于定时器中断里就ok)

{

if(wKeyMap!=0)//判断是否有按键按下

{

wTimeCnt++;

if(wTimeCnt>wTkeyBaseCnt)// 基线更新时间 = (5ms*wTkeyBaseCnt ) ms

{

byBaseUpdata=1;//基线更新标志

wTimeCnt=0;

}

}

}

/**

\brief counterA 定时中断初始化

\return csi_error_t

*/

csi_error_t cnta_init(void)

{

csi_error_t tRet = CSI_OK;

tRet = csi_cnta_init(&g_tCnta, 0);

tRet = csi_cnta_attach_callback(&g_tCnta, user_cnta_event, NULL);

tRet = csi_cnta_start(&g_tCnta, 5000);//5ms定时

return tRet;

}

/**

\brief tkey示例

\return csi_error_t

*/

csi_error_t tkey_init(void)

{

csi_error_t tRet = CSI_OK;

tRet = csi_tkey_init(&g_tTkey, 0);//touch初始化, touch的IO使能在tkey_parameter.h里的wTkeyIOEnable,第几位对应TOUCH如:bit0 --> touch 0 bit16 --> touch16

//注意IO使能是,相应的IO请勿用于其他功能,否则会导致touch工作不正常 ,IO的初始化已经在csi_tkey_init()函数里完成,不需要自己去配置GPIO

//touch的其他一些参数配置请在tkey_parameter.h里完成。

tRet = csi_tkey_attach_callback(&g_tTkey, NULL, NULL);//注册中断函数

csi_tkey_set_intr(&g_tTkey,1,TKEY_DNE);//使能相应的中断

return tRet;

}

int uart_init(void)//串口初始化 串口用于发送当前的按键

{

int iRet = 0;

//csi_pin_set_mux(PB05,PB05_UART2_RX);//PB05 = RX

csi_pin_set_mux(PA014,PA014_UART1_TX);//PA014= TX

iRet = csi_uart_init(&g_tUart,1);

CSI_CHECK_RETURN(iRet);

iRet = csi_uart_format(&g_tUart, UART_DATA_BITS_8, UART_PARITY_NONE, UART_STOP_BITS_1);

CSI_CHECK_RETURN(iRet);

iRet = csi_uart_baud(&g_tUart,115200);

CSI_CHECK_RETURN(iRet);

iRet = csi_uart_attach_callback(&g_tUart,NULL, NULL);

CSI_CHECK_RETURN(iRet);

return iRet;

}

int tkey_main()

{

int i=0;

system_init();//系统初始化

uart_init();//串口初始化

tkey_init();//touch初始化

csi_tkey_baseline_prog(&g_tTkey);//获取第一次上电时的按键原始值作为基线(baseline)

cnta_init();//定时器初始化,

while(1){

csi_tkey_prgm(&g_tTkey); //循环扫描touch

if(wKeyMap !=0) //判断是否有按键按下,有则PA015输出低,没有则输出高

{

csi_gpio_write(&g_gpioA0,0X1<<15,0);

}else

{

csi_gpio_write(&g_gpioA0,0X1<<15,1);

}

for(i=0;i!=17;i++)//遍历wKeyMap 变量,wKeyMap变量的第几位被值1,则对应按键被按下。如:bit0 =1 则 touch0 被按下 bit16=1 则 touch16被按下

{

if((wKeyMap >>i)&0x1)

{

csi_uart_putc(&g_tUart,'T');

csi_uart_putc(&g_tUart,'C');

csi_uart_putc(&g_tUart,'H');

csi_uart_putc(&g_tUart,':');

if(i<10)

csi_uart_putc(&g_tUart,i+0x30);

else

{

csi_uart_putc(&g_tUart,0x31);

csi_uart_putc(&g_tUart,i-10+0x30);

}

csi_uart_putc(&g_tUart,0x0d);

csi_uart_putc(&g_tUart,0x0a);

}

}

}

return 0;

}

可以实现触摸按键和机械按键一样效果

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

    关注

    59

    文章

    1604

    浏览量

    71293
  • 开发板
    +关注

    关注

    26

    文章

    6507

    浏览量

    121360
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RA-Eco-RA4M2开发板评测】介绍、环境搭建、工程测试

    【RA-Eco-RA4M2开发板评测】介绍、环境搭建、工程测试 本文介绍了 RA-Eco-RA4M2-100PIN-V2.0
    发表于 03-21 15:35

    Renesas RSKRX24U 开发板:电子工程师的得力助手

    Renesas RSKRX24U 开发板:电子工程师的得力助手 在电子开发的领域中,拥有一款功能强大且易于使用的开发板至关重要。Renesas RSKRX24U
    的头像 发表于 12-29 15:45 752次阅读

    CW32F030开发板工程模板

    030_StandardPeripheralLibExamples CW32-48F大学计划例程 EX1流水灯实验 EX2蜂鸣器实验 EX3按键指示灯实验 EX4定时器实验 E
    发表于 12-26 08:08

    【RA4M2-SENSOR开发板评测】使用QE工具配置触摸按键

    本期来使用瑞萨官方的QE工具尝试对开发板上的两个电容按键进行配置。
    的头像 发表于 12-10 17:14 2906次阅读
    【RA<b class='flag-5'>4</b>M2-SENSOR<b class='flag-5'>开发板</b>评测】使用QE<b class='flag-5'>工具</b>配置<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>

    【开源FPGA硬件】硬件黑客集结:开源FPGA开发板测评活动全网火热招募中......

    式发布啦!现面向全网招募第一批工程师/硬件爱好者,开发板免费试用测试啦! 优秀试用报告,将作为板卡配套资料发布~ 相关链接: 拥抱开源!一起来做FPGA开发板啦!火爆
    发表于 10-29 11:37

    【作品合集】视美泰M-K1HSE、3568开发板测评

    领先水平。M-K1HSE专为人机交互、工控项目、深度学习等场景设计,提供丰富的接口和强大的扩展能力,是开发者和工程师的理想选择。 SC-3568HA开发板: SC-3568HA开发板
    发表于 09-22 10:32

    【作品合集】中科昊芯Core_DSC280025C开发板测评

    中科昊芯Core_DSC280025C开发板测评作品合集 产品介绍: Core_DSC280025C核心使用了昊芯HXS320F28025CRISC-V DSP芯片,该芯片集成了吴芯
    发表于 09-18 10:52

    【作品合集】沁恒微电子CH585开发板测评

    CH585开发板免费试用体验】+无线通讯功能测试 第一期合集: 微五科技CF5010RBT60开发板测评作品合集 第二期合集: 创龙科技TLT113/TL3562-MiniEVM
    发表于 09-08 10:38

    【RA4M2-SENSOR】电容触摸按键

    基于 RA4M2-SENSOR 电容触摸按键 CTSU 实现按键控制 LED 的项目设计。 硬件连接
    发表于 09-03 11:13

    【作品合集】微五科技CF5010RBT60开发板测评

    CF5010RBT60开发板试用体验】打印串口无输出问题解决(更正,原理图中使用的是USART1不是UART4) 【微五科技CF5010RBT60开发板试用体验】UART
    发表于 09-01 14:48

    【RA-Eco-RA6M4开发板评测】CTSU触摸按键控制LED

    RA6M4开发板带有两个触摸按键,是瑞萨自己研发的触摸设计。这个调试案例需要用到SWD.我使用的是EZCUBE3.使用typec外部供电。
    发表于 07-28 22:01

    【RA-Eco-RA6M4开发板评测】介绍、环境搭建、工程测试

    ² studio 和使用 FSP 所需的所有其他工具。 由于这里使用 RA6M4 主控,仅安装 RA 系列软件包即可。 工程测试 这里介绍了开发板
    发表于 07-25 11:48

    【RA-Eco-RA6M4开发板评测】+01+开箱测评+UART+PWM+LED

    ) 02篇【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+02+舵机控制+串口通讯 - 瑞萨单片机论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 03篇
    发表于 07-17 23:43

    【RA-Eco-RA6M4开发板评测】+初识篇

    RA-Eco-RA6M4开发板是一款基于 Arm® Cortex®-M33 内核的开发工具,且具有1MB 闪存、192kB支持奇偶校验 SRAM 以及64kb ECC SRAM。 该开发板
    发表于 07-16 19:06

    【RA4L1-SENSOR】触摸按键LED+串口传输

    并将鼠标移动到画布上。 2.点击鼠标左键来放下按钮图标。开发板上有2个电容触摸按钮,可以添加两个按钮。 3.两个按钮添加完成后,按侧选择Button菜单可以退出放置。 如果按键没有和引
    发表于 07-03 21:20