免费成人看片_91理论片_9191成人_992tv在线成人免费观看_国产123区在线观看_久久精品国产免费

首页 资讯 > 创新 > 正文

焦点讯息:【爱普特 APT32F110 ev board 试用测评】之六:电容触摸按键测试 和Touch Key 使用串口工具波形分析

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

APT32触摸是MCU的一大亮点!

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


(资料图)

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

? 支持通道扫描超时检测

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

? 多种扫描模式。

- 单序列模式

- 连续模式

原理:

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

模拟框图:

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

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

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

//#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_t hwScanCnt;

extern uint32_t wKeyMap;

extern uint32_t wTimeCnt;

extern uint8_tbyBaseUpdata;

extern uint32_t wTkeyBaseCnt;

/** \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;

}

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

关键词: 寄生电容 系统时钟 电荷转移 连续扫描 间隔时间

最近更新

关于本站 管理团队 版权申明 网站地图 联系合作 招聘信息

Copyright © 2005-2018 创投网 - www.vdsvyglz.cn All rights reserved
联系我们:39 60 29 14 [email protected]
皖ICP备2022009963号-3

 

主站蜘蛛池模板: 亚洲av无码久久久久网站蜜桃 | 国产精品酒店视频 | 3d动漫精品成人一区二区三 | 午夜激情免费视频 | 天天干天天拍 | a毛片基地免费全部香蕉 | 国语高清精品一区二区三区 | 日本丰满护士爆乳xxxx | 欧美三级一区 | 男女性拍拍视频在线观看 | 手机在线看片国产 | 99久久夜色精品国产网站 | 国产av亚洲精品ai换脸电影 | 免费播放欧美一级特黄 | 思思久而久焦人 | 国产又色又爽又刺激在线观看 | 国产精一品亚洲二区在线播放 | 国内自拍网红在综合图区 | 日韩欧美国产另类 | 免费人成视频在线视频网站 | ww.久久| 精品视频一区二区三区在线播放 | 国产亚洲女在线精品 | 国产精品久久视频 | 一级做人免费观看c欧美网站 | 亚洲精品字幕在线观看 | 精品久久久视频 | 99久久精品国产一区二区小说 | 精品无码一区二区三区的天堂 | 久久精品亚洲热综合一本奇米 | 91免费国产高清观看 | 国产色综合久久无码有码 | 2020亚洲欧美日韩在线观看 | 哪里可以看免费的毛片 | 国产香蕉97碰碰视频va碰碰看 | 国产精品人妻在线观看 | 国产成人无码精品午夜福利a | 色综合亚洲欧美在线 | 四虎影视8848a四虎在线播放 | 日韩一级在线播放 | 波多野结衣网站 |