404 lines
10 KiB
C
404 lines
10 KiB
C
|
/**
|
|||
|
******************************************************************************
|
|||
|
* @file bsp_touch_gtxx.c
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡGTxxx<EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ͬ<EFBFBD><EFBFBD>RGB<EFBFBD><EFBFBD>Ļ
|
|||
|
******************************************************************************
|
|||
|
*/
|
|||
|
#include <stdio.h>
|
|||
|
#include <string.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include "./touch/bsp_touch_gtxx.h"
|
|||
|
#include "./touch/bsp_i2c_touch.h"
|
|||
|
#include "./lcd/bsp_lcd.h"
|
|||
|
#include "./delay/core_delay.h"
|
|||
|
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>IC<49><43><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ5<CEAA><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ic */
|
|||
|
TOUCH_IC touchIC = GT9157;
|
|||
|
|
|||
|
const TOUCH_PARAM_TypeDef touch_param[TOUCH_TYPE_NUM] =
|
|||
|
{
|
|||
|
/* GT9157,5<><35><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 800,
|
|||
|
.max_height = 480,
|
|||
|
.config_reg_addr = 0x8047,
|
|||
|
},
|
|||
|
/* GT911,7<><37><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 800,
|
|||
|
.max_height = 480,
|
|||
|
.config_reg_addr = 0x8047,
|
|||
|
},
|
|||
|
/* GT5688,4.3<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 480,
|
|||
|
.max_height = 272,
|
|||
|
.config_reg_addr = 0x8050,
|
|||
|
},
|
|||
|
/* GT917S,5<><35><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 800,
|
|||
|
.max_height = 480,
|
|||
|
.config_reg_addr = 0x8050,
|
|||
|
},
|
|||
|
/* GT615,7<><37><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 800,
|
|||
|
.max_height = 480,
|
|||
|
.config_reg_addr = 0x8047, //<2F><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7>GT911<31><31>һ<EFBFBD><D2BB>
|
|||
|
},
|
|||
|
|
|||
|
#if TOUCH_GT1151QM_LCD_4_3
|
|||
|
/* GT1151QM,4.3<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 480,
|
|||
|
.max_height = 272,
|
|||
|
.config_reg_addr = 0x8050,
|
|||
|
},
|
|||
|
#elif TOUCH_GT1151QM_LCD_5
|
|||
|
/* GT1151QM,5<><35><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
.max_width = 800,
|
|||
|
.max_height = 480,
|
|||
|
.config_reg_addr = 0x8050,
|
|||
|
},
|
|||
|
#endif
|
|||
|
};
|
|||
|
|
|||
|
static int8_t GTP_I2C_Test(void);
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>IIC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @arg i2c_msg:<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|||
|
* @arg num:<EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0xff
|
|||
|
*/
|
|||
|
static int I2C_Transfer( struct i2c_msg *msgs,int num)
|
|||
|
{
|
|||
|
int im = 0;
|
|||
|
int ret = 0;
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
|
|||
|
for (im = 0; ret == 0 && im != num; im++)
|
|||
|
{
|
|||
|
if ((msgs[im].flags&I2C_M_RD)) //<2F><><EFBFBD><EFBFBD>flag<61>ж<EFBFBD><D0B6>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
ret = I2C_ReadBytes(msgs[im].addr, msgs[im].buf, msgs[im].len); //IIC<49><43>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
} else
|
|||
|
{
|
|||
|
ret = I2C_WriteBytes(msgs[im].addr, msgs[im].buf, msgs[im].len); //IICд<43><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(ret)
|
|||
|
return ret;
|
|||
|
|
|||
|
return im; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĴ<C9B5><C4B4><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>IIC<EFBFBD>豸<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @arg client_addr:<EFBFBD>豸<EFBFBD><EFBFBD>ַ
|
|||
|
* @arg buf[0~1]: <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
|
|||
|
* @arg buf[2~len-1]: <EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĻ<EFBFBD><EFBFBD><EFBFBD>buffer
|
|||
|
* @arg len: GTP_ADDR_LENGTH + read bytes count<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval i2c_msgs<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2Ϊ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static int32_t GTP_I2C_Read(uint8_t client_addr, uint8_t *buf, int32_t len)
|
|||
|
{
|
|||
|
struct i2c_msg msgs[2];
|
|||
|
int32_t ret=-1;
|
|||
|
int32_t retries = 0;
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
/*һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĹ<DDB5><C4B9>̿<EFBFBD><CCBF>Է<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
* 1. IIC д<EFBFBD><EFBFBD> Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD>ļĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
* 2. IIC <EFBFBD><EFBFBD>ȡ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* */
|
|||
|
|
|||
|
msgs[0].flags = !I2C_M_RD; //д<><D0B4>
|
|||
|
msgs[0].addr = client_addr; //IIC<49>豸<EFBFBD><E8B1B8>ַ
|
|||
|
msgs[0].len = GTP_ADDR_LENGTH; //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַΪ2<CEAA>ֽ<EFBFBD>(<28><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
msgs[0].buf = &buf[0]; //buf[0~1]<5D>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
|||
|
msgs[1].flags = I2C_M_RD; //<2F><>ȡ
|
|||
|
msgs[1].addr = client_addr; //IIC<49>豸<EFBFBD><E8B1B8>ַ
|
|||
|
msgs[1].len = len - GTP_ADDR_LENGTH; //Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
msgs[1].buf = &buf[GTP_ADDR_LENGTH]; //buf[GTP_ADDR_LENGTH]֮<><D6AE><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
while(retries < 5)
|
|||
|
{
|
|||
|
ret = I2C_Transfer( msgs, 2); //<2F><><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(ret == 2)break;
|
|||
|
retries++;
|
|||
|
}
|
|||
|
if((retries >= 5))
|
|||
|
{
|
|||
|
GTP_ERROR("I2C Read: 0x%04X, %d bytes failed, errcode: %d! Process reset.", (((uint16_t)(buf[0] << 8)) | buf[1]), len-2, ret);
|
|||
|
}
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>IIC<EFBFBD>豸д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @arg client_addr:<EFBFBD>豸<EFBFBD><EFBFBD>ַ
|
|||
|
* @arg buf[0~1]: Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
|
|||
|
* @arg buf[2~len-1]: Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg len: GTP_ADDR_LENGTH + write bytes count<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval i2c_msgs<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1Ϊ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʧ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
static int32_t GTP_I2C_Write(uint8_t client_addr,uint8_t *buf,int32_t len)
|
|||
|
{
|
|||
|
struct i2c_msg msg;
|
|||
|
int32_t ret = -1;
|
|||
|
int32_t retries = 0;
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
/*һ<><D2BB>д<EFBFBD><D0B4><EFBFBD>ݵĹ<DDB5><C4B9><EFBFBD>ֻ<EFBFBD><D6BB>Ҫһ<D2AA><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
* 1. IIC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> д<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* */
|
|||
|
msg.flags = !I2C_M_RD; //д<><D0B4>
|
|||
|
msg.addr = client_addr; //<2F><><EFBFBD>豸<EFBFBD><E8B1B8>ַ
|
|||
|
msg.len = len; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>(<28>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>+д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>)
|
|||
|
msg.buf = buf; //ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뻺<EFBFBD><EBBBBA><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>˼Ĵ<CBBC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ)
|
|||
|
|
|||
|
while(retries < 5)
|
|||
|
{
|
|||
|
ret = I2C_Transfer(&msg, 1); //<2F><><EFBFBD><EFBFBD>IIC<49><43><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (ret == 1)break;
|
|||
|
retries++;
|
|||
|
}
|
|||
|
if((retries >= 5))
|
|||
|
{
|
|||
|
|
|||
|
GTP_ERROR("I2C Write: 0x%04X, %d bytes failed, errcode: %d! Process reset.", (((uint16_t)(buf[0] << 8)) | buf[1]), len-2, ret);
|
|||
|
|
|||
|
}
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
static int32_t GTP_Get_Info(void)
|
|||
|
{
|
|||
|
uint8_t opr_buf[10] = {0};
|
|||
|
int32_t ret = 0;
|
|||
|
|
|||
|
uint16_t abs_x_max = GTP_MAX_WIDTH;
|
|||
|
uint16_t abs_y_max = GTP_MAX_HEIGHT;
|
|||
|
uint8_t int_trigger_type = GTP_INT_TRIGGER;
|
|||
|
|
|||
|
opr_buf[0] = (uint8_t)((GTP_REG_CONFIG_DATA+1) >> 8);
|
|||
|
opr_buf[1] = (uint8_t)((GTP_REG_CONFIG_DATA+1) & 0xFF);
|
|||
|
|
|||
|
ret = GTP_I2C_Read(GTP_ADDRESS, opr_buf, 10);
|
|||
|
if (ret < 0)
|
|||
|
{
|
|||
|
return FAIL;
|
|||
|
}
|
|||
|
|
|||
|
abs_x_max = (opr_buf[3] << 8) + opr_buf[2];
|
|||
|
abs_y_max = (opr_buf[5] << 8) + opr_buf[4];
|
|||
|
GTP_DEBUG("RES");
|
|||
|
GTP_DEBUG_ARRAY(&opr_buf[0],10);
|
|||
|
|
|||
|
opr_buf[0] = (uint8_t)((GTP_REG_CONFIG_DATA+6) >> 8);
|
|||
|
opr_buf[1] = (uint8_t)((GTP_REG_CONFIG_DATA+6) & 0xFF);
|
|||
|
|
|||
|
ret = GTP_I2C_Read(GTP_ADDRESS, opr_buf, 3);
|
|||
|
if (ret < 0)
|
|||
|
{
|
|||
|
return FAIL;
|
|||
|
}
|
|||
|
int_trigger_type = opr_buf[2] & 0x03;
|
|||
|
|
|||
|
GTP_INFO("X_MAX = %d, Y_MAX = %d, TRIGGER = 0x%02x",
|
|||
|
abs_x_max,abs_y_max,int_trigger_type);
|
|||
|
|
|||
|
return SUCCESS;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ,Ȼ<><C8BB><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>оƬID<49><44><EFBFBD>жϲ<D0B6>ͬ<EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>Ļ
|
|||
|
<EFBFBD><EFBFBD><EFBFBD>浱ǰ<EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cur_lcd */
|
|||
|
|
|||
|
int32_t GTP_Init_ReadID(void)
|
|||
|
{
|
|||
|
int32_t ret = -1;
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
|
|||
|
|
|||
|
I2C_Touch_Init();
|
|||
|
|
|||
|
ret = GTP_I2C_Test();
|
|||
|
if (ret < 0)
|
|||
|
{
|
|||
|
GTP_ERROR("I2C communication ERROR!");
|
|||
|
return ret;
|
|||
|
}
|
|||
|
HAL_Delay(100);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>IC<49><43><EFBFBD>ͺ<EFBFBD>
|
|||
|
GTP_Read_Version();
|
|||
|
|
|||
|
GTP_Get_Info();
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*******************************************************
|
|||
|
Function:
|
|||
|
Read chip version.
|
|||
|
Input:
|
|||
|
client: i2c device
|
|||
|
version: buffer to keep ic firmware version
|
|||
|
Output:
|
|||
|
read operation return.
|
|||
|
2: succeed, otherwise: failed
|
|||
|
*******************************************************/
|
|||
|
int32_t GTP_Read_Version(void)
|
|||
|
{
|
|||
|
int32_t ret = -1;
|
|||
|
uint8_t buf[8] = {GTP_REG_VERSION >> 8, GTP_REG_VERSION & 0xff}; //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
|
|||
|
ret = GTP_I2C_Read(GTP_ADDRESS, buf, sizeof(buf));
|
|||
|
if (ret < 0)
|
|||
|
{
|
|||
|
GTP_ERROR("GTP read version failed");
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
#ifdef LCD_TOUCH_IC_GT1151QM
|
|||
|
//GT1151QMоƬ
|
|||
|
if (buf[2]=='1' && buf[3]=='1' && buf[4]=='5')
|
|||
|
{
|
|||
|
GTP_INFO("IC Version: %c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[7], buf[6]);
|
|||
|
touchIC = GT1151QM;
|
|||
|
|
|||
|
#if TOUCH_GT1151QM_LCD_4_3
|
|||
|
cur_lcd = INCH_4_3; //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#elif TOUCH_GT1151QM_LCD_5
|
|||
|
cur_lcd = INCH_5; //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
GTP_INFO("Unknown IC Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
}
|
|||
|
#else
|
|||
|
|
|||
|
if (buf[4] == '1')
|
|||
|
{
|
|||
|
//GT911оƬ
|
|||
|
if(buf[2] == '9' && buf[3] == '1' && buf[4] == '1')
|
|||
|
{
|
|||
|
GTP_INFO("IC1 Version: %c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[7], buf[6]);
|
|||
|
|
|||
|
touchIC = GT911;
|
|||
|
/* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
cur_lcd = INCH_7;
|
|||
|
}
|
|||
|
//GT9157оƬ
|
|||
|
else
|
|||
|
GTP_INFO("Unknown IC Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
}
|
|||
|
else if (buf[4] == '5')
|
|||
|
{
|
|||
|
if( buf[2] == '9' && buf[3] == '1' && buf[4] == '5' && buf[5] == '7')
|
|||
|
{
|
|||
|
GTP_INFO("IC2 Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
touchIC = GT9157;
|
|||
|
/* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
cur_lcd = INCH_5;
|
|||
|
}
|
|||
|
//GT615оƬ
|
|||
|
else if( buf[2] == '6' && buf[3] == '1' && buf[4] == '5')
|
|||
|
{
|
|||
|
GTP_INFO("IC3 Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
touchIC = GT615;
|
|||
|
/* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
cur_lcd = INCH_7;
|
|||
|
}
|
|||
|
else
|
|||
|
GTP_INFO("Unknown IC Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
}
|
|||
|
else if (buf[4] == '8')
|
|||
|
{
|
|||
|
//GT5688оƬ
|
|||
|
if(buf[2] == '5' && buf[3] == '6' && buf[4] == '8' && buf[5] == '8')
|
|||
|
{
|
|||
|
GTP_INFO("IC4 Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
touchIC = GT5688;
|
|||
|
/* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
cur_lcd = INCH_4_3;
|
|||
|
}
|
|||
|
else
|
|||
|
GTP_INFO("Unknown IC Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
}
|
|||
|
else if(buf[4] == '7')
|
|||
|
{
|
|||
|
//GT917SоƬ
|
|||
|
GTP_INFO("IC5 Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
if(buf[2] == '9' && buf[3] == '1' && buf[4] == '7' && buf[5] == 'S')
|
|||
|
{
|
|||
|
touchIC = GT917S;
|
|||
|
/* <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
cur_lcd = INCH_5;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
GTP_INFO("Unknown IC Version: %c%c%c%c_%02x%02x", buf[2], buf[3], buf[4], buf[5], buf[7], buf[6]);
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
/*******************************************************
|
|||
|
Function:
|
|||
|
I2c test Function.
|
|||
|
Input:
|
|||
|
client:i2c client.
|
|||
|
Output:
|
|||
|
Executive outcomes.
|
|||
|
2: succeed, otherwise failed.
|
|||
|
*******************************************************/
|
|||
|
static int8_t GTP_I2C_Test( void)
|
|||
|
{
|
|||
|
uint8_t test[3] = {GTP_REG_CONFIG_DATA >> 8, GTP_REG_CONFIG_DATA & 0xff};
|
|||
|
uint8_t retry = 0;
|
|||
|
int8_t ret = -1;
|
|||
|
|
|||
|
GTP_DEBUG_FUNC();
|
|||
|
|
|||
|
while(retry++ < 5)
|
|||
|
{
|
|||
|
ret = GTP_I2C_Read(GTP_ADDRESS, test, 3);
|
|||
|
if (ret > 0)
|
|||
|
{
|
|||
|
return ret;
|
|||
|
}
|
|||
|
GTP_ERROR("GTP i2c test failed time %d.",retry);
|
|||
|
}
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|