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
32extern "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
222typedef 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
236
238
243typedef 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
260typedef struct
261{
262 int16_t x;
263 int16_t y;
264 int16_t strength;
265 int16_t area;
268
273typedef struct
274{
276 touchpad4_touch_t touches[ 4 ];
279
284typedef enum
285{
287 TOUCHPAD4_ERROR = -1
288
290
307
323
338
351err_t touchpad4_generic_write ( touchpad4_t *ctx, uint8_t reg, uint16_t tx_data );
352
365err_t touchpad4_generic_read ( touchpad4_t *ctx, uint8_t reg, uint16_t *rx_data );
366
375
384void touchpad4_set_rst ( touchpad4_t *ctx, uint8_t state );
385
394
408
420err_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
err_t touchpad4_generic_write(touchpad4_t *ctx, uint8_t reg, uint16_t tx_data)
Touchpad 4 I2C writing function.
err_t touchpad4_init(touchpad4_t *ctx, touchpad4_cfg_t *cfg)
Touchpad 4 initialization function.
uint8_t touchpad4_get_ready(touchpad4_t *ctx)
Get ready pin state.
err_t touchpad_get_channels(touchpad4_t *ctx, uint32_t *channels)
Read channel information.
void touchpad4_reset(touchpad4_t *ctx)
Reset function.
void touchpad4_cfg_setup(touchpad4_cfg_t *cfg)
Touchpad 4 configuration object setup function.
err_t touchpad4_generic_read(touchpad4_t *ctx, uint8_t reg, uint16_t *rx_data)
Touchpad 4 I2C reading function.
void touchpad4_set_rst(touchpad4_t *ctx, uint8_t state)
Set reset pin state.
err_t touchpad4_get_touch(touchpad4_t *ctx, touchpad4_info_t *touch_info)
Read touch informations.
err_t touchpad4_default_cfg(touchpad4_t *ctx)
Touchpad 4 default configuration function.
Touchpad 4 Click configuration object.
Definition: touchpad4.h:244
uint32_t i2c_speed
Definition: touchpad4.h:251
pin_name_t scl
Definition: touchpad4.h:245
pin_name_t mclr
Definition: touchpad4.h:248
pin_name_t rdy
Definition: touchpad4.h:249
pin_name_t sda
Definition: touchpad4.h:246
uint8_t i2c_address
Definition: touchpad4.h:252
Touchpad 4 Click touchpad information object.
Definition: touchpad4.h:274
uint8_t number_of_touches
Definition: touchpad4.h:275
Touchpad 4 Click context object.
Definition: touchpad4.h:223
i2c_master_t i2c
Definition: touchpad4.h:231
uint8_t event_enabled
Definition: touchpad4.h:235
uint8_t slave_address
Definition: touchpad4.h:234
digital_out_t mclr
Definition: touchpad4.h:225
digital_in_t rdy
Definition: touchpad4.h:228
Touchpad 4 Click touch object.
Definition: touchpad4.h:261
int16_t area
Definition: touchpad4.h:265
int16_t strength
Definition: touchpad4.h:264
int16_t x
Definition: touchpad4.h:262
int16_t y
Definition: touchpad4.h:263
touchpad4_return_value_t
Touchpad 4 Click return value data.
Definition: touchpad4.h:285
@ TOUCHPAD4_ERROR
Definition: touchpad4.h:287
@ TOUCHPAD4_OK
Definition: touchpad4.h:286