TTP224 是一款使用电容式感应原理设计的触摸 IC,其稳定的感应方式可以应用到各种不同电子类产品;面板介质可以是完全绝源的材料,专为取代传统的机械结构开关或普通按键而设计,提供4个触摸输入端口及4个直接输出端口。
特性
- 工作电压 2.4V~5.5V。
- 可以由外部 Option 选择是否启用内部稳压电路功能。
- 工作电流 @VDD=3V 无负载时:
- 低功耗模式下典型值 2.5uA
- 快速模式下典型值9uA
- @VDD=3V 时,在快速模式下 KEY 最快响应时间为100mS,低功耗模式下为 200mS。
- 各 KEY 灵敏度可以由外部电容进行调节(0~50pF)。
- 提供 LPMB 端口选择快速模式或低功耗模式。
- 提供直接输出模式,触发模式,开漏输出,CMOS 高电平有效或低电平有效输出, 经由 TOG/AHLB/OD 端口选择。
- 提供两个无二极管保护的输出端口 TPQ0D,TPQ2D 仅限于低电平有效。
- 提供 MOT1, MOT0 端口选择最大输出时间:120秒/64秒/16秒/无穷大。
- 上电后约有 0.5 秒的系统稳定时间,在此期间内不要触摸 Touch PAD 且触摸功能无效。
- 有自动校准功能,当无按键被触摸时,系统重新校准周期约为4.0秒。
引脚说明

管脚序号 |
管脚名称 |
类型 |
管脚描述 |
1 |
TP0 |
I/O |
触摸输入端口 |
2 |
TP1 |
I/O |
触摸输入端口 |
3 |
TP2 |
I/O |
触摸输入端口 |
4 |
TP3 |
I/O |
触摸输入端口 |
5 |
AHLB |
I-PL |
输出高、低有效平选择,默认值:0 |
6 |
VDD |
P |
正电源电压 |
7 |
VREG |
P |
内部稳压电路输出端口 |
8 |
TOG |
I-PL |
输出类型选择,默认值:0 |
9 |
LPMB |
I-PL |
低功耗/快速模式选择,默认值:1 |
10 |
MOT0 |
I-PH |
最长输出时间选择,默认值:1 |
11 |
VSS |
P |
负电源电压,接地 |
12 |
DIS13 |
I-PH |
TP1、TP3 禁用选择端口,默认值:1 |
13 |
REGEN |
I-PH |
内部稳压电路启用/禁用选择,默认值:1 |
14 |
OD |
I-PH |
开漏输出选择,默认值:1 |
15 |
SM |
I-PH |
单键/多键输出选择,默认值:1 |
16 |
TPQ3 |
O |
直接输出端口 |
17 |
TPQ1 |
O |
直接输出端口 |
18 |
TPQ2D |
OD |
开漏输出口(无二极管保护电路),低电平有效 |
19 |
TPQ0 |
O |
直接输出端口 |
20 |
TPQ2 |
O |
直接输出端口 |
21 |
TPQ1D |
OD |
开漏输出端口(无二极管保护电路),低电平有效 |
I → 仅作为 CMOS 输入
O → CMOS 输出
I/O → CMOS 输入/输出
I-PH → CMOS 输入带上拉电阻
I-PL → CMOS 输入带下拉电阻
OD → 开漏输出,无二极管保护电路
驱动代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| #include "ttp224.h"
void TTP224_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_TTP, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_IN1|GPIO_IN2|GPIO_IN3|GPIO_IN4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(PORT_TTP, &GPIO_InitStructure);
GPIO_ResetBits(PORT_TTP, GPIO_IN1|GPIO_IN2|GPIO_IN3|GPIO_IN4); }
char Key_IN1_Scanf(void){ return KEY_IN1; }
char Key_IN2_Scanf(void){ return KEY_IN2; }
char Key_IN3_Scanf(void){ return KEY_IN3; }
char Key_IN4_Scanf(void){ return KEY_IN4; } =================================================================
#ifndef __TTP224_H_ #define __TTP224_H_
#include "stm32f10x.h"
#define RCC_TTP RCC_APB2Periph_GPIOA #define PORT_TTP 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_ReadInputDataBit(PORT_TTP, GPIO_IN1) #define KEY_IN2 GPIO_ReadInputDataBit(PORT_TTP, GPIO_IN2) #define KEY_IN3 GPIO_ReadInputDataBit(PORT_TTP, GPIO_IN3) #define KEY_IN4 GPIO_ReadInputDataBit(PORT_TTP, GPIO_IN4)
void TTP224_GPIO_Init(void); char Key_IN1_Scanf(void); char Key_IN2_Scanf(void); char Key_IN3_Scanf(void); char Key_IN4_Scanf(void);
#endif ===============================================
#include "stm32f10x.h" #include "board.h" #include "bsp_uart.h" #include "stdio.h" #include "bsp_touchkey.h"
int main(void){
board_init();
uart1_init(115200);
TTP224_GPIO_Init(); printf("ttp224 demo start\r\n"); while(1){ if(Key_IN1_Scanf() == 1) { printf("[1]-Touch!\r\n"); } if(Key_IN2_Scanf() == 1) { printf("[2]-Touch!\r\n"); } if(Key_IN3_Scanf() == 1) { printf("[3]-Touch!\r\n"); } if(Key_IN4_Scanf() == 1) { printf("[4]-Touch!\r\n"); }
delay_ms(200); }
}
|
https://github.com/TooUpper/SensorDrive