FT5x06 Процедура калибровки
Я успешно интегрировал драйвер для сенсорного экрана FTX506 в Windows CE 7. Этот драйвер использовался почти год для двух прототипов. В последнее время на одном из них перестали работать сенсорные события в верхней части экрана. Мертвая зона - это идеальный прямоугольник, который представляет 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) -> Вход в заводской режим: в руководстве нет заводского режима
- Запись (2,0x4) -> Начать калибровку: 0x02 - регистр "Точки касания", калибровка не запускается
Кроме того, на чипе имеется регистр автоматической калибровки (ID_G_AUTO_CLB_MODE). Запись в 0x00 не имеет никакого эффекта (по крайней мере, в моем случае), и мы всегда читаем 0xFF.
Если кто-то может указать мне правильное направление, чтобы выполнить калибровку экрана, это было бы здорово.
Некоторая дополнительная информация:
- Я проверил сигнал прерывания чипа: нет прерывания при касании в мертвой зоне
- Я пытался прочитать значения регистра касания при нажатии на экран: в мертвой зоне касание не обнаружено.
Я использую документы: https://media.digikey.com/pdf/PCNs/NewHaven%20Display/ECN_12-12-14.pdf