touchpad4  2.0.0.0
touchpad4.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef TOUCHPAD4_H
29 #define TOUCHPAD4_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 
59 #define TOUCHPAD4_REG_INFO_FLAGS 0x10
60 #define TOUCHPAD4_REG_GESTURES 0x11
61 #define TOUCHPAD4_REG_RELATIVE_X 0x12
62 #define TOUCHPAD4_REG_RELATIVE_Y 0x13
63 #define TOUCHPAD4_REG_FINGER1_X 0x14
64 #define TOUCHPAD4_REG_FINGER1_Y 0x15
65 #define TOUCHPAD4_REG_FINGER1_TOUCH_STR 0x16
66 #define TOUCHPAD4_REG_FINGER1_AREA 0x17
67 #define TOUCHPAD4_REG_FINGER2_X 0x18
68 #define TOUCHPAD4_REG_FINGER2_Y 0x19
69 #define TOUCHPAD4_REG_FINGER2_TOUCH_STR 0x1A
70 #define TOUCHPAD4_REG_FINGER2_AREA 0x1B
71 #define TOUCHPAD4_REG_TOUCH_STATUS0 0x20
72 #define TOUCHPAD4_REG_TOUCH_STATUS1 0x21
73 #define TOUCHPAD4_REG_TOUCH_STATUS2 0x22
74 #define TOUCHPAD4_REG_ALP_CHANNEL_COUNT 0x23
75 #define TOUCHPAD4_REG_ALP_CHANNEL_LTA 0x24
76 #define TOUCHPAD4_REG_ALP_COUNT_A 0x25
77 #define TOUCHPAD4_REG_ALP_COUNT_B 0x26
78 #define TOUCHPAD4_REG_TRACKPAD_ATI_MULT_DIV 0x30
79 #define TOUCHPAD4_REG_TRACKPAD_ATI_COMP_DIV 0x31
80 #define TOUCHPAD4_REG_TRACKPAD_ATI_TARGET 0x32
81 #define TOUCHPAD4_REG_TRACKPAD_REF_DRIFT_LIMIT 0x33
82 #define TOUCHPAD4_REG_TRACKPAD_MIN_CNT_REATI_VAL 0x34
83 #define TOUCHPAD4_REG_REATI_RETRY_TIME 0x35
84 #define TOUCHPAD4_REG_ALP_ATI_MULT_DIV 0x36
85 #define TOUCHPAD4_REG_ALP_ATI_COMP_DIV 0x37
86 #define TOUCHPAD4_REG_ALP_ATI_TARGET 0x38
87 #define TOUCHPAD4_REG_ALP_ATI_DRIFT_LIMIT 0x39
88 #define TOUCHPAD4_REG_ALP_ATI_COMP_A 0x3A
89 #define TOUCHPAD4_REG_ALP_ATI_COMP_B 0x3B
90 #define TOUCHPAD4_REG_ACTIVE_MODE_REPORT_RATE 0x40
91 #define TOUCHPAD4_REG_IDLE_TOUCH_MODE_REPORT_RATE 0x41
92 #define TOUCHPAD4_REG_IDLE_MODE_REPORT_RATE 0x42
93 #define TOUCHPAD4_REG_LP1_MODE_REPORT_RATE 0x43
94 #define TOUCHPAD4_REG_LP2_MODE_REPORT_RATE 0x44
95 #define TOUCHPAD4_REG_ACTIVE_MODE_TIMEOUT 0x45
96 #define TOUCHPAD4_REG_IDLE_TOUCH_MODE_TIMEOUT 0x46
97 #define TOUCHPAD4_REG_IDLE_MODE_TIMEOUT 0x47
98 #define TOUCHPAD4_REG_LP1_MODE_TIMEOUT 0x48
99 #define TOUCHPAD4_REG_REFERENCE_UPDATE_TIME 0x49
100 #define TOUCHPAD4_REG_I2C_TIMEOUT 0x4A
101 #define TOUCHPAD4_REG_SYSTEM_CONTROL 0x50
102 #define TOUCHPAD4_REG_CONFIG_SETTINGS 0x51
103 #define TOUCHPAD4_REG_OTHER_SETTINGS 0x52
104 #define TOUCHPAD4_REG_TOUCH_CLEAR_SET_THRESH 0x53
105 #define TOUCHPAD4_REG_ALP_THRESH 0x54
106 #define TOUCHPAD4_REG_ALP_CLEAR_SET_DEBOUNCE 0x56
107 #define TOUCHPAD4_REG_TRACKPAD_CONVER_FREQ 0x58
108 #define TOUCHPAD4_REG_ALP_CONVER_FREQ 0x59
109 #define TOUCHPAD4_REG_TRACKPAD_HW_SETTINGS 0x5A
110 #define TOUCHPAD4_REG_ALP_HW_SETTINGS 0x5B
111 #define TOUCHPAD4_REG_TOTAL_RXS_TRACKPAD_SETTINGS 0x60
112 #define TOUCHPAD4_REG_MAX_MULTITOUCHES_TOTAL_TXS 0x61
113 #define TOUCHPAD4_REG_X_RES 0x62
114 #define TOUCHPAD4_REG_Y_RES 0x63
115 #define TOUCHPAD4_REG_XY_DYNAMIC_FILTER_BOT_SPEED 0x64
116 #define TOUCHPAD4_REG_XY_DYNAMIC_FILTER_TOP_SPEED 0x65
117 #define TOUCHPAD4_REG_STATIC_FILTER_VAL_DYNAMIC_FILTER_BOT 0x66
118 #define TOUCHPAD4_REG_FINGER_SPLIT_STAT_TOUCH_MOVE_THRESH 0x67
119 #define TOUCHPAD4_REG_X_TRIM_VALUE 0x68
120 #define TOUCHPAD4_REG_Y_TRIM_VALUE 0x69
121 #define TOUCHPAD4_REG_ALP_COUNT_FILTER_BETA 0x70
122 #define TOUCHPAD4_REG_LP2_LP1_BETA 0x71
123 #define TOUCHPAD4_REG_ALP_SETUP 0x72
124 #define TOUCHPAD4_REG_ALP_TX_ENABLE 0x73
125 #define TOUCHPAD4_REG_SETTINGS_MAJOR_MINOR_VER 0x74
126 #define TOUCHPAD4_REG_GESTURE_ENABLE 0x80
127 #define TOUCHPAD4_REG_TAP_TIME 0x81
128 #define TOUCHPAD4_REG_TAP_DIST 0x82
129 #define TOUCHPAD4_REG_HOLD_TIME 0x83
130 #define TOUCHPAD4_REG_SWIPE_TIME 0x84
131 #define TOUCHPAD4_REG_SWIPE_X_DIST 0x85
132 #define TOUCHPAD4_REG_SWIPE_Y_DIST 0x86
133 #define TOUCHPAD4_REG_SWIPE_ANGLE 0x87
134 #define TOUCHPAD4_REG_RXTX_MAP_1_0 0x90
135 #define TOUCHPAD4_REG_RXTX_MAP_3_2 0x91
136 #define TOUCHPAD4_REG_RXTX_MAP_5_4 0x92
137 #define TOUCHPAD4_REG_RXTX_MAP_7_6 0x93
138 #define TOUCHPAD4_REG_RXTX_MAP_9_8 0x94
139 #define TOUCHPAD4_REG_RXTX_MAP_11_10 0x95
140 #define TOUCHPAD4_REG_RXTX_MAP_13_12 0x96
141 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE0 0xA0
142 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE0 0xA1
143 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE1 0xA2
144 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE2 0xA3
145 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE2 0xA4
146 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE3 0xA5
147 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE4 0xA6
148 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE4 0xA7
149 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE5 0xA8
150 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE6 0xA9
151 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE6 0xAA
152 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE7 0xAB
153 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE8 0xAC
154 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE8 0xAD
155 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE9 0xAE
156 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE10 0xB0
157 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE10 0xB1
158 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE11 0xB2
159 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE12 0xB3
160 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE12 0xB4
161 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE13 0xB5
162 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE14 0xB6
163 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE14 0xB7
164 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE15 0xB8
165 #define TOUCHPAD4_REG_1st_CHANNEL_FOR_CYCLE16 0xB9
166 #define TOUCHPAD4_REG_2nd_CHANNEL_FOR_CYCLE16 0xBA
167 #define TOUCHPAD4_REG_2nd1st_CHANNEL_FOR_CYCLE17 0xBB
168 #define TOUCHPAD4_REG_TRACKPAD_COUNT_VAL 0xE0
169 #define TOUCHPAD4_REG_TRACKPAD_REF_VAL 0xE1
170 #define TOUCHPAD4_REG_TRACKPAD_DELTA_VAL 0xE2
171 #define TOUCHPAD4_REG_TRACKPAD_ATI_COMPENSATION_VAL 0xE3
172 
173  // touchpad4_reg
175 
191 #define TOUCHPAD4_SET_DEV_ADDR 0x56
192  // touchpad4_set
194 
209 #define TOUCHPAD4_MAP_MIKROBUS( cfg, mikrobus ) \
210  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
211  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
212  cfg.mclr = MIKROBUS( mikrobus, MIKROBUS_RST ); \
213  cfg.rdy = MIKROBUS( mikrobus, MIKROBUS_INT )
214  // touchpad4_map // touchpad4
217 
222 typedef struct
223 {
224  // Output pins
225  digital_out_t mclr;
227  // Input pins
228  digital_in_t rdy;
230  // Modules
231  i2c_master_t i2c;
233  // I2C slave address
234  uint8_t slave_address;
235  uint8_t event_enabled;
236 
237 } touchpad4_t;
238 
243 typedef struct
244 {
245  pin_name_t scl;
246  pin_name_t sda;
248  pin_name_t mclr;
249  pin_name_t rdy;
251  uint32_t i2c_speed;
252  uint8_t i2c_address;
255 
260 typedef struct
261 {
262  int16_t x;
263  int16_t y;
264  int16_t strength;
265  int16_t area;
268 
273 typedef struct
274 {
275  uint8_t number_of_touches;
276  touchpad4_touch_t touches[ 4 ];
279 
284 typedef enum
285 {
287  TOUCHPAD4_ERROR = -1
288 
290 
307 
322 err_t touchpad4_init ( touchpad4_t *ctx, touchpad4_cfg_t *cfg );
323 
337 err_t touchpad4_default_cfg ( touchpad4_t *ctx );
338 
351 err_t touchpad4_generic_write ( touchpad4_t *ctx, uint8_t reg, uint16_t tx_data );
352 
365 err_t touchpad4_generic_read ( touchpad4_t *ctx, uint8_t reg, uint16_t *rx_data );
366 
374 uint8_t touchpad4_get_ready ( touchpad4_t *ctx );
375 
384 void touchpad4_set_rst ( touchpad4_t *ctx, uint8_t state );
385 
393 void touchpad4_reset ( touchpad4_t *ctx );
394 
407 err_t touchpad4_get_touch ( touchpad4_t *ctx, touchpad4_info_t *touch_info );
408 
420 err_t touchpad_get_channels ( touchpad4_t *ctx, uint32_t *channels );
421 
422 #ifdef __cplusplus
423 }
424 #endif
425 #endif // TOUCHPAD4_H
426  // touchpad4
428 
429 // ------------------------------------------------------------------------ END
TOUCHPAD4_OK
Definition: touchpad4.h:285
touchpad4_init
err_t touchpad4_init(touchpad4_t *ctx, touchpad4_cfg_t *cfg)
Touchpad 4 initialization function.
TOUCHPAD4_ERROR
Definition: touchpad4.h:286
touchpad4_generic_read
err_t touchpad4_generic_read(touchpad4_t *ctx, uint8_t reg, uint16_t *rx_data)
Touchpad 4 I2C reading function.
touchpad4_return_value_t
touchpad4_return_value_t
Touchpad 4 Click return value data.
Definition: touchpad4.h:283
touchpad4_set_rst
void touchpad4_set_rst(touchpad4_t *ctx, uint8_t state)
Set reset pin state.
touchpad4_cfg_t
Touchpad 4 Click configuration object.
Definition: touchpad4.h:242
touchpad4_touch_t
Touchpad 4 Click touch object.
Definition: touchpad4.h:259
touchpad4_get_touch
err_t touchpad4_get_touch(touchpad4_t *ctx, touchpad4_info_t *touch_info)
Read touch informations.
touchpad4_info_t
Touchpad 4 Click touchpad information object.
Definition: touchpad4.h:272
touchpad4_cfg_setup
void touchpad4_cfg_setup(touchpad4_cfg_t *cfg)
Touchpad 4 configuration object setup function.
touchpad4_reset
void touchpad4_reset(touchpad4_t *ctx)
Reset function.
touchpad4_default_cfg
err_t touchpad4_default_cfg(touchpad4_t *ctx)
Touchpad 4 default configuration function.
touchpad4_get_ready
uint8_t touchpad4_get_ready(touchpad4_t *ctx)
Get ready pin state.
touchpad4_t
Touchpad 4 Click context object.
Definition: touchpad4.h:221
touchpad_get_channels
err_t touchpad_get_channels(touchpad4_t *ctx, uint32_t *channels)
Read channel information.
touchpad4_generic_write
err_t touchpad4_generic_write(touchpad4_t *ctx, uint8_t reg, uint16_t tx_data)
Touchpad 4 I2C writing function.