GT911调试的那些梗

2019-04-14 19:19发布



环境:基于公司的电路板。模拟板+数字板(zynq)+GT911触摸屏
梗1:搭建好环境后,通过数字版的zynq中的PL的EMIO映射出了4跟管脚,INT,RESET,SDA,SCL。用示波器抓取INT和RESET的上电时序,发现没有输出。半天后,发现,示波器有问题,用万用表可以测到电平变化。
梗2:发现RST一直为低,(gt911 复位低)。经查:由于电路上没有给RTS拉上拉电阻。
梗3:I2C没有输出,确认映射好管脚等。经查:模拟板有问题,数字板上的PL管脚是引入到模拟板上, 后才和GT911连接。但是模拟板有问题,所以没有输出。
梗4:换模拟板后,I2c控制信号正常,但是时钟闲置为低,并且I2C没有设备响应。经查:由于数字板有问题,并且在FPGA内部对I2C管脚重新映射的时候没有做内上拉,导致时钟有问题。
梗5:在数字板和模拟板都换后,发现触摸屏还是没有响应。但是同样挂在在I2C0控制器下的RTC可以正常响应并且通信,并且对比RET和INI的上电时序是正常的。后抱着试下的心态,将触摸屏换了,后,可以正常通信。中断等正常。原来之前调试用的屏幕是GT811的,最后换的才是911的屏。到处是坑。
问题总结:调试环境问题。EMIO映射问题。


测试代码: #include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  


#define TOUCHKEY_TAG "TouchkeyDemo"  
#define TOUCHKEY_FILE "/dev/input/event0" 
int main(int argc, char **argv)  
{  
int nFd;  
int nRet;  
struct input_event *sInputEvent;


sInputEvent = malloc(sizeof(struct input_event));  
nFd = open(TOUCHKEY_FILE, O_RDWR);  
if(nFd < 0)  
{  
printf("fail ");
return -1;  
}  
else  
{  
printf("success ");
}
memset(sInputEvent, 0, sizeof(struct input_event)); 
while(1)
{
nRet = read(nFd, sInputEvent, sizeof(struct input_event));  
if(nRet < 0)  
{  
printf("read error ");
return nRet;  
}
printf("type: 0x%x ", sInputEvent->type);  
printf("code: 0x%x ", sInputEvent->code);
printf("value: %d ", sInputEvent->value);
/*printf("value: 0x%x ", sInputEvent->value);*/
}
free(sInputEvent);  
close(nFd);  
return 0;  
}  


使用:使用QT的tslib和多点触摸使用。