目录

  • 触摸屏
    • 组成
    • 检测原理
  • GT1151Q芯片
    • 简介
    • 寄存器
      • 控制寄存器(0x8040)
      • 状态寄存器(0x814E)
      • 坐标寄存器(0x8150 ~ 0x819D)
  • 核心代码

一般LCD都会组合触摸屏以扩展相应的功能,这里要注意,触摸屏和LCD是不同的东西,前者用于收集用户的触控信息,后者用于显示。人机交互实际上是单片机通过触摸屏收集到触控信息后,根据触控在LCD上显示。下面介绍触摸屏的原理及相应触摸屏驱动芯片的作用。

触摸屏

组成

触摸屏分为表面电容式触摸屏和投射式触摸屏。前者不透光,一般用于如笔记本电脑触控板之类的非显示领域;后者透光,一般用在手机屏幕等显示领域。投射式触摸屏实际上由三层物质组成,如下图所示:

       三层物质的特点如下:

名称 特点 作用
保护玻璃 手指直接接触的地方 保护内部结构
ITO层 有电极组成,具有导电性和透光性 用于完成触控检测的核心部件
基板 具有相应接口,承上启下 支撑、连接检测电路

检测原理

触摸屏按照检测原理可以分为交互电容型和自我电容型,交互电容型触摸屏的ITO层XY两组电极之间彼此结合组成电容,而自我电容型触摸屏两组电极与地构成电容,结构上的差别也导致检测方法的差别,这里介绍一下交互电容型触摸屏检测方法。
       交互式电容触摸屏的ITO层XY轴之间的电容位置代表了触摸屏的实际坐标,检测电容的充电时间即可确定是否有手指按下,和电容按键原理类似。检测触点坐标时,第1条X轴的电极发出激励信号,所有Y轴的电极接收信号,通过检测交互电容的充电时间可检测出各条Y轴与第1条X轴相交的交互电容的大小。接着各条X轴依次发出激励信号,Y轴重复上述步骤,根据得到的触摸屏电容量变化的二维数据表,即可得知触摸点的坐标。

GT1151Q芯片

简介

触摸屏控制芯片用于检测ITO层电极之间电容的变化,从而得到手指按压的具体坐标,同时将这些坐标和状态信息进行编码,并保存在芯片内部相应的寄存器内,供微控制器读取和调用。
       GT1151Q芯片触摸扫描频率为120Hz,检测通道有16个驱动通道和29个感应通道,两种通道分别对应ITO层的X和Y电极数,数字越大表示检测坐标的精度越高。GT1151Q最高支持10点触控,其引脚功能如下表所示:

引脚号 名称 功能描述
1 ~ 3 DRV02 ~ DRV00 触摸驱动信号输出
4 DRV00 模拟地
5 ~ 33 SENS00 ~ SENS28 触摸模拟信号输入
34 AVDD28 模拟电压输入
35 AVDD22 LDO输出
36 DVDD12 LDO输出
37 DGND 数字地
38 INT 中断信号
39 ~ 40 Sensor_OPT1 ~ Sensor_OPT2 模组识别口
41 I2C_SDA I2C数据信号
42 I2C_SCL I2C时钟信号
43 NC
44 VDDIO GPIO电平控制
45 /RST 系统复位脚
46 ~ 58 DRV15 ~ DRV03 触摸驱动信号输出

GT1151Q芯片的大部分引脚与触摸屏连接,用于输出触摸驱动信号和获取触摸模拟信号,只有4个引脚与开发板连接,分别是INT、/RST、I2C_SCL和I2C_SDA。其中INT为中断引脚,用于检测坐标变化,/RST为复位引脚,I2C_SCL和I2C_SDA为I2C接口的时钟线和数据线。
       GT1151Q芯片使用I2C协议与微控制器进行通信,器件地址为0x14。

寄存器

这里将要介绍一下GT1151Q芯片相应的寄存器,在相应文件可使用宏定义方便控制:

