我已经在Windows CE 7上成功集成了FTX506触摸屏的驱动程序。这个驱动程序已经在2个原型上使用了近一年。最近,在其中一个上,触摸事件停止在屏幕的上方工作。死区是一个完美的矩形,代表屏幕高度的10%,从顶部开始。
我想知道这是否可以通过校准来解决,但我无法找到该芯片的校准程序。到目前为止,我发现的只是linux源代码中的校准例程:
int fts_ctpm_auto_clb(struct i2c_client *client)
{
unsigned char uc_temp;
unsigned char i ;
printk("[FTS] start auto CLB.\n");
msleep(200);
ft5x0x_write_reg(client,0, 0x40);
delay_qt_ms(100); //make sure already enter factory mode
ft5x0x_write_reg(client,2, 0x4); //write command to start calibration
delay_qt_ms(300);
for(i=0;i<100;i++)
{
ft5x06_get_reg(client,0,&uc_temp);
if ( ((uc_temp&0x70)>>4) == 0x0) //return to normal mode, calibration finish
{
break;
}
delay_qt_ms(200);
printk("[FTS] waiting calibration %d\n",i);
}
printk("[FTS] calibration OK.\n");
msleep(300);
ft5x0x_write_reg(client,0, 0x40); //goto factory mode
delay_qt_ms(100); //make sure already enter factory mode
ft5x0x_write_reg(client,2, 0x5); //store CLB result
delay_qt_ms(300);
ft5x0x_write_reg(client,0, 0x0); //return to normal mode
msleep(300);
printk("[FTS] store CLB result OK.\n");
return 0;
}
但是,如果我将此代码与FT5X06寄存器交叉,则有点令人困惑。
例如:
另外,芯片上有一个自动校准寄存器(ID_G_AUTO_CLB_MODE)。将其写入0x00无效(至少在我的情况下不是这样),我们总是读取0xFF。
如果有人能指出我正确的方向来执行屏幕校准,那就太棒了。
其他一些信息:
我正在使用的文件: https://media.digikey.com/pdf/PCNs/NewHaven%20Display/ECN_12-12-14.pdf