请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TSC2046 工具/软件:
STM32F746 使用 TSC2046 触控
我获得了可重复性、但 在 5 英寸电阻屏幕上的数据偏斜。 tsc2046 设置为 12 位差分 PD1 =0 PD0 =0
未触摸的原始数据为 2,047,2047
角的平均读数
TL = 1,175,1950
TR = 1,640,1806
BL = 1,180,1606
BR = 1,959,1175
中心 1,600,1620
这些数字是可重复的、但为什么它们偏斜? 这是正常的吗? 如何校准屏幕?
在下面的代码中、我等待 PENIRQ 线路变为低电平、然后再读取。 Z、X、Y
我尝试了几个屏幕,同样的结果。
//8. Get touch screen data
TS_TOUCH_DATA_Def TSC2046_GetTouchData(void)
{
TS_TOUCH_DATA_Def myTsData;
uint16_t temp16x=0, temp16y=0;
//Is screen pressed
if(HAL_GPIO_ReadPin(PEN_INT_GPIO_Port, PEN_INT_Pin) == GPIO_PIN_RESET)
{
if(TSC2046_getRaw_Z()<2000)
{
myTsData.isPressed = true;
//Read touch data
for(uint8_t i=0; i<10; i++)
{
localRawTouch = TSC2046_GetRawTouch();
temp16x += localRawTouch.x_touch;
temp16y += localRawTouch.y_touch;
}
localRawTouch.x_touch = temp16x*0.1;
localRawTouch.y_touch = temp16y*0.1;
}
}
else
myTsData.isPressed = false;
//X_Touch value
myTsData.X = myTS_Calibrate.Scale_X*localRawTouch.x_touch + myTS_Calibrate.Bias_X;
//Y_Touch value
myTsData.Y = myTS_Calibrate.Scale_Y*localRawTouch.y_touch + myTS_Calibrate.Bias_Y;
if (myTsData.isPressed == true)
{
printf("cal_x %u \n", myTsData.X);
printf("cal_y %u \n", myTsData.Y);
}
return myTsData;
}