touchkey3 2.0.0.0
touchkey3.h
Go to the documentation of this file.
1/*
2 * MikroSDK - MikroE Software Development Kit
3 * Copyright© 2020 MikroElektronika d.o.o.
4 *
5 * Permission is hereby granted, free of charge, to any person
6 * obtaining a copy of this software and associated documentation
7 * files (the "Software"), to deal in the Software without restriction,
8 * including without limitation the rights to use, copy, modify, merge,
9 * publish, distribute, sublicense, and/or sell copies of the Software,
10 * and to permit persons to whom the Software is furnished to do so,
11 * subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22 * OR OTHER DEALINGS IN THE SOFTWARE.
23 */
24
33// ----------------------------------------------------------------------------
34
35#ifndef TOUCHKEY3_H
36#define TOUCHKEY3_H
37
38#include "drv_digital_out.h"
39#include "drv_digital_in.h"
40#include "drv_spi_master.h"
41
42
43// -------------------------------------------------------------- PUBLIC MACROS
53#define TOUCHKEY3_MAP_MIKROBUS( cfg, mikrobus ) \
54 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
55 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
56 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
57 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
58 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
59 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
66#define TOUCHKEY3_RETVAL uint8_t
67
68#define TOUCHKEY3_OK 0x00
69#define TOUCHKEY3_INIT_ERROR 0xFF
76#define TOUCHKEY3_CMD_SENDSETUP 0x01
77#define TOUCHKEY3_CMD_RESET 0x04
78#define TOUCHKEY3_CMD_SLEEP 0x05
79#define TOUCHKEY3_CMD_EEPROM_STORE 0x0A
80#define TOUCHKEY3_CMD_EEPROM_RESTORE 0x0B
81#define TOUCHKEY3_CMD_EEPROM_ERASE 0x0C
82#define TOUCHKEY3_CMD_EEPROM_RECOVER 0x0D
89#define TOUCHKEY3_CMD_CALLIBRATE_ALL 0x03
90#define TOUCHKEY3_CMD_CALLIBRATE_0 0x10
91#define TOUCHKEY3_CMD_CALLIBRATE_1 0x11
92#define TOUCHKEY3_CMD_CALLIBRATE_2 0x12
93#define TOUCHKEY3_CMD_CALLIBRATE_3 0x13
94#define TOUCHKEY3_CMD_CALLIBRATE_4 0x14
95#define TOUCHKEY3_CMD_CALLIBRATE_5 0x15
96#define TOUCHKEY3_CMD_CALLIBRATE_6 0x16
103#define TOUCHKEY3_REQ_FIRST_KEY 0xC0
104#define TOUCHKEY3_REQ_ALL_KEYS 0xC1
105#define TOUCHKEY3_REQ_DEVICE_STATUS 0xC2
106#define TOUCHKEY3_REQ_EEPROM_CRC 0xC3
107#define TOUCHKEY3_REQ_RAM_CRC 0xC4
108#define TOUCHKEY3_REQ_ERROR_KEYS 0xC5
115#define TOUCHKEY3_REQ_LAST_COMMAND 0xC7
116#define TOUCHKEY3_REQ_SETUP_DATA 0xC8
117#define TOUCHKEY3_REQ_DEVICE_ID 0xC9
118#define TOUCHKEY3_REQ_FIRMWARE_VERSION 0xCA // End group macro
122// --------------------------------------------------------------- PUBLIC TYPES
131typedef struct
132{
133 // Output pins
134
135 digital_out_t rst;
136 digital_out_t cs;
137
138 // Input pins
139
140 digital_in_t int_pin;
141
142 // Modules
143
144 spi_master_t spi;
145 pin_name_t chip_select;
146
148
152typedef struct
153{
154 // Communication gpio pins
155
156 pin_name_t miso;
157 pin_name_t mosi;
158 pin_name_t sck;
159 pin_name_t cs;
160
161 // Additional gpio pins
162
163 pin_name_t rst;
164 pin_name_t int_pin;
165
166 // static variable
167
168 uint32_t spi_speed;
169 spi_master_mode_t spi_mode;
170 spi_master_chip_select_polarity_t cs_polarity;
171
173 // End types group
175// ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
176
181#ifdef __cplusplus
182extern "C"{
183#endif
184
194
204
213
226(
227 touchkey3_t *ctx,
228 uint8_t *wr_buf,
229 uint16_t wr_len,
230 uint8_t *rd_buf,
231 uint16_t rd_len
232);
233
242void touchkey3_send_command ( touchkey3_t *ctx, uint8_t command );
243
252void touchkey3_send_setup ( touchkey3_t *ctx, uint8_t *p_setup_data );
253
263void touchkey3_send_request ( touchkey3_t *ctx, uint8_t request, uint8_t *p_response );
264
274void touchkey3_set_data ( touchkey3_t *ctx, uint8_t data_address, uint8_t write_data );
275
285void touchkey3_get_data ( touchkey3_t *ctx, uint8_t data_address, uint8_t *read_data );
286
287#ifdef __cplusplus
288}
289#endif
290#endif // _TOUCHKEY3_H_
291 // End public_function group
294
295// ------------------------------------------------------------------------- END
#define TOUCHKEY3_RETVAL
Definition: touchkey3.h:66
void touchkey3_cfg_setup(touchkey3_cfg_t *cfg)
Config Object Initialization function.
void touchkey3_send_request(touchkey3_t *ctx, uint8_t request, uint8_t *p_response)
Send request.
void touchkey3_set_data(touchkey3_t *ctx, uint8_t data_address, uint8_t write_data)
Set configuration data.
TOUCHKEY3_RETVAL touchkey3_init(touchkey3_t *ctx, touchkey3_cfg_t *cfg)
Initialization function.
void touchkey3_send_setup(touchkey3_t *ctx, uint8_t *p_setup_data)
Send setup data.
void touchkey3_send_command(touchkey3_t *ctx, uint8_t command)
Send command.
void touchkey3_generic_transfer(touchkey3_t *ctx, uint8_t *wr_buf, uint16_t wr_len, uint8_t *rd_buf, uint16_t rd_len)
Generic transfer function.
void touchkey3_reset(touchkey3_t *ctx)
Reset function.
void touchkey3_get_data(touchkey3_t *ctx, uint8_t data_address, uint8_t *read_data)
Read configuration data.
Click configuration structure definition.
Definition: touchkey3.h:153
spi_master_chip_select_polarity_t cs_polarity
Definition: touchkey3.h:170
pin_name_t sck
Definition: touchkey3.h:158
spi_master_mode_t spi_mode
Definition: touchkey3.h:169
pin_name_t mosi
Definition: touchkey3.h:157
uint32_t spi_speed
Definition: touchkey3.h:168
pin_name_t int_pin
Definition: touchkey3.h:164
pin_name_t miso
Definition: touchkey3.h:156
pin_name_t rst
Definition: touchkey3.h:163
pin_name_t cs
Definition: touchkey3.h:159
Click ctx object definition.
Definition: touchkey3.h:132
digital_out_t cs
Definition: touchkey3.h:136
spi_master_t spi
Definition: touchkey3.h:144
digital_in_t int_pin
Definition: touchkey3.h:140
digital_out_t rst
Definition: touchkey3.h:135
pin_name_t chip_select
Definition: touchkey3.h:145