焦點(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í)間
您可能也感興趣:
今日熱點(diǎn)
為您推薦
遼寧擴(kuò)大緩繳社保費(fèi)政策實(shí)施范圍 補(bǔ)繳期間免收滯納金
增額終身壽險(xiǎn)成銀保市場(chǎng)上的黑馬 中途退保恐會(huì)損失保費(fèi)
保險(xiǎn)公司紛紛探索轉(zhuǎn)型之路 聚焦細(xì)分業(yè)務(wù)、推出新產(chǎn)品
更多
- 焦點(diǎn)訊息:【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之六...
- 【世界獨(dú)家】【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之四:RTC測(cè)試
- 【天天快播報(bào)】碳中和趨勢(shì)下,中國(guó)CIO該如何應(yīng)對(duì)?
- 環(huán)球即時(shí)看!Digi-Key Electronics 將在 2022 年 12 月...
- 每日視訊:艾邁斯歐司朗宣布將Traxon Technologies出售給Pro...
- 全球微頭條丨貿(mào)澤電子帶你探索汽車設(shè)計(jì)發(fā)展新趨勢(shì)
- 速看:BlackBerry 擴(kuò)大與亞馬遜云科技的合作,將BlackBerry...
- 世界微資訊!創(chuàng)造無(wú)限可能:全新恩智浦MCX N系列高性能MCU
更多
- 快看點(diǎn)丨兩部門完善熊貓債資金管理,募集資金可匯往境外也可...
- 世界微資訊!金融市場(chǎng)開放再進(jìn)一步!兩部門完善熊貓債資金管理
- Ankr:將動(dòng)用儲(chǔ)備金賠償aBNBc流動(dòng)性提供者
- 今日觀點(diǎn)!華夏幸福債務(wù)重組新進(jìn)展 83.64%持有人簽署境外美...
- 11月以來(lái)金融機(jī)構(gòu)發(fā)債總額近9000億元 商業(yè)銀行二級(jí)資本債發(fā)行加碼
- 天天報(bào)道:美元債交換要約之后 德信再出“大招”擬剝離物業(yè)平臺(tái)
- 瑞信(CS.US)擬削減三分之一債券銷售崗位以精簡(jiǎn)成本
- 盤點(diǎn)50多份方艙隔離點(diǎn)專項(xiàng)債報(bào)告:收益能否覆蓋償債本息是關(guān)鍵
排行
- 焦點(diǎn)訊息:【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之六...
- 科技智庫(kù)需要進(jìn)一步加快智庫(kù)成果轉(zhuǎn)化
- 雄安設(shè)立兩年 290家京企“搶灘登陸”
- 女子拽男友公交車方向盤受審 涉嫌危害公共安全罪
- 成都實(shí)施創(chuàng)新驅(qū)動(dòng)發(fā)展戰(zhàn)略,將挖掘培養(yǎng)高素質(zhì)職工人才
- “人造雪粉”接觸眼睛或被誤食可能有危險(xiǎn)
- 這一年,我們?yōu)榭萍肌俺尺^(guò)的架”真不少
- “四成人不知電商法”該如何破題
- 監(jiān)督搭平臺(tái)信息都上網(wǎng) 打通精準(zhǔn)監(jiān)督‘最后一公里’
- 智能烹飪機(jī),選購(gòu)有講究
最近更新
- 焦點(diǎn)訊息:【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之六...
- 阿維塔渠道擴(kuò)張計(jì)劃初見(jiàn)成效 年內(nèi)將達(dá)成200家渠道鋪設(shè)
- 夏威夷果能炒著吃嗎?
- 夏威夷果怎么吃?
- 環(huán)球滾動(dòng):兩歲寶寶吃夏威夷果的好處?
- 當(dāng)前資訊!夏威夷果生吃和熟吃的區(qū)別?
- 速訊:夏威夷果要炒多長(zhǎng)時(shí)間才熟?
- DEX聚合器ODOS已支持Avalanche
- 視點(diǎn)!油價(jià)即將調(diào)整
- 快看點(diǎn)丨兩部門完善熊貓債資金管理,募集資金可匯往境外也可...
- 每日短訊:雙眼皮線條短,是否需要修復(fù)?
- 快資訊丨雙眼皮能做成單眼皮嗎?
- 每日播報(bào)!柿子炒雞蛋怎么做?
- 全球快訊:柿子炒雞蛋的做法,青椒柿子炒雞蛋怎么做好?
- 天天日?qǐng)?bào)丨狗狗能吃西紅柿炒雞蛋嗎?
- 天天精選!15大副省級(jí)城市新格局!廣州退居第二,南京升至第六
- 市場(chǎng)分析:美聯(lián)儲(chǔ)將強(qiáng)調(diào)他們對(duì)提高利率的堅(jiān)定態(tài)度
- 環(huán)球簡(jiǎn)訊:這些國(guó)家為什么要遷都?哪國(guó)的遷都最為成功?
- 全球觀熱點(diǎn):空調(diào)下邊吹頭發(fā)怎么樣?
- 全球快報(bào):晚上開空調(diào),怎么防止被吹著?
- 每日速遞:月子中,頭痛怎么辦?
- 世界今頭條!氣虛血瘀吃什么藥?
- 氣虛血瘀怎么辦?應(yīng)該怎么調(diào)理?
- 世界觀速訊丨數(shù)據(jù):以太坊橋TVL跌至236億美元
- 比特幣閃電網(wǎng)絡(luò)容量過(guò)去30天下降至約5058枚 BTC
- 寒潮預(yù)警!生活繳費(fèi)不出門,手機(jī)一點(diǎn)就搞定
- 【全球熱聞】位居全國(guó)前列 “愛(ài)山東”獲“首屈一指”獎(jiǎng)項(xiàng)
- 環(huán)球通訊!山東新增本土確診37例、本土無(wú)癥狀感染者666例
- 數(shù)字化引領(lǐng)養(yǎng)老金融蓄勢(shì)起航,北京銀行成為首批獲準(zhǔn)開辦個(gè)人...
- 天天關(guān)注:尿酸高吃南瓜紅薯好嗎?
今日要聞
- 焦點(diǎn)訊息:【愛(ài)普特 APT32F110 ev board 試用測(cè)評(píng)】之六:電容觸摸按鍵測(cè)試 和Touch Key 使用串口工具波形分析
- DEX聚合器ODOS已支持Avalanche
- 快看點(diǎn)丨兩部門完善熊貓債資金管理,募集資金可匯往境外也可留存境內(nèi)
- 市場(chǎng)分析:美聯(lián)儲(chǔ)將強(qiáng)調(diào)他們對(duì)提高利率的堅(jiān)定態(tài)度
- 數(shù)字化引領(lǐng)養(yǎng)老金融蓄勢(shì)起航,北京銀行成為首批獲準(zhǔn)開辦個(gè)人養(yǎng)老金業(yè)務(wù)的銀行
- 比特幣閃電網(wǎng)絡(luò)容量過(guò)去30天下降至約5058枚 BTC
- 世界觀速訊丨數(shù)據(jù):以太坊橋TVL跌至236億美元
- 世界微資訊!金融市場(chǎng)開放再進(jìn)一步!兩部門完善熊貓債資金管理
- 全球信息:華爾街日?qǐng)?bào)記者:下次加息50個(gè)基點(diǎn),但明年利率升至5%以上的風(fēng)險(xiǎn)突出
- 環(huán)球信息:Coinbase CEO:FTX破產(chǎn)并非會(huì)計(jì)犯錯(cuò),不應(yīng)相信SBF的說(shuō)辭