This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TSC2046:面板上的数据歪斜

Guru**** 2491255 points
Other Parts Discussed in Thread: TSC2046

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1538927/tsc2046-skewed-data-across-panel

部件号: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;
}