FT5x06校准程序

时间:2017-10-17 10:20:12

标签: driver windows-ce touchscreen calibration

我已经在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寄存器交叉,则有点令人困惑。

例如:

  • 写(0,0x40) - &gt; 进入工厂模式:没有工厂模式 手册
  • 写(2,0x4) - &gt; 开始校准:0x02是&#34;触摸 点&#34;注册,不开始校准

另外,芯片上有一个自动校准寄存器(ID​​_G_AUTO_CLB_MODE)。将其写入0x00无效(至少在我的情况下不是这样),我们总是读取0xFF。

如果有人能指出我正确的方向来执行屏幕校准,那就太棒了。

其他一些信息:

  • 我检查了芯片的中断信号:当死区发生触摸时没有中断
  • 我在按下屏幕的同时尝试读取触摸寄存器值:在死区中未检测到触摸。

我正在使用的文件: https://media.digikey.com/pdf/PCNs/NewHaven%20Display/ECN_12-12-14.pdf

0 个答案:

没有答案
相关问题