OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2651|回复: 8

ucgui,GT811驱动,触摸屏幕没反应

[复制链接]

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
发表于 2016-12-20 09:32:55 | 显示全部楼层 |阅读模式
大家好,我在ucosii 上进行ucgui移植,驱动芯片为GT811,触摸后屏幕没反应。int  GUI_TOUCH_X_MeasureX(void){

        GT811_Scan();
        if(ctp_dev.tpsta&0X1F)
        {
                return ctp_dev.x[0];
        }else return 0XFFFF;

}

int GUI_TOUCH_X_MeasureY(void)
{

        GT811_Scan();
        if(ctp_dev.tpsta&0X1F)
        {
        return ctp_dev.y[0];
        }else return 0XFFFF;
}


void GT811_Scan(void)
{
         u8 buf[34];
        if((ctp_dev.tpsta&0X80)==0)return;//ctp_dev.tpsta的初始值为0
    GT811_RD_Reg(CT_READ_XY_REG,buf,34);//读取坐标寄存器,CT_READ_XY_REG地址为0x721,是触控点标志寄存器
        ctp_dev.tpsta=buf[0]&0X1F;        //触摸点状态在后五位中
#if CT_EXCHG_XY==1                                //触控屏大小800*480
        ctp_dev.y[0]=(( u16)buf[2]<<8)+buf[3];        //Touch point 1 coordinates
        ctp_dev.x[0]=(( u16)buf[4]<<8)+buf[5];
        ctp_dev.ppr[0]=buf[6];                        //触摸压力
        ctp_dev.y[1]=(( u16)buf[7]<<8)+buf[8];        //Touch point 2 coordinates
        ctp_dev.x[1]=(( u16)buf[9]<<8)+buf[10];
        ctp_dev.ppr[1]=buf[11];
        ctp_dev.y[2]=(( u16)buf[12]<<8)+buf[13];//Touch point 3 coordinates
        ctp_dev.x[2]=(( u16)buf[14]<<8)+buf[15];
        ctp_dev.ppr[2]=buf[16];
        ctp_dev.y[3]=(( u16)buf[17]<<8)+buf[24];//Touch point 4 coordinates
        ctp_dev.x[3]=(( u16)buf[25]<<8)+buf[26];
        ctp_dev.ppr[3]=buf[27];
        ctp_dev.y[4]=(( u16)buf[28]<<8)+buf[29];//Touch point 5 coordinates
        ctp_dev.x[4]=(( u16)buf[30]<<8)+buf[31];
        ctp_dev.ppr[4]=buf[32];
#else
        ctp_dev.y[0]=(( u16)buf[2]<<8)+buf[3];                //Touch point 1 coordinates
        ctp_dev.x[0]=800-((( u16)buf[4]<<8)+buf[5]);
        ctp_dev.ppr[0]=buf[6];
        ctp_dev.y[1]=(( u16)buf[7]<<8)+buf[8];                //Touch point 2 coordinates
        ctp_dev.x[1]=800-((( u16)buf[9]<<8)+buf[10]);
        ctp_dev.ppr[1]=buf[11];
        ctp_dev.y[2]=(( u16)buf[12]<<8)+buf[13];                //Touch point 3 coordinates
        ctp_dev.x[2]=800-((( u16)buf[14]<<8)+buf[15]);
        ctp_dev.ppr[2]=buf[16];
        ctp_dev.y[3]=(( u16)buf[17]<<8)+buf[24];                //Touch point 4 coordinates
        ctp_dev.x[3]=800-((( u16)buf[25]<<8)+buf[26]);
        ctp_dev.ppr[3]=buf[27];
        ctp_dev.y[4]=(( u16)buf[28]<<8)+buf[29];                //Touch point 5 coordinates
        ctp_dev.x[4]=800-((( u16)buf[30]<<8)+buf[31]);
        ctp_dev.ppr[4]=buf[32];
#endif
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
 楼主| 发表于 2016-12-20 09:39:39 | 显示全部楼层
GUITouchConf.h为:
#define GUI_TOUCH_AD_LEFT  0
#define GUI_TOUCH_AD_RIGHT  800
#define GUI_TOUCH_AD_TOP  0
#define GUI_TOUCH_AD_BOTTOM  480
#define GUI_TOUCH_SWAP_XY    0
#define GUI_TOUCH_MIRROR_X   0
#define GUI_TOUCH_MIRROR_Y   0
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-20 10:07:05 | 显示全部楼层
周期性的调用函数GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY(),然后串口输出看一下,X,Y的值是否正常
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-4-6
在线时间
8 小时
发表于 2016-12-20 11:33:14 | 显示全部楼层
我遇到了和你同样的问题,我也在做一个基于ucos+ucgui 的项目,触摸控制器也是GT811,能留个联系方式一起交流吗?本人qq是1067390546
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
 楼主| 发表于 2016-12-20 13:32:48 | 显示全部楼层
zuozhongkai 发表于 2016-12-20 10:07
周期性的调用函数GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY(),然后串口输出看一下,X,Y的值是否正常

试了,没反应
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-12-20 15:00:25 | 显示全部楼层

那就是你的整个触摸初始化都是有问题的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
 楼主| 发表于 2016-12-22 10:27:02 | 显示全部楼层

调用GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY()有坐标输出,可是显示初始化失败,属于什么呢?
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
 楼主| 发表于 2016-12-22 13:22:26 | 显示全部楼层
zuozhongkai 发表于 2016-12-20 15:00
那就是你的整个触摸初始化都是有问题的

调用GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY()有坐标输出,可是显示初始化失败,属于什么呢?
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-12-24
在线时间
31 小时
 楼主| 发表于 2016-12-28 10:16:56 | 显示全部楼层
问题已解决,没有调用GUI_TOUCH_Exec()。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表