esp32硬件外设

关于对ttp229的驱动,在这里首先简单了解一下esp32的硬件外设部分,在这里可以通过乐鑫官网里面的产品规格书中了解到,该芯片的PIN脚功能。

ESP32 EN脚 esp32 en脚一定要串电阻吗_嵌入式硬件

 

 芯片规格书中的说明太复杂了,看看官网开发板的引脚图吧

ESP32 EN脚 esp32 en脚一定要串电阻吗_单片机_02

 

 简单介绍一下esp32的一些常用引脚,3路UART,18路ADC,2路DAC,10路ITOUCH,2路I2C。

ttp229-16路触摸按键

在前面已经知道esp32拥有10路的触摸传感器外设,已经满足于大部分的需求了,而如果需要用10路以上,并且有部分外设做另外使用的话,可能就需要用到ttp229-16路电容触摸了,先简单介绍一下ttp229,ttp229有并行8键输入模式,连接方面只需将TP0~7连接到单片机外设即可,有串行16键输入模式,连接方面为时钟线和信号线,两者是通过 TP2(KYSEL)是否连接高阻值电阻到VSS 所决定。

当TP2连接一个下拉电阻,就是当TP2为0时,ttp229就为16路输入模式,通过2线串行通讯方式进行的,连接的时序类似于I2C,同样也是和I2C一样是两条线(一条SCL,一条SDO)连接,这很容易让人弄错,并且看芯片规格书,发现里面也有对I2C的说明。

ESP32 EN脚 esp32 en脚一定要串电阻吗_物联网_03

 芯片规格书中介绍ttp229的串行通讯有I2C,但是发现,用I2C根本没有起不了如何反应,后续看了更多的芯片规格书后发现

ESP32 EN脚 esp32 en脚一定要串电阻吗_ESP32 EN脚_04

 看到这个的时候我顿时豁然开朗,有大部分芯片是并不支持I2C串口通讯功能的,同样的市面上的16路触摸按键模块用的是TTP229-BSF模块,并不支持I2C串口通讯,而TTP229S1和TTP229-AQG在市面上已经很少出现了。

ESP32 EN脚 esp32 en脚一定要串电阻吗_输入模式_05

ESP32 EN脚 esp32 en脚一定要串电阻吗_嵌入式硬件_06

通俗一点就是无法使用I2C串口通讯进行该按键模块的读数据那么就只能是使用这种ttp229内部时序图进行读数据,触发模式可以是下降沿有效或者上升沿有效。

TTP229基于arduino-ide中的应用 

前面的一切都只是介绍,主要还是要看如何应用,在arduino-ide中库管理中直接下载的库,有TTP229的库,但是那种库是通过I2C进行驱动的,在这里我踩了个很深的坑,搞了半天一直以为是买回来的模块坏了,后面才知道,官方的库不能使用于市面上的16路触摸屏模块,随后在GitHub里面找到了一个可以用的库来

ESP32 EN脚 esp32 en脚一定要串电阻吗_物联网_07

 截图已经放这里了,各位自己搜就好了,里面的实例程序可以直接使用,复制黏贴那里的库文件就好了

ESP32 EN脚 esp32 en脚一定要串电阻吗_物联网_08

16路触摸按键的模块吧

ESP32 EN脚 esp32 en脚一定要串电阻吗_输入模式_09

 就这样连接就好了

当然在应用中发现了一个不足的地方,这个要想很好的使用,那么必须是循环函数里,写这个uint8_t key = ttp229.ReadKey16(),而ReadKey16()在库里

uint8_t TTP229::ReadKey16()
 {
   WaitForTouch();
   Key16();
   return _key16;
 }

是这样的里面一个waitfortouch,就是一直在等待触摸按键的触发才有动作,那么这样在后续遇到的问题就是,在循环函数内想写入其他的内容都没办法运行,通过很多的调整和修改我都没能解决那个触发等待,我想弄的是触发到按键了按键才有运行,而每触发到按键应该运行其他的,但是一直不知道怎么弄,怎么改,不知道各路大神能不能帮忙解决这种问题