該模塊是一個(gè)基于觸摸檢測(cè)IC(TTP223B)的電容式點(diǎn)動(dòng)型觸摸開關(guān)模塊。常態(tài)下,模塊輸出低電平,模式為低功耗模式;當(dāng)用手指觸摸相應(yīng)位置時(shí),模塊會(huì)輸出高電平,模式切換為快速模式;當(dāng)持續(xù)12秒沒有觸摸時(shí),模式又切換為低功耗模式。可以將模塊安裝在非金屬材料如塑料、玻璃的表面。也可以將薄薄的紙片(非金屬)覆蓋在模塊的表面,直到觸摸的位置正確,即可做成隱藏在墻壁、桌面等地方的按鍵。該模塊可以讓你免除常規(guī)按壓型鍵的煩惱。
01模塊來源
模塊實(shí)物展示:
資料下載鏈接:https://pan.baidu.com/s/1lBksfqx_dT4uIyABkHVm3Q
資料提取碼:hj2n
工作電壓:2.4-5.5V
工作電流:2.5uA~9uA
模塊尺寸:35x29 mm
最快響應(yīng)時(shí)間:100Ms
控制方式:GOIO
以上信息見廠家資料文件
03移植過程
我們的目標(biāo)是將例程移植至CW32F030C8T6開發(fā)板上【實(shí)現(xiàn)添加指紋、刪除指紋和搜索指紋的功能】。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。
3.1查看資料
主要就是使用4個(gè)GPIO監(jiān)控模塊的OUT1~4的輸出情況,那個(gè)OUT輸出則說明那個(gè)對(duì)應(yīng)模塊的區(qū)域被觸摸。
3.2引腳選擇
接線表
3.3移植至工程
移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_touchkey.c與bsp_touchkey.h。這里不再過多講述,移植完成后面修改相關(guān)代碼。
在文件bsp_touchkey.c中,編寫如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "bsp_touchkey.h" /****************************************************************** * 函 數(shù) 名 稱:TTP224_GPIO_Init * 函 數(shù) 說 明:對(duì)電容式觸摸芯片TTP224進(jìn)行初始化 * 函 數(shù) 形 參:無 * 函 數(shù) 返 回:無 * 作 者:LC * 備 注:無 ******************************************************************/ void TTP224_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體 RCC_TTP_ENABLE(); // 使能GPIO時(shí)鐘 GPIO_InitStruct.Pins = GPIO_IN1| // GPIO引腳 GPIO_IN2| GPIO_IN3| GPIO_IN4; GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLDOWN; // 下拉輸入 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 輸出速度高 GPIO_Init(PORT_TTP, &GPIO_InitStruct); // 初始化 } /****************************************************************** * 函 數(shù) 名 稱:Key_IN1_Scanf * 函 數(shù) 說 明:返回觸摸鍵1引腳電平狀態(tài) * 函 數(shù) 形 參:無 * 函 數(shù) 返 回:0=未檢測(cè)到有觸摸 1=檢測(cè)到觸摸 * 作 者:LC * 備 注:無 ******************************************************************/ char Key_IN1_Scanf(void) { return KEY_IN1; } /****************************************************************** * 函 數(shù) 名 稱:Key_IN2_Scanf * 函 數(shù) 說 明:返回觸摸鍵2引腳電平狀態(tài) * 函 數(shù) 形 參:無 * 函 數(shù) 返 回:0=未檢測(cè)到有觸摸 1=檢測(cè)到觸摸 * 作 者:LC * 備 注:無 ******************************************************************/ char Key_IN2_Scanf(void) { return KEY_IN2; } /****************************************************************** * 函 數(shù) 名 稱:Key_IN3_Scanf * 函 數(shù) 說 明:返回觸摸鍵3引腳電平狀態(tài) * 函 數(shù) 形 參:無 * 函 數(shù) 返 回:0=未檢測(cè)到有觸摸 1=檢測(cè)到觸摸 * 作 者:LC * 備 注:無 ******************************************************************/ char Key_IN3_Scanf(void) { return KEY_IN3; } /****************************************************************** * 函 數(shù) 名 稱:Key_IN4_Scanf * 函 數(shù) 說 明:返回觸摸鍵4引腳電平狀態(tài) * 函 數(shù) 形 參:無 * 函 數(shù) 返 回:0=未檢測(cè)到有觸摸 1=檢測(cè)到觸摸 * 作 者:LC * 備 注:無 ******************************************************************/ char Key_IN4_Scanf(void) { return KEY_IN4; }
在文件bsp_touchkey.h中,編寫如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #ifndef _BSP_TOUCHKEY_H_ #define _BSP_TOUCHKEY_H_ #include "board.h" #define RCC_TTP_ENABLE() __RCC_GPIOA_CLK_ENABLE() #define PORT_TTP CW_GPIOA #define GPIO_IN1 GPIO_PIN_1 #define GPIO_IN2 GPIO_PIN_2 #define GPIO_IN3 GPIO_PIN_3 #define GPIO_IN4 GPIO_PIN_4 #define KEY_IN1 GPIO_ReadPin(PORT_TTP, GPIO_IN1) #define KEY_IN2 GPIO_ReadPin(PORT_TTP, GPIO_IN2) #define KEY_IN3 GPIO_ReadPin(PORT_TTP, GPIO_IN3) #define KEY_IN4 GPIO_ReadPin(PORT_TTP, GPIO_IN4) void TTP224_GPIO_Init(void);//引腳初始化 char Key_IN1_Scanf(void);//觸摸按鍵1的輸入狀態(tài) char Key_IN2_Scanf(void);//觸摸按鍵2的輸入狀態(tài) char Key_IN3_Scanf(void);//觸摸按鍵3的輸入狀態(tài) char Key_IN4_Scanf(void);//觸摸按鍵4的輸入狀態(tài) #endif
04移植驗(yàn)證
在自己工程中的main主函數(shù)中,編寫如下。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "board.h" #include "stdio.h" #include "bsp_uart.h" #include "bsp_touchkey.h" int32_t main(void) { board_init(); // 開發(fā)板初始化 uart1_init(115200); // 串口1波特率115200 TTP224_GPIO_Init(); printf("ttp224 demo startrn"); while(1) { if(Key_IN1_Scanf() == 1) { printf("[1]-Touch!rn"); while(Key_IN1_Scanf() == 1); // 等待松開 } if(Key_IN2_Scanf() == 1) { printf("[2]-Touch!rn"); while(Key_IN2_Scanf() == 1); // 等待松開 } if(Key_IN3_Scanf() == 1) { printf("[3]-Touch!rn"); while(Key_IN3_Scanf() == 1); // 等待松開 } if(Key_IN4_Scanf() == 1) { printf("[4]-Touch!rn"); while(Key_IN4_Scanf() == 1); // 等待松開 } delay_ms(200); } }
移植現(xiàn)象:觸摸那個(gè)區(qū)域就打印那個(gè)區(qū)域被觸摸。
模塊移植成功案例代碼:
鏈接:https://pan.baidu.com/s/166WcF1ArFv-DnEUmhNz5xA?pwd=LCKF
提取碼:LCKF
審核編輯 黃宇
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751031 -
觸摸傳感器
+關(guān)注
關(guān)注
0文章
121瀏覽量
23041 -
CW32
+關(guān)注
關(guān)注
1文章
174瀏覽量
549
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論