#define GT1151Q_CTRL_REG   0x8040      //GT1151Q控制寄存器
#define GT1151Q_CFGS_REG   0x8050      //GT1151Q配置起始地址寄存器
#define GT1151Q_PID_REG    0x8140      //GT1151Q产品ID寄存器#define GT1151Q_GSTID_REG  0x814E      //GT1151Q当前检测到的触摸情况
#define GT1151Q_TP1_REG    0x8150      //第一个触摸点数据地址
#define GT1151Q_TP2_REG    0x8158      //第二个触摸点数据地址
#define GT1151Q_TP3_REG    0x8160      //第三个触摸点数据地址
#define GT1151Q_TP4_REG    0x8168      //第四个触摸点数据地址
#define GT1151Q_TP5_REG    0x8170      //第五个触摸点数据地址//IIC设备地址(含最低位)
#define GT1151Q_DEVICE_ADDR 0x28

控制寄存器(0x8040)

控制寄存器用于设置GT1151Q芯片完成相应的操作,具体介绍如下表:

状态寄存器(0x814E)

状态寄存器用于存储当前的触点数目,具体介绍如下表,其中bit7为标志位,触点不为0时该位为1,并且不会自动清零。bit3 ~ bit0为触点数目:

坐标寄存器(0x8150 ~ 0x819D)

坐标寄存器用于存储触点信息,共有60个,即每个触点通过6个寄存器存储信息,以触点1为例,如下表所示,0x8150 ~ 0x8151用于存储触点1X坐标值的低字节和高字节,0x8152 ~ 0x8153用于存储触点1Y坐标值的低字节和高字节,0x8154 ~ 0x8155用于存储触点1的宽和高:


       对触点坐标值的存放,可使用以下结构体:

typedef struct
{u16 x;    //横坐标,0xFFFF表示无效值u16 y;    //纵坐标,0xFFFF表示无效值u16 size; //触点大小
}StructTouchPoint;

核心代码

作为核心功能为获取触点坐标的芯片,获取的数据可通过存放于以下结构体:

typedef struct
{u8               pointNum;                 //触摸点数,最多支持POINT_NUM_MAX个触摸点u8               pointFlag[POINT_NUM_MAX]; //触摸点按下标志位,1-触摸点按下,0-未检测到触摸点按下StructTouchPoint point[POINT_NUM_MAX];     //坐标点数据
}StructTouchDev;

通过以下函数可获取数据(仅供参考):

void ScanGT1151Q(StructTouchDev* dev)
{static u16 s_arrRegAddr[5] = {GT1151Q_TP1_REG, GT1151Q_TP2_REG, GT1151Q_TP3_REG, GT1151Q_TP4_REG, GT1151Q_TP5_REG};//各个触点数据地址u8  regValue;u8  buf[6];u8  i;u16 swap;//读取状态寄存器IICCommonReadBytesEx(&s_structIICDev, GT1151Q_GSTID_REG, &regValue, 1, IIC_COMMON_NACK);//读取地址为GT1151Q_GSTID_REG,长度为1字节的数据至regValue中regValue = regValue & 0x0F;//记录触摸点个数dev->pointNum = regValue;//清除状态寄存器regValue = 0;IICCommonWriteBytesEx(&s_structIICDev, GT1151Q_GSTID_REG, &regValue, 1);//循环获取5个触摸点数据for(i = 0; i < 5; i++){//检测到触点if(dev->pointNum >= (i + 1)){IICCommonReadBytesEx(&s_structIICDev, s_arrRegAddr[i], buf, 6, IIC_COMMON_NACK);dev->point[i].x    = (buf[1] << 8) | buf[0];dev->point[i].y    = (buf[3] << 8) | buf[2];dev->point[i].size = (buf[5] << 8) | buf[4];//横屏坐标转换if(1 == s_structLCDDev.dir){swap            = dev->point[i].x;dev->point[i].x = dev->point[i].y;dev->point[i].y = swap;dev->point[i].x = 800 - dev->point[i].x;}//标记触摸点按下dev->pointFlag[i] = 1;}//未检测到触点else{dev->pointFlag[i] = 0;       //未检测到dev->point[i].x   = 0xFFFF;  //无效值dev->point[i].y   = 0xFFFF;  //无效值}}
}

