新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2015-12-24
- 在线时间
- 31 小时
|
大家好,我在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
}
|
|