手机看片福利永久国产日韩-手机看片369-手机精品在线-手机国产乱子伦精品视频-国产精品嫩草影院在线观看免费-国产精品嫩草影院在线播放

首頁(yè) 資訊 > 創(chuàng)新 > 正文

焦點(diǎn)訊息:【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之六:電容觸摸按鍵測(cè)試 和Touch Key 使用串口工具波形分析

APT32F11X 內(nèi)嵌了一個(gè)最大支持32個(gè)掃描通道的電容式觸摸按鍵檢測(cè)模塊。該模塊支持基于電荷轉(zhuǎn)移的檢測(cè)技術(shù),以滿足不同應(yīng)用條件下電容觸摸檢測(cè)。

APT32觸摸是MCU的一大亮點(diǎn)!

? 最大支持32通道按鍵檢測(cè)


(資料圖)

? 支持低功耗模式,并基于掃描值偏差自動(dòng)喚醒CPU。

? 支持通道掃描超時(shí)檢測(cè)

? 支持連續(xù)掃描序列間隔時(shí)間設(shè)置

? 多種掃描模式。

- 單序列模式

- 連續(xù)模式

原理:

電容式按鍵傳感器是一種基于自電容檢測(cè)技術(shù),在人體或帶電物體靠近傳感極點(diǎn)時(shí),導(dǎo)致自電容的變化,根據(jù)這種變化從而實(shí)現(xiàn)按鍵或者觸摸滑條等應(yīng)用的實(shí)現(xiàn)。系統(tǒng)時(shí)鐘由隨機(jī)時(shí)鐘 MFO 調(diào)制后控制 TOUCH IO 對(duì)觸摸電容充放電(固定頻率,隨機(jī)相位)。充電電流由內(nèi)部 LDO 提供,LDO 的輸出電流鏡像給感應(yīng)振蕩器 S-OSC,控制 S-OSC 輸出頻率。因?yàn)槌潆婎l率固定,S-OSC 輸出頻率正比于 TOUCH IO 負(fù)載電容,在 R-OSC 經(jīng)過(guò) N 個(gè)周期所確定的固定時(shí)間內(nèi),SFO 的周期數(shù)將被一個(gè)內(nèi)部采樣計(jì)數(shù)器記錄(CHxDAT)。寄生電容變大時(shí),CHxDAT 值會(huì)變大;寄生電容變小時(shí),CHxDAT 值會(huì)隨之變小。

模擬框圖:

開發(fā)板自帶4個(gè)觸摸按鍵,需要短接R11~R14

APT32有完整的觸摸按鍵生態(tài)工具和SDK。

SerialPlot軟件配合串口轉(zhuǎn)USB工具分析觸摸按鍵波形數(shù)據(jù):

//#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)//定時(shí)器中斷,用來(lái)定時(shí)更新基線(任意定時(shí)器都可以,只要把下面的代碼放于定時(shí)器中斷里就ok)

{

if(wKeyMap!=0)//判斷是否有按鍵按下

{

wTimeCnt++;

if(wTimeCnt>wTkeyBaseCnt)// 基線更新時(shí)間 =? (5ms*wTkeyBaseCnt ) ms

{

byBaseUpdata=1;//基線更新標(biāo)志

wTimeCnt=0;

}

}

}

/**

\brief? ? ? ?counterA 定時(shí)中斷初始化?

\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定時(shí)

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,第幾位對(duì)應(yīng)TOUCH幾如: bit0 -->? touch 0? ? ? bit16 --> touch16

//注意IO使能是,相應(yīng)的IO請(qǐng)勿用于其他功能,否則會(huì)導(dǎo)致touch工作不正常 ,IO的初始化已經(jīng)在csi_tkey_init()函數(shù)里完成,不需要自己去配置GPIO

//touch的其他一些參數(shù)配置請(qǐng)?jiān)趖key_parameter.h里完成。

tRet =? csi_tkey_attach_callback(&g_tTkey, NULL, NULL);//注冊(cè)中斷函數(shù)

csi_tkey_set_intr(&g_tTkey,1,TKEY_DNE);//使能相應(yīng)的中斷

return tRet;

}

int uart_init(void) //串口初始化? 串口用于發(fā)送當(dāng)前的按鍵?

{

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();//系統(tǒng)初始化

uart_init();//串口初始化

tkey_init();//touch初始化

csi_tkey_baseline_prog(&g_tTkey);//獲取第一次上電時(shí)的按鍵原始值作為基線(baseline)

cnta_init();//定時(shí)器初始化,

while(1){

csi_tkey_prgm(&g_tTkey);? //循環(huán)掃描touch

if(wKeyMap !=0)? ?//判斷是否有按鍵按下,有則PA015輸出低,沒(méi)有則輸出高

{

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,則對(duì)應(yīng)按鍵被按下。如: 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;

}

可以實(shí)現(xiàn)觸摸按鍵和機(jī)械按鍵一樣效果

關(guān)鍵詞: 寄生電容 系統(tǒng)時(shí)鐘 電荷轉(zhuǎn)移 連續(xù)掃描 間隔時(shí)間

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2018 創(chuàng)投網(wǎng) - www.extremexp.net All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖I(lǐng)CP備2022009963號(hào)-3

 

主站蜘蛛池模板: 香蕉一级视频| 性欧美大战久久久久久久| 国产一级片在线播放| 麻豆精品不卡国产免费看| 国产亚洲情侣一区二区无| 香港黄色碟片黄色碟片| 国产国产人免费人成成免视频| 久久天天躁狠狠躁夜夜免费观看 | 蜜柚视频网在线观看免费版| 妞干网免费观看视频| 精品久久久久国产免费| 久久久久无码国产精品一区| 亚洲午夜久久久久久尤物| 月夜直播在线看片www| 国产精品欧美一区二区三区| а√天堂地址在线| 久久66久这里精品99| 9lporm自拍视频区在线| 国产91在线|欧美| 国产欧美日韩一区二区三区| 国产精品久久久久免费a∨| 国产精品入口麻豆免费| 午夜久| 狠狠噜噜| 久久国产成人精品国产成人亚洲| 日本三人交xxx69| 英国性经典xxxx| 亚洲一区天堂| 最新国产三级在线观看不卡| 2017狠狠干| 天下第一社区视频welcome| 日韩日韩日韩日韩日韩| 亚洲天堂导航| 扒开腿狂躁女人爽出白浆| 99久久精品免费精品国产| 欧美最猛黑人xxxx黑人猛交98| 免费网站看v片在线香蕉| 推拿电影完整未删减版资源| 久久青草国产精品一区| 香蕉97超级碰碰碰免费公| 欧美成人精品一区二三区在线观看|