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

    文章

    1553

    浏览量

    67514
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94032
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    【ELF 1开发板试用】+ RGB LED及按键的控制

    在掌握串口登录后,就可以利用板载的系统进行相应的测试了,作为上最基本外设恐怕就非LED灯和按键莫属了,它们的控制均可归为GPIO口的使用。 在GPIO的输出设备中,最常用的便是LED
    发表于 11-21 11:11

    芯派 Pro 开发板试用体验】开箱测试

    HDMI、USB、网络接口,看上去厂商认为自己的处理能力很强,可以适应多路并发的应用。开发板上有WiFi/4G和SATA SSD的扩展板预留的位置。板子背面有摄像头的接口,也是双路。 板子内部提供了
    发表于 11-20 22:09

    《电子工程师必备——九大系统电路识图宝典》+附录2化整为零和集零为整电路分析方法

    《电子工程师必备——九大系统电路识图宝典》+附录5学习方法 《电子工程师必备——九大系统电路识图宝典》+附录4读后感 《电子工程师必备——九大系统电路识图宝典》+附录3回路
    发表于 11-18 21:06

    FPGA工程师需要具备哪些技能?

    。 FPGA工程师在进行DSP电路设计之前,需要深入了解数字信号处理技术。他们需要掌握数字信号处理中的概念和基础知识,例如滤波器、傅里叶变换、数字信号采样等。FPGA工程师还需要了解一些DSP开发板
    发表于 11-09 11:03

    新定义TBK RD8T3x开发板值得了解的开发板

    RD8T37P48工程ISP恢复工程.rar 开发板用烧录器烧录过后,板子最初的烧录设置可能会被改变,导致串口烧录报错,可用烧录器重载该工程
    发表于 09-24 22:28

    瑞萨电容触摸开发工具QE for Capacitive Touch的新老版本对比

    QE for Capacitive Touch是一种用于帮助用户快速和高效开发瑞萨电容触摸按键系统的软件
    的头像 发表于 08-18 13:58 527次阅读
    瑞萨<b class='flag-5'>电容</b><b class='flag-5'>触摸</b><b class='flag-5'>开发工具</b>QE for Capacitive <b class='flag-5'>Touch</b>的新老版本对比

    【Start_DSC28034PNT湖人开发板免费体验】+开箱测试

    。 项目例程测试并视频演示。 实物图及配置开发环境 以下是实物图以及开发环境所需的工具。 左侧为开发板,右侧为调试器 资料下载: 由于
    发表于 07-28 14:37

    APT32F1023单片机RTC待机超低功耗电流3.5uA源代码分享

    APT32F1023H8S6(SSOP-24封装)MCU是由普特微电子推出的基于平头哥半导体RISC-V内核开发的32位高性能、低成本单片机,最近有个项目需要用到其超低功耗待机和RT
    发表于 06-26 05:09

    热门推荐:硬件工程师必备工具

    硬件开发的工作流程一般可分为:原理图设计、PCB Layout设计、采购电子BOM、PCB生产、PCBA组装、功能调试及测试、小批量试产、大批量生产正式投放市场等步骤。 作为一名优秀的硬件
    发表于 06-21 10:15

    【CW32饭盒派开发板试用体验】开发板简单介绍和开发板初体验

    今天开箱一款基于CW32F030C8T6的开发板开发板命名为CW32饭盒派。 下面简单的对开发板做个介绍: CW32饭盒派板载资源非常丰富:有一电位器、蜂鸣器、3路用户
    发表于 05-22 10:56

    【CW32饭盒派开发板试用体验】开发板简单介绍及初体验

    今天开箱一款基于CW32F030C8T6的开发板开发板命名为CW32饭盒派。 下面简单的对开发板做个介绍: CW32饭盒派板载资源非常丰富:有一电位器、蜂鸣器、3路用户
    发表于 05-22 10:47

    【CW32饭盒派开发板试用体验】开箱测试

    【CW32饭盒派开发板试用体验】+开箱测试 硬件资源介绍 CW32饭盒派是一款基于CW32F030C8T6的开发板。板载资源丰富:一电位器、蜂鸣器、3路用户
    发表于 05-13 00:20

    【正点原子STM32探索者V3开发板免费试用】+STM32 cubeMX按键显示

    一起将外设拉上来。 1、选择仿真工具 2、选择芯片晶体 3、选择按键,采用正点原子V3硬件开发板的3个按键 4、选择正点原子V3硬件
    发表于 05-06 18:11