触摸IC TTP229学习笔记

首先说明一下,网上资料真的有很多坑!!!请听我娓娓道来……算了不废话,直接上主题:

一、TTP229并不是芯片具体型号,该类芯片下面有多个具体型号,在开发之前,请一定要先确认你的芯片具体型号,

我用的是TTP229BSF,这一款芯片其实是不带I2C功能的!

二、请确认使用对了文档

我刚开始用的文档是 TTP229_SPEC_V1.1(Simplified_Chinese).pdf,毕竟这个是中文文档,看起来方便,但是还是大错特错!因为这个根本不是TTP229BSF的对应文档,文档里描述到了I2C功能,我就埋头研究,结果撞墙两天。。。

三、别被网上的各种资料搞晕了,很多代码根本就不能运行就贴上来了,可恨呐!就拿如何读取触摸按键的键值这个来说吧,官方时序图如下(以16键为例):

根据文档描述,16键模式只支持串行读取,并且需要短接TP2,另外,由于我习惯了数据高电平有效,所以根据文档描述,短接了TP1(等于0表示短接)

重点来了!!!!网上很多参考代码都是貌似根据时序图,通过单片机先设置SDO=0,然后delay(),然后SDO=1,接着SCL=1,delay(),再读取SDO是否为1,delay()……,,,总之会通过单片机对SDO口发命令,其实根本不需要,而且我这样做这样反而读不了结果!!!!

具体原因有官方文档为证:

也就是说,有2种方法可以读取TTP229触摸按键的数据,方法1是单片机一直查询SDO口的数据,这种方法显然效率较低;方法2是单片机可以通过判断SDO口上的DV信号来确认是否有按键按下,我采用的是方法2,部分代码如下:

所以其实真的很简单,时序图上的DV信号是TTP229发出的,并不需要我们通过单片机给它发,因此,我们只要发现SDO口上有高电平(TP1短接接地的情况下,不接地默认就是低电平有效),我们再按照时序,在SCL引脚上发送对应时序就能读取数据了。

下图是我在16键模式、高电平有效条件下,按下11键,通过逻辑分析仪得到的时序图:

由上图可知,通道1的第一个高电平是我按下11键后,TTP发往SDO口上的高电平(时间很短,所以看起来很小),而后面的这个高电平就是11键的数据了(对应SCL时序下的第11个电平变化)。

另外,我用的是STM32,STM32接SDO口引脚配置成浮空输入即可。

如果用线程轮询SDO口,一次轮询后的延时不要太长,否则可能读不到数据。


另外,感谢热心的网友兄弟,他参考我写的内容,自己独立开发出了基于STM32F103芯片的完整工程,工程中也使用到了TTP229,在征得了该网友的同意下,我分享下他的baiduwangpan地址和提取码: 

https://pan.baidu.com/s/1u-icSC3sZ_brvdMiMnd3iw

提取码:vd3c

感谢这位好兄弟!


2022-04-02:由于请求参考代码的人太多了,有时候来不及回复,我把资源上传了,大家自行下载,链接如下:

https://download.csdn.net/download/baidu_15814023/85067361icon-default.png?t=M276https://download.csdn.net/download/baidu_15814023/85067361

  • 27
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 102
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 102
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值