该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。常态下,模块输出低电平,模式为低功耗模式;当用手指触摸相应位置时,模块会输出高电平,模式切换为快速模式;当持续12秒没有触摸时,模式又切换为低功耗模式。可以将模块安装在非金属材料如塑料、玻璃的表面。也可以将薄薄的纸片(非金属)覆盖在模块的表面,直到触摸的位置正确,即可做成隐藏在墙壁、桌面等地方的按键。该模块可以让你免除常规按压型键的烦恼。
01模块来源
模块实物展示:
资料下载链接:https://pan.baidu.com/s/1lBksfqx_dT4uIyABkHVm3Q
资料提取码:hj2n
02 规格参数
工作电压:2.4-5.5V
工作电流:2.5uA~9uA
模块尺寸:35x29 mm
最快响应时间:100Ms
控制方式:GOIO
管脚数量:6 Pin(2.54mm间距排针)
以上信息见厂家资料文件
03移植过程
我们的目标是将例程移植至CW32F030C8T6开发板上【实现添加指纹、删除指纹和搜索指纹的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
3.1查看资料
主要就是使用4个GPIO监控模块的OUT1~4的输出情况,那个OUT输出则说明那个对应模块的区域被触摸。
3.2引脚选择
接线表
3.3移植至工程
移植步骤中的导入.c和.h文件与【CW32模块使用】DHT11温湿度传感器相同,只是将.c和.h文件更改为bsp_touchkey.c与bsp_touchkey.h。这里不再过多讲述,移植完成后面修改相关代码。
在文件bsp_touchkey.c中,编写如下代码。
/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "bsp_touchkey.h" /****************************************************************** * 函 数 名 称:TTP224_GPIO_Init * 函 数 说 明:对电容式触摸芯片TTP224进行初始化 * 函 数 形 参:无 * 函 数 返 回:无 * 作 者:LC * 备 注:无 ******************************************************************/ void TTP224_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体 RCC_TTP_ENABLE(); // 使能GPIO时钟 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); // 初始化 } /****************************************************************** * 函 数 名 称:Key_IN1_Scanf * 函 数 说 明:返回触摸键1引脚电平状态 * 函 数 形 参:无 * 函 数 返 回:0=未检测到有触摸 1=检测到触摸 * 作 者:LC * 备 注:无 ******************************************************************/ char Key_IN1_Scanf(void) { return KEY_IN1; } /****************************************************************** * 函 数 名 称:Key_IN2_Scanf * 函 数 说 明:返回触摸键2引脚电平状态 * 函 数 形 参:无 * 函 数 返 回:0=未检测到有触摸 1=检测到触摸 * 作 者:LC * 备 注:无 ******************************************************************/ char Key_IN2_Scanf(void) { return KEY_IN2; } /****************************************************************** * 函 数 名 称:Key_IN3_Scanf * 函 数 说 明:返回触摸键3引脚电平状态 * 函 数 形 参:无 * 函 数 返 回:0=未检测到有触摸 1=检测到触摸 * 作 者:LC * 备 注:无 ******************************************************************/ char Key_IN3_Scanf(void) { return KEY_IN3; } /****************************************************************** * 函 数 名 称:Key_IN4_Scanf * 函 数 说 明:返回触摸键4引脚电平状态 * 函 数 形 参:无 * 函 数 返 回:0=未检测到有触摸 1=检测到触摸 * 作 者: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的输入状态 char Key_IN2_Scanf(void);//触摸按键2的输入状态 char Key_IN3_Scanf(void);//触摸按键3的输入状态 char Key_IN4_Scanf(void);//触摸按键4的输入状态 #endif
04移植验证
在自己工程中的main主函数中,编写如下。
/* * 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(); // 开发板初始化 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); } }
移植现象:触摸那个区域就打印那个区域被触摸。
模块移植成功案例代码:
链接:https://pan.baidu.com/s/166WcF1ArFv-DnEUmhNz5xA?pwd=LCKF
提取码:LCKF
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !