打印

GT9147驱动程序

[复制链接]
233|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
哈金|  楼主 | 2018-7-26 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在学习探索者F4开发板中4.3寸触摸屏操作,驱动芯片是GT9147。看了例程后觉得程序有点乱,书写风格不符合自己的审美观。把例程烧进单片机后运行,发现触摸灵敏度不行,经常按下几次都没有反应。综上,决定自己重新编写这个驱动,我是菜鸟,花了将近两天时间。对自己编写的驱动程序进行了一些测试,结果良好,挺开心的。现共享出驱动源码,大家一起讨论下,望指正。由于系统原因,复制到帖子上的源码格式稍乱,大家可以下载下来。
/****************************************************
* 文 件 名:
* 描    述:GT9147操作文件
* 作    者:YouDream
* 编写时间:2015.02.04
* 说    明:在探索者STM32F4开发平台试验通过
引用请说明出处
*****************************************************/
#ifndef        _GT9147_H
#define _GT9147_H

/*********************头文件包含*********************/
#include        "stm32f4xx.h"
#include        "BitBand.h"
#include        "Delay.h"

/********端口模式寄存器设置,PF11设置为输入模式*******/
#define GT9147_SDA_SetAsIntput()        {                                                                                
GPIOF->MODER &= ~(3 << (11 * 2));       
GPIOF->MODER |=   0 << (11 * 2);        
}

/******端口模式寄存器设置,PF11设置为通用输出模式******/
#define GT9147_SDA_SetAsOutput()        {                                                                                
GPIOF->MODER &= ~(3 << (11 * 2));       
GPIOF->MODER |=   1 << (11 * 2);        
}

/*********************IO操作函数*********************/
#define        GT9147_RST                        GPIOC_UAOPin(13)        //用在输出模式
#define GT9147_SCL                         GPIOB_UAOPin(0)                //用在输出模式
#define GT9147_SDA                         GPIOF_UAOPin(11)        //用在输出模式
#define GT9147_SDA_Read         GPIOF_UAIPin(11)        //用在输入模式
#define GT9147_INT                         GPIOB_UAIPin(1)                //用在输入模式

/***************GT9147 Device Address****************/
#define GT9147_DevAdr0                         0x28                        //最低位是读写控制位,按位或0x01则读,按位与0xfe则写
/*
#define GT9147_DevAdr1                         0xBA                        //最低位是读写控制位,按位或0x01则读,按位与0xfe则写
*/

/******************GT9147寄存器地址*******************/
#define GT9147_ConfigMsgReg         0x8047                        //GT9147配置信息寄存器起始地址
#define GT9147_ProductIDReg                0x8140                        //GT9147产品ID寄存器地址
#define GT9147_TouchStateReg         0X814E                        //GT9147当前触摸情况寄存器地址
#define GT9147_TouchPoint1Reg        0X8150                  //GT9147触摸点1寄存器起始地址
#define GT9147_TouchPoint2Reg        0X8158                  //GT9147触摸点2寄存器起始地址
#define GT9147_TouchPoint3Reg        0X8160                  //GT9147触摸点3寄存器起始地址
#define GT9147_TouchPoint4Reg        0X8168                  //GT9147触摸点4寄存器起始地址
#define GT9147_TouchPoint5Reg        0X8170                  //GT9147触摸点5寄存器起始地址

//触摸点相关数据结构体定义
typedef struct
{
uint8_t TouchSta;        //触摸情况,bit7-bit5:保留;bit4-bit0触摸点按下有效标志,有效为1,分别对应触摸点5-1;
uint16_t x[5];                //支持5点触摸,需要使用5组坐标存储触摸点数据
uint16_t y[5];

}TouchPointRefTypeDef;

//声明一个TouchPointRefTypeDef类型的结构体
extern TouchPointRefTypeDef TPR_Structure;

/********************外部函数声明********************/
extern void GT9147_WrNByte(uint8_t Daddr,uint16_t Waddr,uint8_t a[],uint8_t n);
extern void GT9147_RdNByte(uint8_t Daddr,uint16_t Waddr,uint8_t a[],uint8_t n);
extern void GT9147_SendConfigMSG(uint8_t cmd);
extern void GT9147_Init(void);
extern void GT9147_Scan(void);

#endif

/*********************End of File********************/

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

432

主题

433

帖子

1

粉丝