ttp223/ttp229 触摸开关芯片模块入门&使用

简短不看版:

ttp223/229 均是触摸开关芯片

ttp223 能驱动1个触摸按键,无I2C/SPI 通信线,只有固定的引脚输出

ttp223 按其按触发方式分,分为:点动模式(相当于轻触按键)、自锁模式(相当于自锁按键)两种模式

按有效电平分:高电平有效、低电平有效。(是通过设置相关两个IO的电平实现切换的)

 

ttp229 可驱动16个按键,固定为点动模式,低电平有效,并且有通信线,可以通过两根通信线传递16个按键的状态信息。(I2C或者SPI)

TTP223 模块入门

1. 介绍

ttp223是触摸开关芯片, 以ttp223芯片为核心有很多成熟的触摸开关产品如下

 
 

2. 电路原理

ttp223芯片应用电路图如下

 

3. PCB 分析

输入2.5~5v.
输出高电平(0.8v,8mA)或低电平(0.3v,-4mA)信号.

 
 
 
 
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。


 
 
 

TTP229-BSF的使用

 


TTP22x是常见的电容感应式触摸按键控制器,由台湾通泰积体电路原产。TTP22x成本低廉,性能可靠,有不少应用。我在使用TTP229-BSF过程中遇到不少问题,总结如下,与大家分享。欢迎转载,但请注明出处:cnblogs.com/helesheng

一、TTP229型号及对应资料问题

TTP229后缀众多,与一般IC不同,TTP22x系列的不同后缀不仅代表不同温度等级等与功能开发关系不密切的含义,还代表了接口的类型和功能。从台湾通泰的官网上可以发现,目前仍然在产的型号有:

而其中最常见的TTP229-BSF的接口类型为SPI,而不是我想象的I2C!因此应下载和阅读对应的手册《TTP229-BSF_V1.1_EN.pdf》,中文的那个手册《TTP229_SPEC_V1.1(Simplified_Chinese)》则应注意选择SPI接口的内容,而不是I2C的部分。

二、TTP22x输出

TTP22x可以选择直接管脚输出对应按键状态,或同步串口输出。但以TTP229-BSF为例,它只有8个按键的直接管脚输出(直接管脚输出使用了TP8-15这八个管脚),无法使用TTP229的全部十六个按键。因此建议在有单片机的系统中使用同步串口读取按键值,可以在使用全部功能的同时解决单片机GPIO数量。

 

 

三、TTP22x管脚配置

TTP229的功能配置管脚与按键管脚共用,使用时可以使用一个1MΩ的电阻连接到低电平,或者是悬空(悬空时是缺省配置)。借用立创开源平台上的下图电路示意一下:但开关SW1的对应位置被短路后,TTP229的对应管脚被1MΩ的电阻连接到地,从而被配置为非缺省值。

 

 最常用的配置是TP0、TP1、TP2的配置,其含义如下:

 

 TP0高阻抗接地(顺便猜测以下高阻抗是为了不影响触摸功能,且降低功耗),将是按键输出配置为开漏形式,用以连接不通电源电压的单片机和按键检测系统。

TP1高阻抗接地,将把同步串行输出的输出配置为高电平有效(被按下的键对应的位,读取时输出高电平,未被按下的输出低电平)。

TP2高阻抗接地,将使能15键。

以上配置在上电时完成,上电后重新配置无效。

四、TTP229-BSF读取时序

由于TTP229-BSF是SPI接口的,因此只能使用数据手册中的以下时序。(TP2被高阻抗接地,配置为16键模式)

 

仔细观察后发现,由于高低电平有效的配置不同(由TP1是否接地决定),两种时序关系的时钟和数据相位是相反的——而这也正是网络上广为流传的大量代码不一定能正常工作的原因。 它们的区别在于是下降沿刷新数据,上升沿读取;还是上升沿刷新数据,下降沿读取。

由于我使用了高电平有效的配置(TP1高阻抗接地),因此应该使用第一种时序。

四、TTP229-BSF读取代码

为配合手册要求的第一种时序,我的代码供大家参考:

复制代码
复制代码
unsigned char read_ttp229(void)//读取TTP229按键值的函数
//以下函数体用于以下情形:
//TP0=1(未连接1MΩ下拉电阻,推挽输出);
//TP1=0(连接1MΩ下拉电阻;高电平有效——按下键输出高电平;且上升沿刷新数据,下降沿读取数据);
//TP2=0(连接1MΩ下拉电阻,使用16个键)
////注意:这个代码并不一定会产生16个读取时钟,因此要保证读取结果正确两次调用之间要间隔2ms以上,以等待接口自动恢复初始状态。
{
    unsigned char i;
    for(i = 0 ; i < 16 ; i++)//以下采用了手册中BSF芯片的第一种SPI时序:上升沿刷新数据,下降沿读取数据
    {
        TTP229_SCL = 1;
        delay_us(1);//ttp229读取的最大时钟为512KHz
        TTP229_SCL = 0;
        if(TTP229_SDO != 0)
            break;
        delay_us(1);
    }
    if(i < 16)
        return(i+1);
    else
        return(0);
}    
复制代码
复制代码

其中:

1、读取GPIO数据在SCL下降沿之后。

2、每个时钟电平维持时间被配置为1us,这是为了满足TTP229手册中关于同步时钟频率不得高于512KHz的要求。

3、我不一定给出所有16个位的读取时钟,而是在读取到第一个高电平时就返回按键值。这种方法可以解决按键读取时间,但有可能造成单片机软件和TTP229的串行接口失去同步(即:在读取到某个键值退出后,再次进入读取键值程序,TTP229仍然以为软件在继续读取之前没有全部读走的后续数据)。之所以没有发生这个问题,原因是TTP229同步串行接口具有一个2ms的状态机控制,该状态机会在一次读取2ms内自动恢复初始状态(无论是否读取完成都会恢复)。

 

 当然,这就要求我间隔2ms以上再发起读取。对于按键检测来说2ms的间隔很容易做到。

4、返回的键值将是1-16的编号,如果没有按键将返回0。

5、我使用了实时操作系统,单独开启一个任务来管理TTP229,因此直接使用了查询法(software poll)来检测是否有按键。如果使用裸机编程的朋友可以使用间隔10-100ms的定时中断来调用上面的驱动程序查询读取键值。也可以使用SDO管脚提供的DV中断功能来提示单片机读取——当然在这么做的时候仍然要注意TP1配置对信号极性和时序的影响。

 

 

参考文章:

1. TTP 223 部分

作者:Neural_PDE
链接:https://www.jianshu.com/p/9a67b50d10fe
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

2.  TTP 229 部分

链接:https://www.cnblogs.com/helesheng/p/16395463.html#_labelTop

来源:cnblogs

posted @ 2025-07-16 13:40  FBshark  阅读(556)  评论(0)    收藏  举报