STM32系列之电容触摸屏讲解

时间:2017-09-22

触摸屏分类:

  1. 电阻式:定位准确,单点触摸

  2. 电容感应式:电容感应式:支持多点触摸,价格偏贵。工业应用广泛

  3. 红外线式:价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真

  4. 表面声波式:解决各种缺点,但是屏幕表面如果有水滴和尘土会使触摸屏变的迟钝

注:触摸屏本质上与液晶是分离的,触摸屏负责的是检测触摸点,液晶屏负责的是显示。区别开来;一般都需要一个驱动IC来检测电容触摸,且一般是通过IIC接口输出触摸数据的。

常见的驱动IC:

  1. GT9147:采用17*10的驱动结构(10个感应通道,17个驱动通道)

  2. OTT2001A:采用13*8的驱动结构(8个感应通道,13个驱动通道)

注:它们与MCU连接通过4根线:SDA、SCL、RST和INT。

GT9147:

GT9147的IIC地址,可以是0X14或者0X5D,当复位结束后的5ms内,如果INT是高电平,则使用0X14作为地址,否则使用0X5D作为地址,具体的设置过程,请看:GT9147数据手册.pdf这个文档。本章我们使用0X14作为器件地址(不含位,换算成读写命令则是读:0X29,写:0X28)

控制命令寄存器(0X8040)

该寄存器可以写入不同值,实现不同的控制,我们一般使用0和2这两个值,写入2,即可软复位GT9147,在硬复位之后,一般要往该寄存器写2,实行软复位。然后,写入0,即可正常读取坐标数据(并且会结束软复位)。

配置寄存器组(0X8047~0X8100)

这里共186个寄存器,用于配置GT9147的各个参数,这些配置一般由厂家提供给我们(一个数组),所以我们只需要将厂家给我们的配置,写入到这些寄存器里面,即可完成GT9147的配置。

产品ID寄存器(0X8140~0X8143)

这里总共由4个寄存器组成,用于保存产品ID,对于GT9147,这4个寄存器读出来就是:9,1,4,7四个字符(ASCII码格式)。因此,我们可以通过这4个寄存器的值,来判断驱动IC的型号,从而判断是OTT2001A还是GT9147,以便执行不同的初始化。

状态寄存器(0X814E)

我们仅关心位和4位,位用于表示buffer状态,如果有数据(坐标/按键),buffer就会是1,4位用于表示有效触点的个数,范围是:0~5,0,表示没有触摸,5表示有5点触摸。

坐标数据寄存器(共30个)

这里共分成5组(5个点),每组6个寄存器存储数据,以触点1的坐标数据寄存器组为例, 
 
我们一般只用到触点的x,y坐标,所以只需要读取0X8150~0X8153的数据,组合即可得到触点坐标。其他4组分别是:0X8158、0X8160、0X8168和0X8170等开头的16个寄存器组成,分别针对触点2~4的坐标。同样GT9147也支持寄存器地址自增,我们只需要发送寄存器组的首地址,然后连续读取即可,GT9147会自动地址自增,从而提高读取速度。

上一篇:STM32 CAN总线标识符过滤器难点解析
下一篇:如何选择您的示波器—几个重要指标

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料