app_i2c.h
Go to the documentation of this file.
1 /**
2 ****************************************************************************************
3 *
4 * @file app_i2c.h
5 * @author BLE Driver Team
6 * @brief Header file containing functions prototypes of I2C app library.
7 *
8 ****************************************************************************************
9 * @attention
10 #####Copyright (c) 2019 GOODIX
11 All rights reserved.
12
13 Redistribution and use in source and binary forms, with or without
14 modification, are permitted provided that the following conditions are met:
15 * Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
17 * Redistributions in binary form must reproduce the above copyright
18 notice, this list of conditions and the following disclaimer in the
19 documentation and/or other materials provided with the distribution.
20 * Neither the name of GOODIX nor the names of its contributors may be used
21 to endorse or promote products derived from this software without
22 specific prior written permission.
23
24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 POSSIBILITY OF SUCH DAMAGE.
35 ****************************************************************************************
36 */
37
38 /** @addtogroup PERIPHERAL Peripheral Driver
39 * @{
40 */
41
42 /** @addtogroup APP_DRIVER APP DRIVER
43 * @{
44 */
45
46 /** @defgroup APP_IIC IIC
47 * @brief IIC APP module driver.
48 * @{
49 */
50
51
52 #ifndef _APP_I2C_H_
53 #define _APP_I2C_H_
54
55 #include "grx_hal.h"
56 #include "app_io.h"
57 #include "app_dma.h"
58 #include "app_drv_error.h"
59 #include "app_drv_config.h"
60 #include <stdint.h>
61 #include <stdbool.h>
62 #include <stdio.h>
63
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67
68 #ifdef HAL_I2C_MODULE_ENABLED
69
70 /** @addtogroup APP_I2C_ENUM Enumerations
71 * @{
72 */
73
74 /**
75 * @brief I2C module Enumerations definition
76 */
77 typedef enum
78 {
79 APP_I2C_ID_0, /**< I2C module 0. */
80 APP_I2C_ID_1, /**< I2C module 1. */
81 #if (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR5526X) || (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR5525X)
82 APP_I2C_ID_2, /**< I2C module 2. */
83 APP_I2C_ID_3, /**< I2C module 3. */
84 #endif
85 #if (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR5526X)
86 APP_I2C_ID_4, /**< I2C module 4. */
87 APP_I2C_ID_5, /**< I2C module 5. */
88 #endif
89 APP_I2C_ID_MAX /**< Only for check parameter, not used as input parameters. */
90 } app_i2c_id_t;
91
92 /**
93 * @brief I2C role Enumerations definition
94 */
95 typedef enum
96 {
97 APP_I2C_ROLE_MASTER, /**< I2C master device. */
98 APP_I2C_ROLE_SLAVE, /**< I2C slave device. */
99 APP_I2C_ROLE_MAX, /**< Only for check parameter, not used as input parameters. */
100 } app_i2c_role_t;
101
102 /**
103 * @brief I2C event Enumerations definition
104 */
105 typedef enum
106 {
107 APP_I2C_EVT_ERROR, /**< Error reported by I2C peripheral. */
108 APP_I2C_EVT_TX_CPLT, /**< Requested TX transfer completed. */
109 APP_I2C_EVT_RX_DATA, /**< Requested RX transfer completed. */
110 APP_I2C_ABORT, /**< abort reported by I2C peripheral. */
111 } app_i2c_evt_type_t;
112 /** @} */
113
114 /** @addtogroup APP_I2C_STRUCTURES Structures
115 * @{
116 */
117 /**
118 * @brief I2C pins Structures
119 */
120 typedef struct
121 {
122 app_io_type_t type; /**< Specifies the type of SPI IO. */
123 app_io_mux_t mux; /**< Specifies the Peripheral to be connected to the selected pins. */
124 uint32_t pin; /**< Specifies the IO pins to be configured.
125 This parameter can be any value of @ref GR5xxx_pins. */
126 app_io_pull_t pull; /**< Specifies the Pull-up or Pull-Down activation for the selected pins. */
127 } app_i2c_pin_t;
128
129 /**
130 * @brief I2C pins config Structures
131 */
132 typedef struct
133 {
134 app_i2c_pin_t scl; /**< Set the configuration of I2C SCL pin. */
135 app_i2c_pin_t sda; /**< Set the configuration of I2C SDA pin. */
136 } app_i2c_pin_cfg_t;
137
138 /**
139 * @brief I2C operate mode Enumerations definition
140 */
141 typedef struct
142 {
143 dma_regs_t *tx_dma_instance;/**< Specifies the TX DMA instance.*/
144 dma_regs_t *rx_dma_instance;/**< Specifies the RX DMA instance.*/
145 dma_channel_t tx_dma_channel; /**< Specifies the dma channel of I2C TX. */
146 dma_channel_t rx_dma_channel; /**< Specifies the dma channel of I2C RX. */
147 } app_i2c_dma_cfg_t;
148
149 /**
150 * @brief I2C event structure definition
151 */
152 typedef struct
153 {
154 app_i2c_evt_type_t type; /**< Type of event. */
155 union
156 {
157 uint32_t error_code; /**< I2C Error code. */
158 uint16_t size; /**< I2C transmitted/received counter. */
159 } data; /**< Data of event. */
160 uint16_t slave_addr; /**< I2C slave address. */
161 } app_i2c_evt_t;
162
163 /** @} */
164
165 /** @addtogroup APP_I2C_ENUM Enumerations
166 * @{
167 */
168 /**@brief App i2c state types. */
169 typedef enum
170 {
171 APP_I2C_INVALID = 0,
172 APP_I2C_ACTIVITY,
173 #ifdef APP_DRIVER_WAKEUP_CALL_FUN
174 APP_I2C_SLEEP,
175 #endif
176 } app_i2c_state_t;
177
178 /**@brief App i2c dma state types. */
179 typedef enum
180 {
181 APP_I2C_DMA_INVALID = 0,
182 APP_I2C_DMA_ACTIVITY,
183 } app_i2c_dma_state_t;
184
185 /** @} */
186
187 /** @addtogroup APP_I2C_TYPEDEFS Type definitions
188 * @{
189 */
190 /**
191 * @brief I2C event callback definition
192 */
193 typedef void (*app_i2c_evt_handler_t)(app_i2c_evt_t *p_evt);
194
195 /** @} */
196
197 /** @addtogroup APP_I2C_STRUCTURES Structures
198 * @{
199 */
200 /**
201 * @brief I2C device structure definition
202 */
203 typedef struct
204 {
205 app_i2c_evt_handler_t evt_handler; /**< I2C event callback definition. */
206 i2c_handle_t handle; /**< I2C handle definition. */
207 app_i2c_role_t role; /**< I2C role Enumerations definition. */
208 app_i2c_pin_cfg_t *p_pin_cfg; /**< I2C pins config Structures. */
209 dma_id_t dma_id[2]; /**< DMA id definition. */
210 app_i2c_state_t i2c_state; /**< I2C state types. */
211 app_i2c_dma_state_t i2c_dma_state; /**< I2C dma state types. */
212 volatile bool start_flag; /**< Start flag definition. */
213 uint16_t slv_dev_addr; /**< I2C Slave address. */
214 } i2c_env_t;
215
216 /**
217 * @brief I2C parameters structure definition
218 */
219 typedef struct
220 {
221 app_i2c_id_t id; /**< specified I2C module ID. */
222 app_i2c_role_t role; /**< specified the role of I2C. */
223 app_i2c_pin_cfg_t pin_cfg; /**< the pin configuration information for the specified I2C module. */
224 app_i2c_dma_cfg_t dma_cfg; /**< I2C operate mode. */
225 i2c_init_t init; /**< I2C communication parameters. */
226 i2c_env_t i2c_dev; /**< I2C device structure definition. */
227 } app_i2c_params_t;
228
229 /** @} */
230
231 /* Exported functions --------------------------------------------------------*/
232 /** @addtogroup HAL_APP_I2C_DRIVER_FUNCTIONS Functions
233 * @{
234 */
235 /**
236 ****************************************************************************************
237 * @brief Initialize the APP I2C DRIVER according to the specified parameters
238 * in the app_i2c_params_t and app_i2c_evt_handler_t.
239 * @note If interrupt mode is set, you can use blocking mode. Conversely, if blocking mode
240 * is set, you can't use interrupt mode.
241 *
242 * @param[in] p_params: Pointer to app_i2c_params_t parameter which contains the
243 * configuration information for the specified I2C module.
244 * @param[in] evt_handler: I2C user callback function.
245 *
246 * @return Result of initialization.
247 ****************************************************************************************
248 */
249 uint16_t app_i2c_init(app_i2c_params_t *p_params, app_i2c_evt_handler_t evt_handler);
250
251 /**
252 ****************************************************************************************
253 * @brief De-initialize the APP I2C DRIVER peripheral.
254 *
255 * @param[in] id: De-initialize for a specific ID.
256 *
257 * @return Result of De-initialization.
258 ****************************************************************************************
259 */
260 uint16_t app_i2c_deinit(app_i2c_id_t id);
261
262 /**
263 ****************************************************************************************
264 * @brief Receive in master or slave mode an amount of data in blocking mode.
265 *
266 * @param[in] id: which I2C module want to receive.
267 * @param[in] target_address: Target device address: The device 7 bits address value in datasheet
268 must be shifted at right before call interface.
269 * @param[in] p_data: Pointer to data buffer
270 * @param[in] size: Amount of data to be sent
271 * @param[in] timeout: Timeout duration
272 *
273 * @return Result of operation.
274 ****************************************************************************************
275 */
276 uint16_t app_i2c_receive_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout);
277
278 /**
279 ****************************************************************************************
280 * @brief Receive in master or slave mode an amount of data in non-blocking mode with Interrupt/DMA.
281 *
282 * @param[in] id: which I2C module want to receive.
283 * @param[in] target_address: Target device address: The device 7 bits address value in datasheet
284 must be shifted at right before call interface.
285 * @param[in] p_data: Pointer to data buffer
286 * @param[in] size: Amount of data to be sent
287 *
288 * @return Result of operation.
289 ****************************************************************************************
290 */
291 uint16_t app_i2c_receive_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size);
292
293 /**
294 ****************************************************************************************
295 * @brief Transmits in master or slave mode an amount of data in blocking mode.
296 *
297 * @param[in] id: which I2C module want to transmit.
298 * @param[in] target_address: Target device address: The device 7 bits address value in datasheet
299 must be shifted at right before call interface.
300 * @param[in] p_data: Pointer to data buffer
301 * @param[in] size: Amount of data to be sent
302 * @param[in] timeout: Timeout duration
303 *
304 * @return Result of operation.
305 ****************************************************************************************
306 */
307 uint16_t app_i2c_transmit_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout);
308
309 /**
310 ****************************************************************************************
311 * @brief Transmits in master or slave mode an amount of data in non-blocking mode with Interrupt/DMA.
312 *
313 * @param[in] id: which I2C module want to transmit.
314 * @param[in] target_address: Target device address: The device 7 bits address value in datasheet
315 must be shifted at right before call interface.
316 * @param[in] p_data: Pointer to data buffer
317 * @param[in] size: Amount of data to be sent
318 *
319 * @return Result of operation.
320 ****************************************************************************************
321 */
322 uint16_t app_i2c_transmit_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size);
323
324 /**
325 ****************************************************************************************
326 * @brief Read an amount of data in blocking mode from a specific memory address
327 *
328 * @param[in] id: which I2C module want to read.
329 * @param[in] dev_address: Target device address: The device 7 bits address value in datasheet must be shifted at right before call interface
330 * @param[in] mem_address: Internal memory address
331 * @param[in] mem_addr_size: Size of internal memory address
332 * @param[in] p_data: Pointer to data buffer
333 * @param[in] size: Amount of data to be sent
334 * @param[in] timeout: Timeout duration
335 *
336 * @return Result of operation.
337 ****************************************************************************************
338 */
339 uint16_t app_i2c_mem_read_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout);
340
341 /**
342 ****************************************************************************************
343 * @brief Read an amount of data in non-blocking mode with Interrupt/DMA from a specific memory address
344 *
345 * @param[in] id: which I2C module want to read.
346 * @param[in] dev_address: Target device address: The device 7 bits address value in datasheet must be shifted at right before call interface
347 * @param[in] mem_address: Internal memory address
348 * @param[in] mem_addr_size: Size of internal memory address
349 * @param[in] p_data: Pointer to data buffer
350 * @param[in] size: Amount of data to be sent
351 *
352 * @return Result of operation.
353 ****************************************************************************************
354 */
355 uint16_t app_i2c_mem_read_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size);
356
357 /**
358 ****************************************************************************************
359 * @brief Write an amount of data in blocking mode to a specific memory address
360 *
361 * @param[in] id: which I2C module want to write.
362 * @param[in] dev_address: Target device address: The device 7 bits address value in datasheet must be shifted at right before call interface
363 * @param[in] mem_address: Internal memory address
364 * @param[in] mem_addr_size: Size of internal memory address
365 * @param[in] p_data: Pointer to data buffer
366 * @param[in] size: Amount of data to be sent
367 * @param[in] timeout: Timeout duration
368 *
369 * @return Result of operation.
370 ****************************************************************************************
371 */
372 uint16_t app_i2c_mem_write_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout);
373
374 /**
375 ****************************************************************************************
376 * @brief Write an amount of data in non-blocking mode with Interrupt/DMA to a specific memory address
377 *
378 * @param[in] id: which I2C module want to write.
379 * @param[in] dev_address: Target device address: The device 7 bits address value in datasheet must be shifted at right before call interface
380 * @param[in] mem_address: Internal memory address
381 * @param[in] mem_addr_size: Size of internal memory address
382 * @param[in] p_data: Pointer to data buffer
383 * @param[in] size: Amount of data to be sent
384 *
385 * @return Result of operation.
386 ****************************************************************************************
387 */
388 uint16_t app_i2c_mem_write_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size);
389
390 /**
391 ****************************************************************************************
392 * @brief Return the I2C handle.
393 *
394 * @param[in] id: I2C Channel ID.
395 *
396 * @return Pointer to the specified ID's I2C handle.
397 ****************************************************************************************
398 */
399 i2c_handle_t *app_i2c_get_handle(app_i2c_id_t id);
400
401 /**
402 ****************************************************************************************
403 * @brief Abort a master I2C IT or DMA process communication with Interrupt
404 *
405 * @param[in] id: I2C Channel ID.
406 *
407 * @return Result of operation.
408 ****************************************************************************************
409 */
410 uint16_t app_i2c_master_abort_it(app_i2c_id_t id);
411
412 /**
413 ****************************************************************************************
414 * @brief Adjust I2C timing value to adapt to real load.
415 *
416 * @param[in] id: I2C Channel ID.
417 * @param[in] timing_type: Timing type. See I2C_Timing_type.
418 * @param[in] delta: timing change value(unit: I2C work clock cycles).
419 *
420 * @return Result of operation.
421 ****************************************************************************************
422 */
423 uint16_t app_i2c_timing_adjust(app_i2c_id_t id, uint32_t timing_type, int32_t delta);
424
425 /**
426 ****************************************************************************************
427 * @brief Get I2C timing value.
428 *
429 * @param[in] id: I2C Channel ID.
430 * @param[in] timing_type: Timing type. See I2C_Timing_type.
431 * @param[in] p_timing_value: Pointer of I2C timing value(unit: I2C work clock cycles).
432 *
433 * @return Result of operation.
434 ****************************************************************************************
435 */
436 uint16_t app_i2c_timing_get(app_i2c_id_t id, uint32_t timing_type, uint32_t *p_timing_value);
437
438 #if (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR551X)
439 /**
440 ****************************************************************************************
441 * @brief Transmits than receives in master mode or receives than transmits in slave mode with only one stop bit.
442 *
443 * @param[in] id: which I2C module want to transmit.
444 * @param[in] dev_address: Target device address: The device 7 bits address value in datasheet
445 must be shifted at right before call interface.
446 * @param[in] p_tdata: Pointer to transmit data buffer
447 * @param[in] tsize: Amount of data to be sent
448 * @param[in] p_rdata: Pointer to received data buffer
449 * @param[in] rsize: Amount of data to be receive
450 * @param[in] timeout: Timeout duration
451 *
452 * @return Result of operation.
453 ****************************************************************************************
454 */
455 uint16_t app_i2c_transmit_receive_sync(app_i2c_id_t id, uint16_t dev_address, uint8_t *p_tdata, uint16_t tsize, uint8_t *p_rdata, uint16_t rsize, uint32_t timeout);
456 #endif
457
458 /** @} */
459 #endif
460
461 #ifdef __cplusplus
462 }
463 #endif
464
465 #endif
466
467 /** @} */
468
469 /** @} */
470
471 /** @} */
472
APP_I2C_DMA_ACTIVITY
@ APP_I2C_DMA_ACTIVITY
Definition: app_i2c.h:182
app_i2c_pin_cfg_t
I2C pins config Structures.
Definition: app_i2c.h:133
app_i2c_timing_get
uint16_t app_i2c_timing_get(app_i2c_id_t id, uint32_t timing_type, uint32_t *p_timing_value)
Get I2C timing value.
app_i2c_pin_cfg_t::sda
app_i2c_pin_t sda
Definition: app_i2c.h:135
app_i2c_state_t
app_i2c_state_t
App i2c state types.
Definition: app_i2c.h:170
app_i2c_pin_t::pin
uint32_t pin
Definition: app_i2c.h:124
APP_I2C_EVT_ERROR
@ APP_I2C_EVT_ERROR
Definition: app_i2c.h:107
app_i2c_evt_t::error_code
uint32_t error_code
Definition: app_i2c.h:157
app_i2c_params_t::dma_cfg
app_i2c_dma_cfg_t dma_cfg
Definition: app_i2c.h:224
app_i2c_receive_async
uint16_t app_i2c_receive_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size)
Receive in master or slave mode an amount of data in non-blocking mode with Interrupt/DMA.
_i2c_init
I2C Configuration Structure definition.
Definition: gr533x_hal_i2c.h:160
app_i2c_params_t::i2c_dev
i2c_env_t i2c_dev
Definition: app_i2c.h:226
APP_I2C_ROLE_MASTER
@ APP_I2C_ROLE_MASTER
Definition: app_i2c.h:97
i2c_env_t::i2c_state
app_i2c_state_t i2c_state
Definition: app_i2c.h:210
_i2c_handle
I2C handle Structure definition.
Definition: gr533x_hal_i2c.h:187
app_io_pull_t
app_io_pull_t
GPIO pull Enumerations definition.
Definition: app_io.h:183
app_io_type_t
app_io_type_t
GPIO type Enumerations definition.
Definition: app_io.h:147
app_i2c_transmit_sync
uint16_t app_i2c_transmit_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout)
Transmits in master or slave mode an amount of data in blocking mode.
APP_I2C_INVALID
@ APP_I2C_INVALID
Definition: app_i2c.h:171
app_i2c_dma_cfg_t::rx_dma_instance
dma_regs_t * rx_dma_instance
Definition: app_i2c.h:144
app_i2c_master_abort_it
uint16_t app_i2c_master_abort_it(app_i2c_id_t id)
Abort a master I2C IT or DMA process communication with Interrupt.
app_i2c_evt_t::size
uint16_t size
Definition: app_i2c.h:158
app_i2c_deinit
uint16_t app_i2c_deinit(app_i2c_id_t id)
De-initialize the APP I2C DRIVER peripheral.
i2c_env_t
I2C device structure definition.
Definition: app_i2c.h:204
i2c_env_t::handle
i2c_handle_t handle
Definition: app_i2c.h:206
APP_I2C_DMA_INVALID
@ APP_I2C_DMA_INVALID
Definition: app_i2c.h:181
app_i2c_dma_cfg_t::rx_dma_channel
dma_channel_t rx_dma_channel
Definition: app_i2c.h:146
app_i2c_pin_t::mux
app_io_mux_t mux
Definition: app_i2c.h:123
app_i2c_timing_adjust
uint16_t app_i2c_timing_adjust(app_i2c_id_t id, uint32_t timing_type, int32_t delta)
Adjust I2C timing value to adapt to real load.
app_i2c_dma_cfg_t::tx_dma_instance
dma_regs_t * tx_dma_instance
Definition: app_i2c.h:143
app_i2c_pin_t::type
app_io_type_t type
Definition: app_i2c.h:122
app_io.h
Header file containing functions prototypes of GPIO app library.
APP_I2C_ROLE_MAX
@ APP_I2C_ROLE_MAX
Definition: app_i2c.h:99
i2c_env_t::start_flag
volatile bool start_flag
Definition: app_i2c.h:212
app_i2c_role_t
app_i2c_role_t
I2C role Enumerations definition.
Definition: app_i2c.h:96
app_i2c_mem_read_sync
uint16_t app_i2c_mem_read_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout)
Read an amount of data in blocking mode from a specific memory address.
app_i2c_params_t::id
app_i2c_id_t id
Definition: app_i2c.h:221
app_i2c_id_t
app_i2c_id_t
I2C module Enumerations definition.
Definition: app_i2c.h:78
app_i2c_pin_t
I2C pins Structures.
Definition: app_i2c.h:121
app_i2c_evt_handler_t
void(* app_i2c_evt_handler_t)(app_i2c_evt_t *p_evt)
I2C event callback definition.
Definition: app_i2c.h:193
app_i2c_dma_cfg_t
I2C operate mode Enumerations definition.
Definition: app_i2c.h:142
i2c_env_t::slv_dev_addr
uint16_t slv_dev_addr
Definition: app_i2c.h:213
app_i2c_params_t::pin_cfg
app_i2c_pin_cfg_t pin_cfg
Definition: app_i2c.h:223
app_i2c_params_t::role
app_i2c_role_t role
Definition: app_i2c.h:222
i2c_env_t::role
app_i2c_role_t role
Definition: app_i2c.h:207
app_i2c_mem_read_async
uint16_t app_i2c_mem_read_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size)
Read an amount of data in non-blocking mode with Interrupt/DMA from a specific memory address.
app_i2c_receive_sync
uint16_t app_i2c_receive_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout)
Receive in master or slave mode an amount of data in blocking mode.
grx_hal.h
This file contains all the functions prototypes for the HAL module driver.
app_i2c_evt_type_t
app_i2c_evt_type_t
I2C event Enumerations definition.
Definition: app_i2c.h:106
APP_I2C_ABORT
@ APP_I2C_ABORT
Definition: app_i2c.h:110
app_i2c_transmit_receive_sync
uint16_t app_i2c_transmit_receive_sync(app_i2c_id_t id, uint16_t dev_address, uint8_t *p_tdata, uint16_t tsize, uint8_t *p_rdata, uint16_t rsize, uint32_t timeout)
Transmits than receives in master mode or receives than transmits in slave mode with only one stop bi...
APP_I2C_ID_1
@ APP_I2C_ID_1
Definition: app_i2c.h:80
app_i2c_evt_t
I2C event structure definition.
Definition: app_i2c.h:153
app_i2c_pin_cfg_t::scl
app_i2c_pin_t scl
Definition: app_i2c.h:134
i2c_env_t::p_pin_cfg
app_i2c_pin_cfg_t * p_pin_cfg
Definition: app_i2c.h:208
i2c_env_t::i2c_dma_state
app_i2c_dma_state_t i2c_dma_state
Definition: app_i2c.h:211
app_i2c_get_handle
i2c_handle_t * app_i2c_get_handle(app_i2c_id_t id)
Return the I2C handle.
app_dma.h
Header file containing functions prototypes of DMA app library.
app_i2c_transmit_async
uint16_t app_i2c_transmit_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size)
Transmits in master or slave mode an amount of data in non-blocking mode with Interrupt/DMA.
APP_I2C_ACTIVITY
@ APP_I2C_ACTIVITY
Definition: app_i2c.h:172
app_i2c_pin_t::pull
app_io_pull_t pull
Definition: app_i2c.h:126
APP_I2C_EVT_TX_CPLT
@ APP_I2C_EVT_TX_CPLT
Definition: app_i2c.h:108
app_i2c_init
uint16_t app_i2c_init(app_i2c_params_t *p_params, app_i2c_evt_handler_t evt_handler)
Initialize the APP I2C DRIVER according to the specified parameters in the app_i2c_params_t and app_i...
app_io_mux_t
app_io_mux_t
GPIO mux Enumerations definition.
Definition: app_io.h:255
app_i2c_evt_t::slave_addr
uint16_t slave_addr
Definition: app_i2c.h:160
app_i2c_dma_cfg_t::tx_dma_channel
dma_channel_t tx_dma_channel
Definition: app_i2c.h:145
APP_I2C_EVT_RX_DATA
@ APP_I2C_EVT_RX_DATA
Definition: app_i2c.h:109
app_i2c_evt_t::type
app_i2c_evt_type_t type
Definition: app_i2c.h:154
app_i2c_params_t
I2C parameters structure definition.
Definition: app_i2c.h:220
app_drv_error.h
Header file of app driver error code.
app_drv_config.h
Header file of app driver config code.
app_i2c_params_t::init
i2c_init_t init
Definition: app_i2c.h:225
app_i2c_mem_write_sync
uint16_t app_i2c_mem_write_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout)
Write an amount of data in blocking mode to a specific memory address.
app_i2c_dma_state_t
app_i2c_dma_state_t
App i2c dma state types.
Definition: app_i2c.h:180
APP_I2C_ID_0
@ APP_I2C_ID_0
Definition: app_i2c.h:79
dma_id_t
int16_t dma_id_t
DMA id definition.
Definition: app_dma.h:98
i2c_env_t::evt_handler
app_i2c_evt_handler_t evt_handler
Definition: app_i2c.h:205
app_i2c_mem_write_async
uint16_t app_i2c_mem_write_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size)
Write an amount of data in non-blocking mode with Interrupt/DMA to a specific memory address.
APP_I2C_ID_MAX
@ APP_I2C_ID_MAX
Definition: app_i2c.h:89
dma_channel_t
dma_channel_t
HAL DMA Channel Enumerations definition.
Definition: gr533x_hal_dma.h:94
APP_I2C_ROLE_SLAVE
@ APP_I2C_ROLE_SLAVE
Definition: app_i2c.h:98