fit touch position for lcd

This commit is contained in:
wuzheng 2022-11-21 15:59:25 +08:00
parent 7c252bda56
commit ebc61431bd
2 changed files with 8 additions and 2 deletions

View File

@ -64,6 +64,10 @@ typedef enum _touch_event
#define GTP_REG_CONFIG_DATA 0x8047 #define GTP_REG_CONFIG_DATA 0x8047
#define GTP_REG_VERSION 0x8140 #define GTP_REG_VERSION 0x8140
#define LCD_SIZE 320
#define TOUCH_WIDTH 1024
#define TOUCH_HEIGHT 664
#define CFG_GROUP_LEN(p_cfg_grp) (sizeof(p_cfg_grp) / sizeof(p_cfg_grp[0])) #define CFG_GROUP_LEN(p_cfg_grp) (sizeof(p_cfg_grp) / sizeof(p_cfg_grp[0]))
int HwTouchInit(void); int HwTouchInit(void);

View File

@ -278,7 +278,7 @@ static uint32 TouchRead(void* dev, struct BusBlockReadParam* read_param)
struct TouchDataStandard* data = (struct TouchDataStandard*)read_param->buffer; struct TouchDataStandard* data = (struct TouchDataStandard*)read_param->buffer;
read_param->read_length = 0; read_param->read_length = 0;
result = KSemaphoreObtain(touch_sem, 1000); result = KSemaphoreObtain(touch_sem, 10);
// if (EOK == result) // if (EOK == result)
// { // {
memset(TOUCHRECDATA, 0, 24); memset(TOUCHRECDATA, 0, 24);
@ -292,8 +292,10 @@ static uint32 TouchRead(void* dev, struct BusBlockReadParam* read_param)
{ {
ts_event.fingers[i].x = ((((uint32_t)TOUCHRECDATA[(i * 4) + 5]) << 8) | (uint32_t)TOUCHRECDATA[(i * 4) + 4]) & 0x00000FFF; // 12 bits of X coord ts_event.fingers[i].x = ((((uint32_t)TOUCHRECDATA[(i * 4) + 5]) << 8) | (uint32_t)TOUCHRECDATA[(i * 4) + 4]) & 0x00000FFF; // 12 bits of X coord
ts_event.fingers[i].y = ((((uint32_t)TOUCHRECDATA[(i * 4) + 7]) << 8) | (uint32_t)TOUCHRECDATA[(i * 4) + 6]) & 0x00000FFF; ts_event.fingers[i].y = ((((uint32_t)TOUCHRECDATA[(i * 4) + 7]) << 8) | (uint32_t)TOUCHRECDATA[(i * 4) + 6]) & 0x00000FFF;
ts_event.fingers[i].x = 320 - ts_event.fingers[i].x *LCD_SIZE/TOUCH_WIDTH;
ts_event.fingers[i].y = ts_event.fingers[i].y *LCD_SIZE/TOUCH_HEIGHT;
ts_event.fingers[i].fingerID = (uint32_t)TOUCHRECDATA[(i * 4) + 7] >> 4; // finger that did the touch ts_event.fingers[i].fingerID = (uint32_t)TOUCHRECDATA[(i * 4) + 7] >> 4; // finger that did the touch
printf("fingers[%d] x %d y %d id %d\n",i,ts_event.fingers[i].x,ts_event.fingers[i].y,ts_event.fingers[i].fingerID); // printf("fingers[%d] x %d y %d id %d\n",i,ts_event.fingers[i].x,ts_event.fingers[i].y,ts_event.fingers[i].fingerID);
} }
data->x = ts_event.fingers[ts_event.NBfingers - 1].x; data->x = ts_event.fingers[ts_event.NBfingers - 1].x;