|
发表于 2014-8-19 16:26:49
|
显示全部楼层
void TP_Read(void)
{
GUI_PID_STATE TS_State;
i2cBuffer[0] = 0x03;
while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t*)i2cBuffer, 1, 10000)!= HAL_OK) {
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
while(HAL_I2C_Master_Receive(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t *)i2cBuffer, 1, 10000) != HAL_OK){
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
TOUCH_PHX = i2cBuffer[0]&0x0F;
TOUCH_EVENT = i2cBuffer[0]>>6;
i2cBuffer[0] = 0x04;
while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t*)i2cBuffer, 1, 10000)!= HAL_OK) {
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
while(HAL_I2C_Master_Receive(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t *)i2cBuffer, 1, 10000) != HAL_OK){
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
TOUCH_PHX = (TOUCH_PHX<<8)+i2cBuffer[0];
i2cBuffer[0] = 0x05;
while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t*)i2cBuffer, 1, 10000)!= HAL_OK) {
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
while(HAL_I2C_Master_Receive(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t *)i2cBuffer, 1, 10000) != HAL_OK){
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
TOUCH_PHY = i2cBuffer[0];
i2cBuffer[0] = 0x06;
while(HAL_I2C_Master_Transmit(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t*)i2cBuffer, 1, 10000)!= HAL_OK) {
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
while(HAL_I2C_Master_Receive(&I2cHandle, (uint16_t)I2C_ADDRESS, (uint8_t *)i2cBuffer, 1, 10000) != HAL_OK){
if (HAL_I2C_GetError(&I2cHandle) != HAL_I2C_ERROR_AF){
Error_Handler();
}
}
TOUCH_PHY = (TOUCH_PHY<<8)+i2cBuffer[0];
if((TOUCH_PHY&0x0F00)>=0x0400)
TOUCH_PHY = (TOUCH_PHY&0x07FF)-0x0380;
else
TOUCH_PHY = TOUCH_PHY&0x07FF;
if(TOUCH_EVENT == EVT_PUT_UP){
TS_State.Pressed = 0;
TS_State.Layer = 0;
TS_State.x = TOUCH_prex;
TS_State.y = TOUCH_prey;
GUI_TOUCH_StoreStateEx(&TS_State);
}
else if(TOUCH_EVENT == EVT_CONTACT || TOUCH_EVENT == EVT_PUT_DOWN){
if(TOUCH_PHX<MINI_PHX) TOUCH_PHX = MINI_PHX;
else if(TOUCH_PHX>MAX_PHX) TOUCH_PHX = MAX_PHX;
if(TOUCH_PHY < MINI_PHY) TOUCH_PHY = MINI_PHY;
else if(TOUCH_PHY > MAX_PHY) TOUCH_PHY = MAX_PHY;
TOUCH_PHX = ((TOUCH_PHX-MINI_PHX)*480)/(MAX_PHX - MINI_PHX);
TOUCH_PHY = ((TOUCH_PHY-MINI_PHY)*800)/(MAX_PHY - MINI_PHY);
//GUI_TOUCH_StoreState(TOUCH_PHY, 479-TOUCH_PHX);
TS_State.Pressed = 1;
TS_State.Layer = 0;
TS_State.x = TOUCH_PHY;
TS_State.y = 479-TOUCH_PHX;
TOUCH_prex = TOUCH_PHY;
TOUCH_prey = 479-TOUCH_PHX;
GUI_TOUCH_StoreStateEx(&TS_State);
//printf("%d %d\\n",TOUCH_PHY, 479-TOUCH_PHX);
}
} |
|