48 #if !defined(TS_MONO_TOUCH_SUPPORTED) 49 #define TS_MULTI_TOUCH_SUPPORTED 1 53 #include "../Common/ts.h" 57 #if defined(FT5336_ENABLE_ASSERT) 59 #define FT5336_ASSERT(__condition__) do { if(__condition__) \ 66 #define FT5336_ASSERT(__condition__) do { if(__condition__) \ 113 #define FT5336_I2C_SLAVE_ADDRESS ((uint8_t)0x70) 116 #define FT5336_MAX_WIDTH ((uint16_t)480) 117 #define FT5336_MAX_HEIGHT ((uint16_t)272) 120 #define FT5336_STATUS_OK ((uint8_t)0x00) 121 #define FT5336_STATUS_NOT_OK ((uint8_t)0x01) 124 #define FT5336_I2C_NOT_INITIALIZED ((uint8_t)0x00) 125 #define FT5336_I2C_INITIALIZED ((uint8_t)0x01) 128 #define FT5336_MAX_DETECTABLE_TOUCH ((uint8_t)0x05) 135 #define FT5336_DEV_MODE_REG ((uint8_t)0x00) 138 #define FT5336_DEV_MODE_WORKING ((uint8_t)0x00) 139 #define FT5336_DEV_MODE_FACTORY ((uint8_t)0x04) 141 #define FT5336_DEV_MODE_MASK ((uint8_t)0x07) 142 #define FT5336_DEV_MODE_SHIFT ((uint8_t)0x04) 145 #define FT5336_GEST_ID_REG ((uint8_t)0x01) 148 #define FT5336_GEST_ID_NO_GESTURE ((uint8_t)0x00) 149 #define FT5336_GEST_ID_MOVE_UP ((uint8_t)0x10) 150 #define FT5336_GEST_ID_MOVE_RIGHT ((uint8_t)0x14) 151 #define FT5336_GEST_ID_MOVE_DOWN ((uint8_t)0x18) 152 #define FT5336_GEST_ID_MOVE_LEFT ((uint8_t)0x1C) 153 #define FT5336_GEST_ID_SINGLE_CLICK ((uint8_t)0x20) 154 #define FT5336_GEST_ID_DOUBLE_CLICK ((uint8_t)0x22) 155 #define FT5336_GEST_ID_ROTATE_CLOCKWISE ((uint8_t)0x28) 156 #define FT5336_GEST_ID_ROTATE_C_CLOCKWISE ((uint8_t)0x29) 157 #define FT5336_GEST_ID_ZOOM_IN ((uint8_t)0x40) 158 #define FT5336_GEST_ID_ZOOM_OUT ((uint8_t)0x49) 161 #define FT5336_TD_STAT_REG ((uint8_t)0x02) 164 #define FT5336_TD_STAT_MASK ((uint8_t)0x0F) 165 #define FT5336_TD_STAT_SHIFT ((uint8_t)0x00) 168 #define FT5336_TOUCH_EVT_FLAG_PRESS_DOWN ((uint8_t)0x00) 169 #define FT5336_TOUCH_EVT_FLAG_LIFT_UP ((uint8_t)0x01) 170 #define FT5336_TOUCH_EVT_FLAG_CONTACT ((uint8_t)0x02) 171 #define FT5336_TOUCH_EVT_FLAG_NO_EVENT ((uint8_t)0x03) 173 #define FT5336_TOUCH_EVT_FLAG_SHIFT ((uint8_t)0x06) 174 #define FT5336_TOUCH_EVT_FLAG_MASK ((uint8_t)(3 << FT5336_TOUCH_EVT_FLAG_SHIFT)) 176 #define FT5336_TOUCH_POS_MSB_MASK ((uint8_t)0x0F) 177 #define FT5336_TOUCH_POS_MSB_SHIFT ((uint8_t)0x00) 180 #define FT5336_TOUCH_POS_LSB_MASK ((uint8_t)0xFF) 181 #define FT5336_TOUCH_POS_LSB_SHIFT ((uint8_t)0x00) 183 #define FT5336_P1_XH_REG ((uint8_t)0x03) 184 #define FT5336_P1_XL_REG ((uint8_t)0x04) 185 #define FT5336_P1_YH_REG ((uint8_t)0x05) 186 #define FT5336_P1_YL_REG ((uint8_t)0x06) 189 #define FT5336_P1_WEIGHT_REG ((uint8_t)0x07) 192 #define FT5336_TOUCH_WEIGHT_MASK ((uint8_t)0xFF) 193 #define FT5336_TOUCH_WEIGHT_SHIFT ((uint8_t)0x00) 196 #define FT5336_P1_MISC_REG ((uint8_t)0x08) 199 #define FT5336_TOUCH_AREA_MASK ((uint8_t)(0x04 << 4)) 200 #define FT5336_TOUCH_AREA_SHIFT ((uint8_t)0x04) 202 #define FT5336_P2_XH_REG ((uint8_t)0x09) 203 #define FT5336_P2_XL_REG ((uint8_t)0x0A) 204 #define FT5336_P2_YH_REG ((uint8_t)0x0B) 205 #define FT5336_P2_YL_REG ((uint8_t)0x0C) 206 #define FT5336_P2_WEIGHT_REG ((uint8_t)0x0D) 207 #define FT5336_P2_MISC_REG ((uint8_t)0x0E) 209 #define FT5336_P3_XH_REG ((uint8_t)0x0F) 210 #define FT5336_P3_XL_REG ((uint8_t)0x10) 211 #define FT5336_P3_YH_REG ((uint8_t)0x11) 212 #define FT5336_P3_YL_REG ((uint8_t)0x12) 213 #define FT5336_P3_WEIGHT_REG ((uint8_t)0x13) 214 #define FT5336_P3_MISC_REG ((uint8_t)0x14) 216 #define FT5336_P4_XH_REG ((uint8_t)0x15) 217 #define FT5336_P4_XL_REG ((uint8_t)0x16) 218 #define FT5336_P4_YH_REG ((uint8_t)0x17) 219 #define FT5336_P4_YL_REG ((uint8_t)0x18) 220 #define FT5336_P4_WEIGHT_REG ((uint8_t)0x19) 221 #define FT5336_P4_MISC_REG ((uint8_t)0x1A) 223 #define FT5336_P5_XH_REG ((uint8_t)0x1B) 224 #define FT5336_P5_XL_REG ((uint8_t)0x1C) 225 #define FT5336_P5_YH_REG ((uint8_t)0x1D) 226 #define FT5336_P5_YL_REG ((uint8_t)0x1E) 227 #define FT5336_P5_WEIGHT_REG ((uint8_t)0x1F) 228 #define FT5336_P5_MISC_REG ((uint8_t)0x20) 230 #define FT5336_P6_XH_REG ((uint8_t)0x21) 231 #define FT5336_P6_XL_REG ((uint8_t)0x22) 232 #define FT5336_P6_YH_REG ((uint8_t)0x23) 233 #define FT5336_P6_YL_REG ((uint8_t)0x24) 234 #define FT5336_P6_WEIGHT_REG ((uint8_t)0x25) 235 #define FT5336_P6_MISC_REG ((uint8_t)0x26) 237 #define FT5336_P7_XH_REG ((uint8_t)0x27) 238 #define FT5336_P7_XL_REG ((uint8_t)0x28) 239 #define FT5336_P7_YH_REG ((uint8_t)0x29) 240 #define FT5336_P7_YL_REG ((uint8_t)0x2A) 241 #define FT5336_P7_WEIGHT_REG ((uint8_t)0x2B) 242 #define FT5336_P7_MISC_REG ((uint8_t)0x2C) 244 #define FT5336_P8_XH_REG ((uint8_t)0x2D) 245 #define FT5336_P8_XL_REG ((uint8_t)0x2E) 246 #define FT5336_P8_YH_REG ((uint8_t)0x2F) 247 #define FT5336_P8_YL_REG ((uint8_t)0x30) 248 #define FT5336_P8_WEIGHT_REG ((uint8_t)0x31) 249 #define FT5336_P8_MISC_REG ((uint8_t)0x32) 251 #define FT5336_P9_XH_REG ((uint8_t)0x33) 252 #define FT5336_P9_XL_REG ((uint8_t)0x34) 253 #define FT5336_P9_YH_REG ((uint8_t)0x35) 254 #define FT5336_P9_YL_REG ((uint8_t)0x36) 255 #define FT5336_P9_WEIGHT_REG ((uint8_t)0x37) 256 #define FT5336_P9_MISC_REG ((uint8_t)0x38) 258 #define FT5336_P10_XH_REG ((uint8_t)0x39) 259 #define FT5336_P10_XL_REG ((uint8_t)0x3A) 260 #define FT5336_P10_YH_REG ((uint8_t)0x3B) 261 #define FT5336_P10_YL_REG ((uint8_t)0x3C) 262 #define FT5336_P10_WEIGHT_REG ((uint8_t)0x3D) 263 #define FT5336_P10_MISC_REG ((uint8_t)0x3E) 266 #define FT5336_TH_GROUP_REG ((uint8_t)0x80) 269 #define FT5336_THRESHOLD_MASK ((uint8_t)0xFF) 270 #define FT5336_THRESHOLD_SHIFT ((uint8_t)0x00) 273 #define FT5336_TH_DIFF_REG ((uint8_t)0x85) 276 #define FT5336_CTRL_REG ((uint8_t)0x86) 281 #define FT5336_CTRL_KEEP_ACTIVE_MODE ((uint8_t)0x00) 284 #define FT5336_CTRL_KEEP_AUTO_SWITCH_MONITOR_MODE ((uint8_t)0x01 287 #define FT5336_TIMEENTERMONITOR_REG ((uint8_t)0x87) 290 #define FT5336_PERIODACTIVE_REG ((uint8_t)0x88) 293 #define FT5336_PERIODMONITOR_REG ((uint8_t)0x89) 296 #define FT5336_RADIAN_VALUE_REG ((uint8_t)0x91) 299 #define FT5336_OFFSET_LEFT_RIGHT_REG ((uint8_t)0x92) 302 #define FT5336_OFFSET_UP_DOWN_REG ((uint8_t)0x93) 305 #define FT5336_DISTANCE_LEFT_RIGHT_REG ((uint8_t)0x94) 308 #define FT5336_DISTANCE_UP_DOWN_REG ((uint8_t)0x95) 311 #define FT5336_DISTANCE_ZOOM_REG ((uint8_t)0x96) 314 #define FT5336_LIB_VER_H_REG ((uint8_t)0xA1) 317 #define FT5336_LIB_VER_L_REG ((uint8_t)0xA2) 320 #define FT5336_CIPHER_REG ((uint8_t)0xA3) 323 #define FT5336_GMODE_REG ((uint8_t)0xA4) 325 #define FT5336_G_MODE_INTERRUPT_MASK ((uint8_t)0x03) 326 #define FT5336_G_MODE_INTERRUPT_SHIFT ((uint8_t)0x00) 329 #define FT5336_G_MODE_INTERRUPT_POLLING ((uint8_t)0x00) 330 #define FT5336_G_MODE_INTERRUPT_TRIGGER ((uint8_t)0x01) 333 #define FT5336_PWR_MODE_REG ((uint8_t)0xA5) 336 #define FT5336_FIRMID_REG ((uint8_t)0xA6) 339 #define FT5336_CHIP_ID_REG ((uint8_t)0xA8) 342 #define FT5336_ID_VALUE ((uint8_t)0x51) 345 #define FT5336_RELEASE_CODE_ID_REG ((uint8_t)0xAF) 348 #define FT5336_STATE_REG ((uint8_t)0xBC) 456 #if (TS_MULTI_TOUCH_SUPPORTED == 1) 497 extern void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value);
498 extern uint8_t
TS_IO_Read(uint8_t Addr, uint8_t Reg);
TS_DrvTypeDef ft5336_ts_drv
uint8_t ft5336_TS_DetectTouch(uint16_t DeviceAddr)
Return if there is touches detected or not. Try to detect new touches and forget the old ones (reset ...
uint16_t ft5336_ReadID(uint16_t DeviceAddr)
Read the ft5336 device ID, pre initialize I2C in case of need to be able to read the FT5336 device ID...
void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
Writes a single data.
uint8_t currActiveTouchIdx
uint8_t ft5336_TS_ITStatus(uint16_t DeviceAddr)
Get IT status from FT5336 interrupt status registers Should be called Following an EXTI coming to the...
uint8_t currActiveTouchNb
void ft5336_TS_GetGestureID(uint16_t DeviceAddr, uint32_t *pGestureId)
Get the last touch gesture identification (zoom, move up/down...).
void ft5336_Reset(uint16_t DeviceAddr)
Software Reset the ft5336.
void ft5336_TS_ClearIT(uint16_t DeviceAddr)
Clear IT status in FT5336 interrupt status clear registers Should be called Following an EXTI coming ...
void ft5336_TS_GetXY(uint16_t DeviceAddr, uint16_t *X, uint16_t *Y)
Get the touch screen X and Y positions values Manage multi touch thanks to touch Index global variabl...
uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg)
Reads a single data.
void ft5336_TS_DisableIT(uint16_t DeviceAddr)
Configure the FT5336 device to stop generating IT on the given INT pin connected to MCU as EXTI...
void TS_IO_Delay(uint32_t Delay)
Delay function used in TouchScreen low level driver.
void ft5336_TS_EnableIT(uint16_t DeviceAddr)
Configure the FT5336 device to generate IT on given INT pin connected to MCU as EXTI.
void ft5336_TS_Start(uint16_t DeviceAddr)
Configures the touch Screen IC device to start detecting touches.
void ft5336_TS_GetTouchInfo(uint16_t DeviceAddr, uint32_t touchIdx, uint32_t *pWeight, uint32_t *pArea, uint32_t *pEvent)
Get the touch detailed informations on touch number 'touchIdx' (0..1) This touch detailed information...
void ft5336_Init(uint16_t DeviceAddr)
ft5336 Control functions
void TS_IO_Init(void)
Initializes Touchscreen low level.