-
Notifications
You must be signed in to change notification settings - Fork 4
/
stm32h747i_discovery_ts.h
242 lines (211 loc) · 6.65 KB
/
stm32h747i_discovery_ts.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
/**
******************************************************************************
* @file stm32h747i_discovery_ts.h
* @author MCD Application Team
* @brief This file contains the common defines and functions prototypes for
* the stm32h747i_discovery_ts.c driver.
******************************************************************************
* @attention
*
* Copyright (c) 2019 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef STM32H747I_DISCO_TS_H
#define STM32H747I_DISCO_TS_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32h747i_discovery_conf.h"
#include "stm32h747i_discovery_errno.h"
#include "../Components/Common/ts.h"
/* Include TouchScreen component driver */
#include "../Components/ft6x06/ft6x06.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup STM32H747I_DISCO
* @{
*/
/** @addtogroup STM32H747I_DISCO_TS
* @{
*/
/** @defgroup STM32H747I_DISCO_TS_Exported_Constants Exported Constants
* @{
*/
/** @brief With FT6206 : maximum 2 touches detected simultaneously
*/
#define TS_INSTANCES_NBR 1U
#ifndef USE_TS_MULTI_TOUCH
#define USE_TS_MULTI_TOUCH 1U
#endif
#ifndef USE_TS_GESTURE
#define USE_TS_GESTURE 1U
#endif
#ifndef TS_TOUCH_NBR
#define TS_TOUCH_NBR 2U
#endif
/* Maximum border values of the touchscreen pad */
#define TS_MAX_WIDTH 800U /* Touchscreen pad max width */
#define TS_MAX_HEIGHT 480U /* Touchscreen pad max height */
#define TS_SWAP_NONE 0x01U
#define TS_SWAP_X 0x02U
#define TS_SWAP_Y 0x04U
#define TS_SWAP_XY 0x08U
/**
* @brief TouchScreen Slave I2C address 1
*/
#define TS_I2C_ADDRESS 0x54U
/**
* @brief TouchScreen Slave I2C address 2
*/
#define TS_I2C_ADDRESS_A02 0x70U
/**
* @brief Touch screen interrupt signal
*/
#define TS_INT_PIN ((uint32_t)GPIO_PIN_7)
#define TS_INT_GPIO_PORT ((GPIO_TypeDef*)GPIOK)
#define TS_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOK_CLK_ENABLE()
#define TS_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOK_CLK_DISABLE()
#define TS_INT_EXTI_IRQn EXTI9_5_IRQn
#define TS_INT_LINE EXTI_LINE_7
#if (USE_TS_GESTURE == 1)
/**
* Define Possible managed gesture identification values returned by touch screen
* driver.
*/
#define GESTURE_ID_NO_GESTURE 0x00U /*!< Gesture not defined / recognized */
#define GESTURE_ID_MOVE_UP 0x01U /*!< Gesture Move Up */
#define GESTURE_ID_MOVE_RIGHT 0x02U /*!< Gesture Move Right */
#define GESTURE_ID_MOVE_DOWN 0x03U /*!< Gesture Move Down */
#define GESTURE_ID_MOVE_LEFT 0x04U /*!< Gesture Move Left */
#define GESTURE_ID_ZOOM_IN 0x05U /*!< Gesture Zoom In */
#define GESTURE_ID_ZOOM_OUT 0x06U /*!< Gesture Zoom Out */
#define GESTURE_ID_NB_MAX 0x07U /*!< max number of gesture id */
#endif /* (USE_TS_GESTURE == 1) */
/**
* @}
*/
/** @defgroup STM32H747I_DISCO_TS_Exported_Types Exported Types
* @{
*/
typedef struct
{
uint32_t Width; /* Screen Width */
uint32_t Height; /* Screen Height */
uint32_t Orientation; /* Touch Screen orientation from the upper left position */
uint32_t Accuracy; /* Expressed in pixel and means the x or y difference vs old
position to consider the new values valid */
}TS_Init_t;
typedef struct
{
uint32_t Width;
uint32_t Height;
uint32_t Orientation;
uint32_t Accuracy;
uint32_t MaxX;
uint32_t MaxY;
uint32_t PreviousX[TS_TOUCH_NBR];
uint32_t PreviousY[TS_TOUCH_NBR];
} TS_Ctx_t;
typedef struct
{
uint8_t MultiTouch;
uint8_t Gesture;
uint8_t MaxTouch;
uint32_t MaxXl;
uint32_t MaxYl;
} TS_Capabilities_t;
typedef struct
{
uint32_t TouchDetected;
uint32_t TouchX;
uint32_t TouchY;
} TS_State_t;
typedef struct
{
uint32_t TouchDetected;
uint32_t TouchX[TS_TOUCH_NBR];
uint32_t TouchY[TS_TOUCH_NBR];
uint32_t TouchWeight[TS_TOUCH_NBR];
uint32_t TouchEvent[TS_TOUCH_NBR];
uint32_t TouchArea[TS_TOUCH_NBR];
} TS_MultiTouch_State_t;
#if (USE_TS_GESTURE == 1)
typedef struct
{
uint32_t Radian;
uint32_t OffsetLeftRight;
uint32_t OffsetUpDown;
uint32_t DistanceLeftRight;
uint32_t DistanceUpDown;
uint32_t DistanceZoom;
}TS_Gesture_Config_t;
/**
* @brief TS_TouchEventTypeDef
* Define Possible touch events kind as returned values
* by touch screen IC Driver.
*/
typedef enum
{
TOUCH_EVENT_NO_EVT = 0x00, /*!< Touch Event : undetermined */
TOUCH_EVENT_PRESS_DOWN = 0x01, /*!< Touch Event Press Down */
TOUCH_EVENT_LIFT_UP = 0x02, /*!< Touch Event Lift Up */
TOUCH_EVENT_CONTACT = 0x03, /*!< Touch Event Contact */
TOUCH_EVENT_NB_MAX = 0x04 /*!< max number of touch events kind */
} TS_TouchEventTypeDef;
#endif /* (USE_TS_GESTURE == 1) */
/**
* @}
*/
/** @addtogroup STM32H747I_DISCO_TS_Exported_Variables
* @{
*/
extern TS_Ctx_t Ts_Ctx[];
extern void *Ts_CompObj[TS_INSTANCES_NBR];
/**
* @}
*/
/** @addtogroup STM32H747I_DISCO_TS_Exported_Functions
* @{
*/
int32_t BSP_TS_Init(uint32_t Instance, TS_Init_t *TS_Init);
int32_t BSP_TS_DeInit(uint32_t Instance);
int32_t BSP_TS_EnableIT(uint32_t Instance);
int32_t BSP_TS_DisableIT(uint32_t Instance);
int32_t BSP_TS_GetState(uint32_t Instance, TS_State_t *TS_State);
#if (USE_TS_MULTI_TOUCH > 0)
int32_t BSP_TS_Get_MultiTouchState(uint32_t Instance, TS_MultiTouch_State_t *TS_State);
#endif /* USE_TS_MULTI_TOUCH > 0 */
#if (USE_TS_GESTURE > 0)
int32_t BSP_TS_GestureConfig(uint32_t Instance, TS_Gesture_Config_t *GestureConfig);
int32_t BSP_TS_GetGestureId(uint32_t Instance, uint32_t *GestureId);
#endif /* (USE_TS_GESTURE > 0) */
int32_t BSP_TS_Set_Orientation(uint32_t Instance, uint32_t Orientation);
int32_t BSP_TS_Get_Orientation(uint32_t Instance, uint32_t *Orientation);
int32_t BSP_TS_GetCapabilities(uint32_t Instance, TS_Capabilities_t *Capabilities);
void BSP_TS_Callback(uint32_t Instance);
void BSP_TS_IRQHandler(uint32_t Instance);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* STM32H747I_DISCO_TS_H */