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

    文章

    1569

    浏览量

    68502
  • 开发板
    +关注

    关注

    25

    文章

    5032

    浏览量

    97375
收藏 人收藏

    评论

    相关推荐

    嵌入式工程师常用的开发工具有哪些?

    嵌入式工程师常用的开发工具有哪些? 在嵌入式系统开发的广阔领域中,嵌入式工程师们凭借着一系列强大的工具,将创意与技术完美融合,打造出高效、可
    发表于 12-20 15:29

    【敏矽微ME32G070开发板免费体验】之开箱与基本测试

    开发板特点: 1.全GPIO引出,便于开发 2.设立多个电源端子,避免测试烦恼 3.2个按键输入,2个LED输出 4.一路单总线的2812
    发表于 12-14 15:07

    米尔-紫光PG2L100H国产FPGA开发板试用】按键功能测试报告

    一、准备工作 硬件准备 PG2L100H FPGA开发板 USB Type-C数据线 12V电源适配器 Windows 10电脑 软件环境 PDS开发环境 官方按键示例工程
    发表于 12-06 11:04

    【米尔-紫光PG2L100H国产FPGA开发板试用】米尔-紫光PG2L100H国产FPGA开发板开箱评测

    接下来的主角 电源插头,特别要说一下,米尔的这个电源插头使用了分离式的设计,有3孔,两孔,港版,大陆版,满足了世界各地工程师 的各种电源使用,非常的人性化。 开发板正面如下图所示 接下来
    发表于 11-07 12:21

    解读 | 不简单的全志T113-S开发板

    ,音频、MIC等常用接口,眺望电子提供各平台的ARM开发板助力研发工程师可以方便的初期测试和学习,通过开发板内的资料文档可快速开发公司产品,
    的头像 发表于 10-25 08:07 961次阅读
    解读 | 不简单的全志T113-S<b class='flag-5'>开发板</b>

    QE for Cap Touch工具使用问题总结

    对于瑞萨触摸按键解决方案来说,QE for Capacitive touch是一个非常有效的辅助工具,可以用于帮助用户快速、高效的开发基于瑞
    的头像 发表于 07-17 14:26 446次阅读
    QE for Cap <b class='flag-5'>Touch</b><b class='flag-5'>工具</b>使用问题总结

    瑞萨电容触摸技术之开发工具使用小技巧(2)QE监控窗口中的同步选择

    本文以系列文章的形式,为用户介绍在使用QE for Capacitive Touch工具开发瑞萨电容触摸应用时的小技巧。
    的头像 发表于 04-30 14:03 690次阅读
    瑞萨<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>技术之<b class='flag-5'>开发工具</b>使用小技巧(2)QE监控窗口中的同步选择

    瑞萨电容触摸技术之开发工具使用小技巧(1)QE监控记录

    QE for Capacitive Touch是一种用于帮助用户快速和高效开发瑞萨电容触摸按键系统的软件
    的头像 发表于 04-29 14:12 1903次阅读
    瑞萨<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>技术之<b class='flag-5'>开发工具</b>使用小技巧(1)QE监控记录

    APT32F102 开发板使用手册

    电子发烧友网站提供《APT32F102 开发板使用手册.pdf》资料免费下载
    发表于 04-16 09:07 0次下载

    普特再推超高性价比全国产32位MCU—APT32F1025B

    近日,全国产32位MCU小巨人企业普特微电子宣布推出一款超高性价比的全国产RISC核32位MCU——APT32F1025B,进一步扩展丰富其在全国产、高性价比领域MCU产品系列布局
    的头像 发表于 03-29 08:17 1030次阅读
    <b class='flag-5'>爱</b><b class='flag-5'>普特</b>再推超高性价比全国产32位MCU—<b class='flag-5'>APT32F</b>1025B

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPG
    的头像 发表于 03-14 18:20 1996次阅读

    基于普特APT32F1023B的高安全性车载逆变器全国产MCU方案

    稳步增长。普特车载逆变器方案前级由APT32F1023B控制推挽升压,后级基于APT32F1023B全桥逆变。输入电源11-15V、28.5A,可逆变输出为11
    的头像 发表于 02-19 13:04 453次阅读
    基于<b class='flag-5'>爱</b><b class='flag-5'>普特</b><b class='flag-5'>APT32F</b>1023B的高安全性车载逆变器全国产MCU方案

    【飞腾派4G版免费试用】飞腾派4G版开发板套装测试及环境搭建

    先简单介绍一下这款飞腾派4G版开发板套装; 飞腾派是由中电港萤火工场研发的一款面向行业工程师、学生和爱好者的开源硬件。主板处理器采用飞腾嵌入式四核处理器,兼容ARM V8架构,包含2个FTC664核
    发表于 01-22 00:47

    中微芯推出单总线4通道触摸按键专用电路——AiP5934/L

    电容触摸电路通过检测人体接触时产生的电容变化来实现触摸操作,具有低功耗、高灵敏度,抗干扰能力强等优势。AiP5934/L是中微芯推出的
    的头像 发表于 01-16 16:29 614次阅读
    中微<b class='flag-5'>爱</b>芯推出单总线<b class='flag-5'>4</b>通道<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>专用电路——AiP5934/L

    【飞凌OK113i-S开发板试用】开机测评--软件测试

    【飞凌OK113i-S开发板试用】开机测评--软件测试篇 飞凌OK113i-S开发板开机就可以进行一些软件测试,验证功能,下面就开始吧, 1
    发表于 12-25 11:03