GD32学习笔记(2)触摸屏驱动芯片GT1151Q相关推荐

  1. GD32学习笔记1(高难度工程,点亮一个LED灯)

    系列文章目录 第一章 GD32学习笔记1(高难度工程,点亮一个LED灯) 文章目录 系列文章目录 前言 一.工作流程 二.新建工程的准备工作 三.新建工程 四.工程目录管理 五.代码实现 1.初始化 ...

  2. STM32学习笔记一一触摸屏

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1. 简介 1.1 电阻式触摸屏 电阻式触摸屏利用压力感应进行触点检测控制 ...

  3. Linux驱动学习笔记之触摸屏驱动

    触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 当用触摸笔按下时,产生中断. 在中断处理函数处理函数中启动ADC转换x,y坐标. ADC结束,产生ADC中断 在ADC中断处理函数里上报( ...

  4. Linux驱动开发学习笔记-电容触摸屏驱动

    <电容触摸屏驱动框架> 电容触摸屏驱动其实是以下几种 linux 驱动框架的组合: ① IIC 设备驱动,因为电容触摸 IC 基本都是 IIC 接口的,因此大框架就是 IIC 设备驱动. ...

  5. GD32学习笔记(3)NAND Flash管理

    目录 NAND Flash介绍 ECC算法 FTL 参考代码 ECC 写入数据后获取ECC并写入相应区域 读出数据.获取ECC并重新计算ECC,校验 ECC校正 FTL 标记某一个块为坏块 标记某一个 ...

  6. stm32正常运行流程图_STM32单片机学习笔记(超详细整理143个问题,学习必看)...

    原标题:STM32单片机学习笔记(超详细整理143个问题,学习必看) 1.AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备 2.Stm32f ...

  7. linux 串口信息记到日志,[linux学习笔记]之一:ubuntu ch340调试备忘

    [linux学习笔记]之一:ubuntu ch340调试备忘 已有 2183 次阅读2016-11-8 21:52 |个人分类:linux 最近迷上了Linux,入了一块板.电脑使用win7+ubun ...

  8. 《JavaScript学习笔记》

    JavaScript编程语言 1.1.编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序:就是计算机所执行的一系列的指令集和,而程序都是用我们 ...

  9. 【日志】学习笔记之看图玩转LTM

    学习笔记之看图玩转LTM (不知道怎么回事发上来 图片显示的这么小 不过点击就可以在新窗口里看到大图了) 摘要:TRDB_LTM是友晶科技公司最新推出的 4.3 英吋数字 LCD 触碰面板套件,可以通 ...

最新文章

  1. mysql常用linux命令大全_Linux-MySQL常用命令(示例代码)
  2. Oracle-SQL语法基础【以一个完整项目为例】
  3. python pip-python的pip安装以及使用教程
  4. 【转】[Java] HashMap使用的示例
  5. (转)c# 扩展方法
  6. python中模块和包是什么_Python中模块和包的概念
  7. guid mysql_关于MySQL:MySQL-如何搜索GUID
  8. bad response Not Found 404
  9. 在Excel中快速选择数据
  10. 小米手机 root权限 获取
  11. python清空画布_Python3 tkinter基础 Canvas delete 删除画布中的所有图形
  12. css线条伸缩_CSS3弹性伸缩布局(上)——box布局
  13. 透明背景favicon.ico图标的制作方法
  14. Redis+Zookeeper+NIO+JVM+Dubbo+mq+Kafka+ElasticSearch+POI相关面试题
  15. python 一个简单的网站采集
  16. UAP_STUDIO授权失败解决办法
  17. 晶体三极管工作模式判断
  18. 硬件程序员和软件开发程序员相比,哪一个就业发展前景比较好呢?
  19. 美国食品药品监督管理局支持公开数据共享原则
  20. 《部落与弯刀》,我的第一个真正意义上的规则驱动开放世界游戏,快做完了

热门文章

  1. PyQt(Python+Qt)学习随笔:Qt Designer中怎么给toolBar添加按钮
  2. 7tpro android11,一加7/7Pro/7T/Pro等机型安卓11底层氢OS11刷机包推送-支持root
  3. 机械工程师计算机证书考试科目,查看:机械工程师证认证报名消息及考试内容...
  4. vue 高德地图 定位插件 地图实例插件 获取点击的地方的经纬度和具体地址
  5. Java web对试卷进行单选多选答题进行打分_如何快速进行学生学情测试,这里有具体的攻略和操作指南!...
  6. 一枚工程师的深圳印象
  7. 使用vue-bootstrap做响应式门户网站
  8. 计算机开机错误62,【电脑开机error】电脑开机error no boot_电脑开机error1962
  9. deepin运行qq音乐
  10. MCE | 衰老“走过”的信号途径