TTP229触摸模块的STM32单片机驱动分享

我们之前分享过一款基于TTP223芯片的点动触摸传感器模块,利用它可以实现单点按键的触摸。

最近调试的板子上画了一个TTP229芯片,这个芯片可以实现16路触摸按键,今天我们就分享一下这个。

TTP229-BSF芯片简介

TTP229-BSF芯片,封装为SSOP-28,是一款电容式16键触摸感应IC,专为触摸板控制而设计。主要应用是替换机械开关或按钮,芯片一次性可以读取出16个按键的状态数据。

工作电压:2.4V-5.5V。

应用电路

官方手册上的推荐电路为:

16 键模式参考应用电路图

上面参考电路中有6个灵敏度调节电容,每个电容对应功能如下表所示:

CJ0~CJ3  和 CJWA-CJWB 的电容值可用于调节对应键的灵敏度。

电容值越小,灵敏度越高。灵敏度的调节必须是根据实际应用的 PCB 来做决定。电容值的取值范围是 1pF ≦ CJ0~CJ3 ≦ 50pF ,1pF ≦ CJWA~CJWB ≦ 50pF。

原理图

实际加工之后的PCB板,建议先通过调节 C21~C24 的容值来调节 TP0~TP15 度,再调节 C25 和 C26 的容值来调节唤醒灵敏度。

板子上画了五个按键,分别为TP0、TP1、TP2、TP3、TP8,我的PCB板上使用的电容值都为10pF。

模式选择

由上面的原理图,我们知道:TP1=0,TP2=0 。

当 TP1=0,TP2=0 ,我们查询手册知道,设置为16按键全使用,SDA高电平触发模式。

TP3=0,TP4=0,对应多键模式,即可以同时按下多个按键。如果TP3和TP4悬空,即不焊接1M电阻,那么即为全部单键有效。

这五个选项端口具体定义如下:

时序分析

由于本实例实际情况, TP1=0,TP2=0 ,所以具体时序图如下:

16键输入,高电平有效时序

注意:虽然这个芯片使用了两个引脚来驱动,命名也像I2C总线的命名,但是这个驱动真的跟I2C一点关系没有。

读取16个按键状态的函数实现如下所示:

uint16_t Touch_Read(void)
{
 uint8_t i = 0; 
 uint16_t real_Value = 0;
 
 //发送一个高电平
 SDA_OUT();
 TTP_SDO = 1;
 delay_us(100);
 TTP_SDO = 0;
 delay_us(20);
 
 SDA_IN();

 //循环获取16个触摸按键的状态
 for (i = 0; i < 16; i ++)
 {
  TTP_SCL = 1;
  delay_us(100);
  TTP_SCL = 0;
  delay_us(1);
  
  if (TTP_SDI == 1)
  {
   real_Value |= (1 << i);
  }        
 }
 
 delay_ms(2);
 
 return real_Value;
}

利用上面函数的返回值,可以与上一次调用的返回值相比,如果一致,可认为是同一次触摸操作,这样可以避免误认为多次动作。

结果展示

通过上面视频的展示,我们可以看出来,焊盘盖不盖油都是不影响识别的,整体来看,识别的准确度还是很高的,把触摸按键应用到一些需要防水的使用场景还是挺不错的。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 1
收藏 2
关注 56
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