STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
ft5336.c
Go to the documentation of this file.
1 
39 /* Includes ------------------------------------------------------------------*/
40 #include "ft5336.h"
41 
54 /* Private typedef -----------------------------------------------------------*/
55 
60 /* Private define ------------------------------------------------------------*/
61 
66 /* Private macro -------------------------------------------------------------*/
67 
72 /* Private variables ---------------------------------------------------------*/
73 
78 /* Touch screen driver structure initialization */
80 {
84 
88 
93 
94 };
95 
96 /* Global ft5336 handle */
97 static ft5336_handle_TypeDef ft5336_handle = { FT5336_I2C_NOT_INITIALIZED, 0, 0};
98 
107 /* Private functions prototypes-----------------------------------------------*/
108 
114 static uint8_t ft5336_Get_I2C_InitializedStatus(void);
115 
121 static void ft5336_I2C_InitializeIfRequired(void);
122 
128 static uint32_t ft5336_TS_Configure(uint16_t DeviceAddr);
129 
138 /* Public functions bodies-----------------------------------------------*/
139 
140 
147 void ft5336_Init(uint16_t DeviceAddr)
148 {
149  /* Wait at least 200ms after power up before accessing registers
150  * Trsi timing (Time of starting to report point after resetting) from FT5336GQQ datasheet */
151  TS_IO_Delay(200);
152 
153  /* Initialize I2C link if needed */
154  ft5336_I2C_InitializeIfRequired();
155 }
156 
163 void ft5336_Reset(uint16_t DeviceAddr)
164 {
165  /* Do nothing */
166  /* No software reset sequence available in FT5336 IC */
167 }
168 
175 uint16_t ft5336_ReadID(uint16_t DeviceAddr)
176 {
177  volatile uint8_t ucReadId = 0;
178  uint8_t nbReadAttempts = 0;
179  uint8_t bFoundDevice = 0; /* Device not found by default */
180 
181  /* Initialize I2C link if needed */
182  ft5336_I2C_InitializeIfRequired();
183 
184  /* At maximum 4 attempts to read ID : exit at first finding of the searched device ID */
185  for(nbReadAttempts = 0; ((nbReadAttempts < 3) && !(bFoundDevice)); nbReadAttempts++)
186  {
187  /* Read register FT5336_CHIP_ID_REG as DeviceID detection */
188  ucReadId = TS_IO_Read(DeviceAddr, FT5336_CHIP_ID_REG);
189 
190  /* Found the searched device ID ? */
191  if(ucReadId == FT5336_ID_VALUE)
192  {
193  /* Set device as found */
194  bFoundDevice = 1;
195  }
196  }
197 
198  /* Return the device ID value */
199  return (ucReadId);
200 }
201 
207 void ft5336_TS_Start(uint16_t DeviceAddr)
208 {
209  /* Minimum static configuration of FT5336 */
210  FT5336_ASSERT(ft5336_TS_Configure(DeviceAddr));
211 
212  /* By default set FT5336 IC in Polling mode : no INT generation on FT5336 for new touch available */
213  /* Note TS_INT is active low */
214  ft5336_TS_DisableIT(DeviceAddr);
215 }
216 
224 uint8_t ft5336_TS_DetectTouch(uint16_t DeviceAddr)
225 {
226  volatile uint8_t nbTouch = 0;
227 
228  /* Read register FT5336_TD_STAT_REG to check number of touches detection */
229  nbTouch = TS_IO_Read(DeviceAddr, FT5336_TD_STAT_REG);
230  nbTouch &= FT5336_TD_STAT_MASK;
231 
232  if(nbTouch > FT5336_MAX_DETECTABLE_TOUCH)
233  {
234  /* If invalid number of touch detected, set it to zero */
235  nbTouch = 0;
236  }
237 
238  /* Update ft5336 driver internal global : current number of active touches */
239  ft5336_handle.currActiveTouchNb = nbTouch;
240 
241  /* Reset current active touch index on which to work on */
242  ft5336_handle.currActiveTouchIdx = 0;
243 
244  return(nbTouch);
245 }
246 
256 void ft5336_TS_GetXY(uint16_t DeviceAddr, uint16_t *X, uint16_t *Y)
257 {
258  volatile uint8_t ucReadData = 0;
259  static uint16_t coord;
260  uint8_t regAddressXLow = 0;
261  uint8_t regAddressXHigh = 0;
262  uint8_t regAddressYLow = 0;
263  uint8_t regAddressYHigh = 0;
264 
265  if(ft5336_handle.currActiveTouchIdx < ft5336_handle.currActiveTouchNb)
266  {
267  switch(ft5336_handle.currActiveTouchIdx)
268  {
269  case 0 :
270  regAddressXLow = FT5336_P1_XL_REG;
271  regAddressXHigh = FT5336_P1_XH_REG;
272  regAddressYLow = FT5336_P1_YL_REG;
273  regAddressYHigh = FT5336_P1_YH_REG;
274  break;
275 
276  case 1 :
277  regAddressXLow = FT5336_P2_XL_REG;
278  regAddressXHigh = FT5336_P2_XH_REG;
279  regAddressYLow = FT5336_P2_YL_REG;
280  regAddressYHigh = FT5336_P2_YH_REG;
281  break;
282 
283  case 2 :
284  regAddressXLow = FT5336_P3_XL_REG;
285  regAddressXHigh = FT5336_P3_XH_REG;
286  regAddressYLow = FT5336_P3_YL_REG;
287  regAddressYHigh = FT5336_P3_YH_REG;
288  break;
289 
290  case 3 :
291  regAddressXLow = FT5336_P4_XL_REG;
292  regAddressXHigh = FT5336_P4_XH_REG;
293  regAddressYLow = FT5336_P4_YL_REG;
294  regAddressYHigh = FT5336_P4_YH_REG;
295  break;
296 
297  case 4 :
298  regAddressXLow = FT5336_P5_XL_REG;
299  regAddressXHigh = FT5336_P5_XH_REG;
300  regAddressYLow = FT5336_P5_YL_REG;
301  regAddressYHigh = FT5336_P5_YH_REG;
302  break;
303 
304  case 5 :
305  regAddressXLow = FT5336_P6_XL_REG;
306  regAddressXHigh = FT5336_P6_XH_REG;
307  regAddressYLow = FT5336_P6_YL_REG;
308  regAddressYHigh = FT5336_P6_YH_REG;
309  break;
310 
311  case 6 :
312  regAddressXLow = FT5336_P7_XL_REG;
313  regAddressXHigh = FT5336_P7_XH_REG;
314  regAddressYLow = FT5336_P7_YL_REG;
315  regAddressYHigh = FT5336_P7_YH_REG;
316  break;
317 
318  case 7 :
319  regAddressXLow = FT5336_P8_XL_REG;
320  regAddressXHigh = FT5336_P8_XH_REG;
321  regAddressYLow = FT5336_P8_YL_REG;
322  regAddressYHigh = FT5336_P8_YH_REG;
323  break;
324 
325  case 8 :
326  regAddressXLow = FT5336_P9_XL_REG;
327  regAddressXHigh = FT5336_P9_XH_REG;
328  regAddressYLow = FT5336_P9_YL_REG;
329  regAddressYHigh = FT5336_P9_YH_REG;
330  break;
331 
332  case 9 :
333  regAddressXLow = FT5336_P10_XL_REG;
334  regAddressXHigh = FT5336_P10_XH_REG;
335  regAddressYLow = FT5336_P10_YL_REG;
336  regAddressYHigh = FT5336_P10_YH_REG;
337  break;
338 
339  default :
340  break;
341 
342  } /* end switch(ft5336_handle.currActiveTouchIdx) */
343 
344  /* Read low part of X position */
345  ucReadData = TS_IO_Read(DeviceAddr, regAddressXLow);
346  coord = (ucReadData & FT5336_TOUCH_POS_LSB_MASK) >> FT5336_TOUCH_POS_LSB_SHIFT;
347 
348  /* Read high part of X position */
349  ucReadData = TS_IO_Read(DeviceAddr, regAddressXHigh);
350  coord |= ((ucReadData & FT5336_TOUCH_POS_MSB_MASK) >> FT5336_TOUCH_POS_MSB_SHIFT) << 8;
351 
352  /* Send back ready X position to caller */
353  *X = coord;
354 
355  /* Read low part of Y position */
356  ucReadData = TS_IO_Read(DeviceAddr, regAddressYLow);
357  coord = (ucReadData & FT5336_TOUCH_POS_LSB_MASK) >> FT5336_TOUCH_POS_LSB_SHIFT;
358 
359  /* Read high part of Y position */
360  ucReadData = TS_IO_Read(DeviceAddr, regAddressYHigh);
361  coord |= ((ucReadData & FT5336_TOUCH_POS_MSB_MASK) >> FT5336_TOUCH_POS_MSB_SHIFT) << 8;
362 
363  /* Send back ready Y position to caller */
364  *Y = coord;
365 
366  ft5336_handle.currActiveTouchIdx++; /* next call will work on next touch */
367 
368  } /* of if(ft5336_handle.currActiveTouchIdx < ft5336_handle.currActiveTouchNb) */
369 }
370 
377 void ft5336_TS_EnableIT(uint16_t DeviceAddr)
378 {
379  uint8_t regValue = 0;
381 
382  /* Set interrupt trigger mode in FT5336_GMODE_REG */
383  TS_IO_Write(DeviceAddr, FT5336_GMODE_REG, regValue);
384 }
385 
392 void ft5336_TS_DisableIT(uint16_t DeviceAddr)
393 {
394  uint8_t regValue = 0;
396 
397  /* Set interrupt polling mode in FT5336_GMODE_REG */
398  TS_IO_Write(DeviceAddr, FT5336_GMODE_REG, regValue);
399 }
400 
409 uint8_t ft5336_TS_ITStatus(uint16_t DeviceAddr)
410 {
411  /* Always return 0 as feature not applicable to FT5336 */
412  return 0;
413 }
414 
422 void ft5336_TS_ClearIT(uint16_t DeviceAddr)
423 {
424  /* Nothing to be done here for FT5336 */
425 }
426 
427 /**** NEW FEATURES enabled when Multi-touch support is enabled ****/
428 
429 #if (TS_MULTI_TOUCH_SUPPORTED == 1)
430 
437 void ft5336_TS_GetGestureID(uint16_t DeviceAddr, uint32_t * pGestureId)
438 {
439  volatile uint8_t ucReadData = 0;
440 
441  ucReadData = TS_IO_Read(DeviceAddr, FT5336_GEST_ID_REG);
442 
443  * pGestureId = ucReadData;
444 }
445 
461 void ft5336_TS_GetTouchInfo(uint16_t DeviceAddr,
462  uint32_t touchIdx,
463  uint32_t * pWeight,
464  uint32_t * pArea,
465  uint32_t * pEvent)
466 {
467  volatile uint8_t ucReadData = 0;
468  uint8_t regAddressXHigh = 0;
469  uint8_t regAddressPWeight = 0;
470  uint8_t regAddressPMisc = 0;
471 
472  if(touchIdx < ft5336_handle.currActiveTouchNb)
473  {
474  switch(touchIdx)
475  {
476  case 0 :
477  regAddressXHigh = FT5336_P1_XH_REG;
478  regAddressPWeight = FT5336_P1_WEIGHT_REG;
479  regAddressPMisc = FT5336_P1_MISC_REG;
480  break;
481 
482  case 1 :
483  regAddressXHigh = FT5336_P2_XH_REG;
484  regAddressPWeight = FT5336_P2_WEIGHT_REG;
485  regAddressPMisc = FT5336_P2_MISC_REG;
486  break;
487 
488  case 2 :
489  regAddressXHigh = FT5336_P3_XH_REG;
490  regAddressPWeight = FT5336_P3_WEIGHT_REG;
491  regAddressPMisc = FT5336_P3_MISC_REG;
492  break;
493 
494  case 3 :
495  regAddressXHigh = FT5336_P4_XH_REG;
496  regAddressPWeight = FT5336_P4_WEIGHT_REG;
497  regAddressPMisc = FT5336_P4_MISC_REG;
498  break;
499 
500  case 4 :
501  regAddressXHigh = FT5336_P5_XH_REG;
502  regAddressPWeight = FT5336_P5_WEIGHT_REG;
503  regAddressPMisc = FT5336_P5_MISC_REG;
504  break;
505 
506  case 5 :
507  regAddressXHigh = FT5336_P6_XH_REG;
508  regAddressPWeight = FT5336_P6_WEIGHT_REG;
509  regAddressPMisc = FT5336_P6_MISC_REG;
510  break;
511 
512  case 6 :
513  regAddressXHigh = FT5336_P7_XH_REG;
514  regAddressPWeight = FT5336_P7_WEIGHT_REG;
515  regAddressPMisc = FT5336_P7_MISC_REG;
516  break;
517 
518  case 7 :
519  regAddressXHigh = FT5336_P8_XH_REG;
520  regAddressPWeight = FT5336_P8_WEIGHT_REG;
521  regAddressPMisc = FT5336_P8_MISC_REG;
522  break;
523 
524  case 8 :
525  regAddressXHigh = FT5336_P9_XH_REG;
526  regAddressPWeight = FT5336_P9_WEIGHT_REG;
527  regAddressPMisc = FT5336_P9_MISC_REG;
528  break;
529 
530  case 9 :
531  regAddressXHigh = FT5336_P10_XH_REG;
532  regAddressPWeight = FT5336_P10_WEIGHT_REG;
533  regAddressPMisc = FT5336_P10_MISC_REG;
534  break;
535 
536  default :
537  break;
538 
539  } /* end switch(touchIdx) */
540 
541  /* Read Event Id of touch index */
542  ucReadData = TS_IO_Read(DeviceAddr, regAddressXHigh);
543  * pEvent = (ucReadData & FT5336_TOUCH_EVT_FLAG_MASK) >> FT5336_TOUCH_EVT_FLAG_SHIFT;
544 
545  /* Read weight of touch index */
546  ucReadData = TS_IO_Read(DeviceAddr, regAddressPWeight);
547  * pWeight = (ucReadData & FT5336_TOUCH_WEIGHT_MASK) >> FT5336_TOUCH_WEIGHT_SHIFT;
548 
549  /* Read area of touch index */
550  ucReadData = TS_IO_Read(DeviceAddr, regAddressPMisc);
551  * pArea = (ucReadData & FT5336_TOUCH_AREA_MASK) >> FT5336_TOUCH_AREA_SHIFT;
552 
553  } /* of if(touchIdx < ft5336_handle.currActiveTouchNb) */
554 }
555 
556 #endif /* TS_MULTI_TOUCH_SUPPORTED == 1 */
557 
562 /* Static functions bodies-----------------------------------------------*/
563 
564 
570 static uint8_t ft5336_Get_I2C_InitializedStatus(void)
571 {
572  return(ft5336_handle.i2cInitialized);
573 }
574 
580 static void ft5336_I2C_InitializeIfRequired(void)
581 {
582  if(ft5336_Get_I2C_InitializedStatus() == FT5336_I2C_NOT_INITIALIZED)
583  {
584  /* Initialize TS IO BUS layer (I2C) */
585  TS_IO_Init();
586 
587  /* Set state to initialized */
588  ft5336_handle.i2cInitialized = FT5336_I2C_INITIALIZED;
589  }
590 }
591 
597 static uint32_t ft5336_TS_Configure(uint16_t DeviceAddr)
598 {
599  uint32_t status = FT5336_STATUS_OK;
600 
601  /* Nothing special to be done for FT5336 */
602 
603  return(status);
604 }
605 
625 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void ft5336_Init(uint16_t DeviceAddr)
Initialize the ft5336 communication bus from MCU to FT5336 : ie I2C channel initialization (if requir...
Definition: ft5336.c:147
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 ...
Definition: ft5336.c:224
#define FT5336_TD_STAT_REG
Definition: ft5336.h:161
#define FT5336_P10_WEIGHT_REG
Definition: ft5336.h:262
#define FT5336_P7_YL_REG
Definition: ft5336.h:240
#define FT5336_P1_XH_REG
Definition: ft5336.h:183
#define FT5336_P2_YH_REG
Definition: ft5336.h:204
#define FT5336_P6_MISC_REG
Definition: ft5336.h:235
#define FT5336_TOUCH_POS_MSB_MASK
Definition: ft5336.h:176
#define FT5336_P5_XH_REG
Definition: ft5336.h:223
This file contains all the functions prototypes for the ft5336.c Touch screen driver.
#define FT5336_G_MODE_INTERRUPT_TRIGGER
Definition: ft5336.h:330
#define FT5336_P10_YL_REG
Definition: ft5336.h:261
#define FT5336_TOUCH_WEIGHT_MASK
Definition: ft5336.h:192
#define FT5336_P8_XL_REG
Definition: ft5336.h:245
#define FT5336_P3_XL_REG
Definition: ft5336.h:210
#define FT5336_P8_MISC_REG
Definition: ft5336.h:249
#define FT5336_MAX_DETECTABLE_TOUCH
Definition: ft5336.h:128
#define FT5336_TOUCH_WEIGHT_SHIFT
Definition: ft5336.h:193
#define FT5336_P9_YH_REG
Definition: ft5336.h:253
#define FT5336_P3_YL_REG
Definition: ft5336.h:212
#define FT5336_P3_MISC_REG
Definition: ft5336.h:214
#define FT5336_I2C_NOT_INITIALIZED
Definition: ft5336.h:124
#define FT5336_P7_MISC_REG
Definition: ft5336.h:242
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...
Definition: ft5336.c:256
#define FT5336_P1_YL_REG
Definition: ft5336.h:186
#define FT5336_P1_YH_REG
Definition: ft5336.h:185
#define FT5336_P2_MISC_REG
Definition: ft5336.h:207
#define FT5336_P4_MISC_REG
Definition: ft5336.h:221
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 &#39;touchIdx&#39; (0..1) This touch detailed information...
Definition: ft5336.c:461
#define FT5336_TOUCH_POS_MSB_SHIFT
Definition: ft5336.h:177
void TS_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value)
Writes a single data.
uint8_t currActiveTouchIdx
Definition: ft5336.h:84
#define FT5336_TOUCH_EVT_FLAG_SHIFT
Definition: ft5336.h:173
#define FT5336_G_MODE_INTERRUPT_POLLING
Definition: ft5336.h:329
#define FT5336_P8_YH_REG
Definition: ft5336.h:246
#define FT5336_GMODE_REG
Definition: ft5336.h:323
#define FT5336_TOUCH_POS_LSB_MASK
Definition: ft5336.h:180
void ft5336_TS_GetGestureID(uint16_t DeviceAddr, uint32_t *pGestureId)
Get the last touch gesture identification (zoom, move up/down...).
Definition: ft5336.c:437
#define FT5336_TOUCH_EVT_FLAG_MASK
Definition: ft5336.h:174
void ft5336_TS_Start(uint16_t DeviceAddr)
Configures the touch Screen IC device to start detecting touches.
Definition: ft5336.c:207
uint8_t currActiveTouchNb
Definition: ft5336.h:81
#define FT5336_P1_XL_REG
Definition: ft5336.h:184
#define FT5336_TOUCH_POS_LSB_SHIFT
Definition: ft5336.h:181
#define FT5336_P6_WEIGHT_REG
Definition: ft5336.h:234
#define FT5336_P7_YH_REG
Definition: ft5336.h:239
#define FT5336_P2_XL_REG
Definition: ft5336.h:203
#define FT5336_P10_XL_REG
Definition: ft5336.h:259
#define FT5336_P6_XL_REG
Definition: ft5336.h:231
TS_DrvTypeDef ft5336_ts_drv
Definition: ft5336.c:79
#define FT5336_TOUCH_AREA_SHIFT
Definition: ft5336.h:200
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...
Definition: ft5336.c:175
#define FT5336_P1_WEIGHT_REG
Definition: ft5336.h:189
#define FT5336_P9_WEIGHT_REG
Definition: ft5336.h:255
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...
Definition: ft5336.c:392
#define FT5336_P9_YL_REG
Definition: ft5336.h:254
#define FT5336_P10_YH_REG
Definition: ft5336.h:260
#define FT5336_P4_YH_REG
Definition: ft5336.h:218
#define FT5336_P9_MISC_REG
Definition: ft5336.h:256
void ft5336_TS_EnableIT(uint16_t DeviceAddr)
Configure the FT5336 device to generate IT on given INT pin connected to MCU as EXTI.
Definition: ft5336.c:377
#define FT5336_P10_XH_REG
Definition: ft5336.h:258
#define FT5336_P2_WEIGHT_REG
Definition: ft5336.h:206
#define FT5336_P5_YH_REG
Definition: ft5336.h:225
#define FT5336_CHIP_ID_REG
Definition: ft5336.h:339
#define FT5336_P7_WEIGHT_REG
Definition: ft5336.h:241
#define FT5336_G_MODE_INTERRUPT_MASK
Definition: ft5336.h:325
#define FT5336_P2_XH_REG
Definition: ft5336.h:202
uint8_t TS_IO_Read(uint8_t Addr, uint8_t Reg)
Reads a single data.
#define FT5336_P6_YL_REG
Definition: ft5336.h:233
void ft5336_Reset(uint16_t DeviceAddr)
Software Reset the ft5336.
Definition: ft5336.c:163
#define FT5336_P6_YH_REG
Definition: ft5336.h:232
#define FT5336_ID_VALUE
Definition: ft5336.h:342
#define FT5336_P2_YL_REG
Definition: ft5336.h:205
#define FT5336_P8_WEIGHT_REG
Definition: ft5336.h:248
#define FT5336_P1_MISC_REG
Definition: ft5336.h:196
#define FT5336_P4_XL_REG
Definition: ft5336.h:217
#define FT5336_TD_STAT_MASK
Definition: ft5336.h:164
#define FT5336_P5_YL_REG
Definition: ft5336.h:226
#define FT5336_P8_YL_REG
Definition: ft5336.h:247
void TS_IO_Delay(uint32_t Delay)
Delay function used in TouchScreen low level driver.
#define FT5336_STATUS_OK
Definition: ft5336.h:120
#define FT5336_P6_XH_REG
Definition: ft5336.h:230
#define FT5336_P9_XL_REG
Definition: ft5336.h:252
#define FT5336_P8_XH_REG
Definition: ft5336.h:244
#define FT5336_ASSERT(__condition__)
Definition: ft5336.h:66
#define FT5336_P5_MISC_REG
Definition: ft5336.h:228
void ft5336_TS_ClearIT(uint16_t DeviceAddr)
Clear IT status in FT5336 interrupt status clear registers Should be called Following an EXTI coming ...
Definition: ft5336.c:422
#define FT5336_P10_MISC_REG
Definition: ft5336.h:263
#define FT5336_G_MODE_INTERRUPT_SHIFT
Definition: ft5336.h:326
#define FT5336_P7_XL_REG
Definition: ft5336.h:238
#define FT5336_GEST_ID_REG
Definition: ft5336.h:145
#define FT5336_P5_XL_REG
Definition: ft5336.h:224
#define FT5336_P7_XH_REG
Definition: ft5336.h:237
#define FT5336_P5_WEIGHT_REG
Definition: ft5336.h:227
#define FT5336_P3_WEIGHT_REG
Definition: ft5336.h:213
#define FT5336_P4_WEIGHT_REG
Definition: ft5336.h:220
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...
Definition: ft5336.c:409
#define FT5336_P3_YH_REG
Definition: ft5336.h:211
#define FT5336_I2C_INITIALIZED
Definition: ft5336.h:125
#define FT5336_TOUCH_AREA_MASK
Definition: ft5336.h:199
void TS_IO_Init(void)
Initializes Touchscreen low level.
#define FT5336_P4_XH_REG
Definition: ft5336.h:216
uint8_t i2cInitialized
Definition: ft5336.h:78
#define FT5336_P9_XH_REG
Definition: ft5336.h:251
#define FT5336_P4_YL_REG
Definition: ft5336.h:219
#define FT5336_P3_XH_REG
Definition: ft5336.h:209