Go to the documentation of this file.
52 #ifndef __GR55xx_HAL_I2C_H__
53 #define __GR55xx_HAL_I2C_H__
273 #define HAL_I2C_ERROR_NONE (0x00000000U)
274 #define HAL_I2C_ERROR_ARB_LOST (0x00000002U)
275 #define HAL_I2C_ERROR_NOACK (0x00000004U)
276 #define HAL_I2C_ERROR_OVER (0x00000008U)
277 #define HAL_I2C_ERROR_DMA (0x00000010U)
278 #define HAL_I2C_ERROR_TIMEOUT (0x00000020U)
284 #define I2C_SPEED_100K LL_I2C_SPEED_100K
285 #define I2C_SPEED_400K LL_I2C_SPEED_400K
286 #define I2C_SPEED_1000K LL_I2C_SPEED_1000K
287 #define I2C_SPEED_2000K LL_I2C_SPEED_2000K
293 #define I2C_ADDRESSINGMODE_7BIT (0x00000001U)
294 #define I2C_ADDRESSINGMODE_10BIT (0x00000002U)
300 #define I2C_GENERALCALL_DISABLE (0x00000000U)
301 #define I2C_GENERALCALL_ENABLE (0x00000001U)
307 #define I2C_MEMADD_SIZE_8BIT (0x00000001U)
308 #define I2C_MEMADD_SIZE_16BIT (0x00000002U)
314 #define I2C_FIRST_FRAME (0x00000000U)
315 #define I2C_FIRST_AND_NEXT_FRAME (0x00000001U)
316 #define I2C_NEXT_FRAME (0x00000002U)
317 #define I2C_FIRST_AND_LAST_FRAME (0x00000003U)
318 #define I2C_LAST_FRAME (0x00000004U)
324 #define I2C_DEFAULT_CONFIG \
326 .speed = I2C_SPEED_400K, \
327 .own_address = 0x55U, \
328 .addressing_mode = I2C_ADDRESSINGMODE_7BIT, \
329 .general_call_mode = I2C_GENERALCALL_DISABLE, \
343 #define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->state = HAL_I2C_STATE_RESET)
356 #define IS_I2C_SPEED(__SPEED__) (((__SPEED__) == I2C_SPEED_100K) || \
357 ((__SPEED__) == I2C_SPEED_400K) || \
358 ((__SPEED__) == I2C_SPEED_1000K) || \
359 ((__SPEED__) == I2C_SPEED_2000K))
366 #define IS_I2C_ADDRESSING_MODE(__MODE__) (((__MODE__) == I2C_ADDRESSINGMODE_7BIT) || \
367 ((__MODE__) == I2C_ADDRESSINGMODE_10BIT))
374 #define IS_I2C_GENERAL_CALL(__CALL__) (((__CALL__) == I2C_GENERALCALL_DISABLE) || \
375 ((__CALL__) == I2C_GENERALCALL_ENABLE))
382 #define IS_I2C_MEMADD_SIZE(__SIZE__) (((__SIZE__) == I2C_MEMADD_SIZE_8BIT) || \
383 ((__SIZE__) == I2C_MEMADD_SIZE_16BIT))
390 #define IS_TRANSFER_REQUEST(__REQUEST__) (((__REQUEST__) == I2C_CMD_SLV_NONE) || \
391 ((__REQUEST__) == I2C_CMD_MST_WRITE) || \
392 ((__REQUEST__) == I2C_CMD_MST_READ) || \
393 ((__REQUEST__) == I2C_CMD_MST_GEN_STOP) || \
394 ((__REQUEST__) == I2C_CMD_MST_GEN_RESTART))
401 #define IS_I2C_TRANSFER_OPTIONS_REQUEST(__REQUEST__) (((__REQUEST__) == I2C_FIRST_FRAME) || \
402 ((__REQUEST__) == I2C_FIRST_AND_NEXT_FRAME) || \
403 ((__REQUEST__) == I2C_NEXT_FRAME) || \
404 ((__REQUEST__) == I2C_FIRST_AND_LAST_FRAME) || \
405 ((__REQUEST__) == I2C_LAST_FRAME))
412 #define IS_I2C_SLV_ADDRESS(__ADDRESS__) ((__ADDRESS__) < 0x03FFU)
419 #define IS_I2C_OWN_ADDRESS(__ADDRESS__) ((((__ADDRESS__) > 0x0007U) && ((__ADDRESS__) < 0x0078U)) || \
420 (((__ADDRESS__) > 0x007FU) && ((__ADDRESS__) < 0x03FFU)))
427 #define I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0xFF00U))) >> 8U)))
434 #define I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU))))
void(* i2c_mem_tx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:251
hal_status_t hal_i2c_slave_sequential_receive_it(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size, uint32_t xfer_options)
Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt.
void(* i2c_msp_init)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:244
void(* i2c_slave_tx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:248
hal_lock_t
HAL Lock structures definition.
Definition: gr55xx_hal_def.h:81
hal_status_t hal_i2c_mem_read_it(i2c_handle_t *p_i2c, 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 from a specific memory address.
Header file containing functions prototypes of I2C LL library.
hal_status_t hal_i2c_deinit(i2c_handle_t *p_i2c)
De-initialize the I2C peripheral.
void hal_i2c_listen_cplt_callback(i2c_handle_t *p_i2c)
Listen Complete callback.
hal_status_t hal_i2c_master_sequential_receive_it(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size, uint32_t xfer_options)
Sequentially receive in master I2C mode an amount of data in non-blocking mode with Interrupt.
@ HAL_I2C_MODE_SLAVE
Definition: gr55xx_hal_i2c.h:146
uint32_t hal_i2c_get_error(i2c_handle_t *p_i2c)
Return the I2C error code.
hal_status_t hal_i2c_master_receive_dma(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size)
Receive in master mode an amount of data in non-blocking mode with DMA.
@ HAL_I2C_MODE_MEM
Definition: gr55xx_hal_i2c.h:147
@ HAL_I2C_STATE_READY
Definition: gr55xx_hal_i2c.h:103
hal_status_t hal_i2c_init(i2c_handle_t *p_i2c)
Initializes the I2C according to the specified parameters in the i2c_init_t and initialize the associ...
uint16_t xfer_size
Definition: gr55xx_hal_i2c.h:198
i2c_init_t init
Definition: gr55xx_hal_i2c.h:194
hal_status_t(* xfer_isr)(struct _i2c_handle *p_i2c, uint32_t it_source, uint32_t abort_sources)
Definition: gr55xx_hal_i2c.h:209
hal_status_t hal_i2c_slave_receive_it(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size)
Receive in slave mode an amount of data in non-blocking mode with Interrupt.
hal_status_t hal_i2c_master_receive(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size, uint32_t timeout)
Receives in master mode an amount of data in blocking mode.
@ HAL_I2C_STATE_RESET
Definition: gr55xx_hal_i2c.h:102
void hal_i2c_master_tx_cplt_callback(i2c_handle_t *p_i2c)
Master Tx Transfer completed callback.
uint32_t own_address
Definition: gr55xx_hal_i2c.h:171
dma_handle_t * p_dmarx
Definition: gr55xx_hal_i2c.h:214
I2C Configuration Structure definition.
Definition: gr55xx_hal_i2c.h:167
@ HAL_I2C_STATE_BUSY_TX_LISTEN
Definition: gr55xx_hal_i2c.h:108
struct _hal_i2c_callback hal_i2c_callback_t
HAL_I2C Callback function definition.
@ HAL_I2C_STATE_BUSY_RX_LISTEN
Definition: gr55xx_hal_i2c.h:110
void(* i2c_mem_rx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:252
hal_status_t hal_i2c_slave_receive_dma(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size)
Receive in slave mode an amount of data in non-blocking mode with DMA.
I2C handle Structure definition.
Definition: gr55xx_hal_i2c.h:191
__IO uint32_t previous_state
Definition: gr55xx_hal_i2c.h:207
hal_status_t hal_i2c_mem_write_it(i2c_handle_t *p_i2c, 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 to a specific memory address.
hal_status_t hal_i2c_master_sequential_transmit_it(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size, uint32_t xfer_options)
Sequentially transmit in master I2C mode an amount of data in non-blocking mode with Interrupt.
HAL_I2C Callback function definition.
Definition: gr55xx_hal_i2c.h:243
void(* i2c_listen_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:250
hal_status_t hal_i2c_master_transmit_it(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size)
Transmit in master mode an amount of data in non-blocking mode with Interrupt.
void(* i2c_error_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:253
hal_status_t hal_i2c_slave_transmit_dma(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size)
Transmit in slave mode an amount of data in non-blocking mode with DMA.
struct _i2c_init i2c_init_t
I2C Configuration Structure definition.
void(* i2c_abort_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:254
struct _i2c_handle i2c_handle_t
I2C handle Structure definition.
uint32_t retention[10]
Definition: gr55xx_hal_i2c.h:224
hal_status_t hal_i2c_master_transmit_dma(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size)
Transmit in master mode an amount of data in non-blocking mode with DMA.
void(* i2c_slave_rx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:249
void(* i2c_msp_deinit)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:245
@ HAL_I2C_MODE_MASTER
Definition: gr55xx_hal_i2c.h:145
__IO uint32_t error_code
Definition: gr55xx_hal_i2c.h:222
hal_status_t hal_i2c_mem_read_dma(i2c_handle_t *p_i2c, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size)
Reads an amount of data in non-blocking mode with DMA from a specific memory address.
void hal_i2c_slave_rx_cplt_callback(i2c_handle_t *p_i2c)
Slave Rx Transfer completed callback.
dma_handle_t * p_dmatx
Definition: gr55xx_hal_i2c.h:212
@ HAL_I2C_STATE_BUSY_RX
Definition: gr55xx_hal_i2c.h:106
hal_status_t hal_i2c_slave_sequential_transmit_it(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size, uint32_t xfer_options)
Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt.
__IO hal_i2c_mode_t mode
Definition: gr55xx_hal_i2c.h:220
@ HAL_I2C_STATE_BUSY_TX
Definition: gr55xx_hal_i2c.h:105
hal_i2c_state_t
HAL I2C State Enumerations definition.
Definition: gr55xx_hal_i2c.h:101
__IO hal_i2c_state_t state
Definition: gr55xx_hal_i2c.h:218
uint32_t general_call_mode
Definition: gr55xx_hal_i2c.h:177
void hal_i2c_mem_rx_cplt_callback(i2c_handle_t *p_i2c)
Memory Rx Transfer completed callback.
hal_status_t hal_i2c_suspend_reg(i2c_handle_t *p_i2c)
Suspend some registers related to I2C configuration before sleep.
hal_status_t hal_i2c_slave_transmit(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size, uint32_t timeout)
Transmits in slave mode an amount of data in blocking mode.
void hal_i2c_master_rx_cplt_callback(i2c_handle_t *p_i2c)
Master Rx Transfer completed callback.
hal_status_t hal_i2c_slave_receive(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size, uint32_t timeout)
Receive in slave mode an amount of data in blocking mode.
@ HAL_I2C_STATE_TIMEOUT
Definition: gr55xx_hal_i2c.h:113
hal_status_t hal_i2c_slave_transmit_it(i2c_handle_t *p_i2c, uint8_t *p_data, uint16_t size)
Transmit in slave mode an amount of data in non-blocking mode with Interrupt.
void hal_i2c_irq_handler(i2c_handle_t *p_i2c)
This function handles I2C event interrupt request.
void(* i2c_master_rx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:247
void(* i2c_master_tx_cplt_callback)(i2c_handle_t *p_i2c)
Definition: gr55xx_hal_i2c.h:246
hal_i2c_mode_t
HAL I2C Mode Enumerations definition.
Definition: gr55xx_hal_i2c.h:143
hal_status_t hal_i2c_master_abort_it(i2c_handle_t *p_i2c)
Abort a master I2C IT or DMA process communication with Interrupt.
uint32_t speed
Definition: gr55xx_hal_i2c.h:168
hal_status_t hal_i2c_mem_write_dma(i2c_handle_t *p_i2c, 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 DMA to a specific memory address.
uint32_t addressing_mode
Definition: gr55xx_hal_i2c.h:174
hal_status_t
HAL Status structures definition.
Definition: gr55xx_hal_def.h:70
hal_status_t hal_i2c_mem_write(i2c_handle_t *p_i2c, 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.
hal_status_t hal_i2c_mem_read(i2c_handle_t *p_i2c, 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.
void hal_i2c_mem_tx_cplt_callback(i2c_handle_t *p_i2c)
Memory Tx Transfer completed callback.
@ HAL_I2C_STATE_ABORT
Definition: gr55xx_hal_i2c.h:112
hal_status_t hal_i2c_master_transmit(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size, uint32_t timeout)
Transmits in master mode an amount of data in blocking mode.
void hal_i2c_msp_init(i2c_handle_t *p_i2c)
Initialize the I2C MSP.
hal_i2c_mode_t hal_i2c_get_mode(i2c_handle_t *p_i2c)
Returns the I2C Master, Slave, Memory or no mode.
void hal_i2c_error_callback(i2c_handle_t *p_i2c)
I2C error callback.
hal_status_t hal_i2c_master_receive_it(i2c_handle_t *p_i2c, uint16_t dev_address, uint8_t *p_data, uint16_t size)
Receive in master mode an amount of data in non-blocking mode with Interrupt.
hal_i2c_state_t hal_i2c_get_state(i2c_handle_t *p_i2c)
Return the I2C handle state.
hal_status_t hal_i2c_disable_listen_it(i2c_handle_t *p_i2c)
Disable the Master Read Request listen mode with Interrupt.
@ HAL_I2C_STATE_ERROR
Definition: gr55xx_hal_i2c.h:114
hal_status_t hal_i2c_resume_reg(i2c_handle_t *p_i2c)
Restore some registers related to I2C configuration after sleep. This function must be used in conjun...
hal_status_t hal_i2c_enable_listen_it(i2c_handle_t *p_i2c)
Enable the Master Read Request listen mode with Interrupt.
i2c_regs_t * p_instance
Definition: gr55xx_hal_i2c.h:192
void hal_i2c_abort_cplt_callback(i2c_handle_t *p_i2c)
I2C abort callback.
__IO uint32_t xfer_options
Definition: gr55xx_hal_i2c.h:204
void hal_i2c_slave_tx_cplt_callback(i2c_handle_t *p_i2c)
Slave Tx Transfer completed callback.
__IO uint16_t master_ack_count
Definition: gr55xx_hal_i2c.h:202
void hal_i2c_msp_deinit(i2c_handle_t *p_i2c)
De-initialize the I2C MSP.
uint8_t * p_buffer
Definition: gr55xx_hal_i2c.h:196
@ HAL_I2C_STATE_LISTEN
Definition: gr55xx_hal_i2c.h:107
DMA handle Structure definition.
Definition: gr55xx_hal_dma.h:179
This file contains HAL common definitions, enumeration, macros and structures definitions.
@ HAL_I2C_MODE_NONE
Definition: gr55xx_hal_i2c.h:144
hal_lock_t lock
Definition: gr55xx_hal_i2c.h:216
__IO uint16_t xfer_count
Definition: gr55xx_hal_i2c.h:200
@ HAL_I2C_STATE_BUSY
Definition: gr55xx_hal_i2c.h:104