HAL I2C Types

HAL I2C Types

group I2C_Exported_Types

Typedefs

typedef struct hal_i2c_handle_s hal_i2c_handle_t

I2C handle structure type

typedef void ( * hal_i2c_cb_t ) ( hal_i2c_handle_t * hi2c )

pointer to an I2C callback function.

typedef void ( * hal_i2c_slave_addr_cb_t ) ( hal_i2c_handle_t * hi2c , hal_i2c_slave_xfer_direction_t xfer_direction , uint32_t addr_match_code )

pointer to an I2C slave address match callback function.

Enums

enum hal_i2c_xfer_opt_t

I2C Sequential Transfer Options.

Values:

enumerator HAL_I2C_XFER_FIRST_FRAME

First frame

enumerator HAL_I2C_XFER_FIRST_AND_NEXT_FRAME

First and next frame

enumerator HAL_I2C_XFER_NEXT_FRAME

Next frame

enumerator HAL_I2C_XFER_FIRST_AND_LAST_FRAME

First and last frame

enumerator HAL_I2C_XFER_LAST_FRAME

Last frame

enumerator HAL_I2C_XFER_LAST_FRAME_NO_STOP

Frame with no stop

enumerator HAL_I2C_XFER_OTHER_FRAME

Other frame with restart at each frame

enumerator HAL_I2C_XFER_OTHER_AND_LAST_FRAME

Other and last frame terminated with a stop condition

enum hal_i2c_addressing_mode_t

I2C Addressing Mode.

Values:

enumerator HAL_I2C_ADDRESSING_7BIT

Master operates in 7-bit addressing mode. 7-bit addressing

enumerator HAL_I2C_ADDRESSING_10BIT

0x00000800 10-bit addressing mode (master mode) Master operates in 10-bit addressing mode. 10-bit addressing

enum hal_i2c_slave_stretch_mode_status_t

I2C Slave Stretch Mode Status.

Values:

enumerator HAL_I2C_SLAVE_STRETCH_DISABLED

Slave Stretch Mode is disabled

enumerator HAL_I2C_SLAVE_STRETCH_ENABLED

Slave Stretch Mode is enabled

enum hal_i2c_slave_ack_general_call_status_t

I2C Slave Acknowledge General Call Status.

Values:

enumerator HAL_I2C_SLAVE_ACK_GENERAL_CALL_DISABLED

Slave Acknowledge General Call is disabled

enumerator HAL_I2C_SLAVE_ACK_GENERAL_CALL_ENABLED

Slave Acknowledge General Call is enabled

enum hal_i2c_own_addr2_mask_t

I2C Own Address2 Masks.

Values:

enumerator HAL_I2C_OWN_ADDR2_NOMASK

No mask Own Address2 No mask. No mask

enumerator HAL_I2C_OWN_ADDR2_MASK01

0x00000100 OA2[1] is masked, Only OA2[7:2] are compared Only Address2 bits[7:2] are compared. Mask 01

enumerator HAL_I2C_OWN_ADDR2_MASK02

0x00000200 OA2[2:1] is masked, Only OA2[7:3] are compared Only Address2 bits[7:3] are compared. Mask 02

enumerator HAL_I2C_OWN_ADDR2_MASK03

0x00000300 OA2[3:1] is masked, Only OA2[7:4] are compared Only Address2 bits[7:4] are compared. Mask 03

enumerator HAL_I2C_OWN_ADDR2_MASK04

0x00000400 OA2[4:1] is masked, Only OA2[7:5] are compared Only Address2 bits[7:5] are compared. Mask 04

enumerator HAL_I2C_OWN_ADDR2_MASK05

0x00000500 OA2[5:1] is masked, Only OA2[7:6] are compared Only Address2 bits[7:6] are compared. Mask 05

enumerator HAL_I2C_OWN_ADDR2_MASK06

0x00000600 OA2[6:1] is masked, Only OA2[7] are compared Only Address2 bits[7] are compared. Mask 06

enumerator HAL_I2C_OWN_ADDR2_MASK07

0x00000700 OA2[7:1] is masked, No comparison is done No comparison is done. All Address2 are acknowledged. Mask 07

enum hal_i2c_own_addr2_status_t

I2C Own Address2 Status.

Values:

enumerator HAL_I2C_OWN_ADDR2_DISABLED

I2C Own Address2 is disabled

enumerator HAL_I2C_OWN_ADDR2_ENABLED

I2C Own Address2 is enabled

enum hal_i2c_mem_addr_size_t

I2C Memory Address size.

Values:

enumerator HAL_I2C_MEM_ADDR_8BIT

8-bit memory

enumerator HAL_I2C_MEM_ADDR_16BIT

16-bit memory

enum hal_i2c_slave_xfer_direction_t

I2C Slave Transfer Direction Master Point of View.

Values:

enumerator HAL_I2C_SLAVE_DIRECTION_TRANSMIT

Write transfer request by master, slave enters receiver mode. Transmit

enumerator HAL_I2C_SLAVE_DIRECTION_RECEIVE

0x00010000 Transfer direction (slave mode) Read transfer request by master, slave enters transmitter mode. Receive

enum hal_i2c_analog_filter_status_t

I2C Analog Filter Status.

Values:

enumerator HAL_I2C_ANALOG_FILTER_DISABLED

Analog Filter is disabled

enumerator HAL_I2C_ANALOG_FILTER_ENABLED

Analog Filter is enabled

enum hal_i2c_slave_wake_up_status_t

I2C Slave Wake Up Status.

Values:

enumerator HAL_I2C_SLAVE_WAKE_UP_DISABLED

Slave Wake Up is disabled

enumerator HAL_I2C_SLAVE_WAKE_UP_ENABLED

Slave Wake Up is enabled

enum hal_i2c_fast_mode_plus_status_t

I2C Fast Mode Plus Status.

Values:

enumerator HAL_I2C_FAST_MODE_PLUS_DISABLED

Fast mode plus disabled

enumerator HAL_I2C_FAST_MODE_PLUS_ENABLED

Fast mode plus enabled

enum hal_i2c_state_t

HAL State structure definition.

Values:

enumerator HAL_I2C_STATE_RESET

Not yet initialized

enumerator HAL_I2C_STATE_INIT

Initialized but not yet configured

enumerator HAL_I2C_STATE_IDLE

Initialized and a global configuration applied

enumerator HAL_I2C_STATE_TX

Data transmission process is ongoing

enumerator HAL_I2C_STATE_RX

Data reception process is ongoing

enumerator HAL_I2C_STATE_LISTEN

Address listen mode is ongoing

enumerator HAL_I2C_STATE_TX_LISTEN

Address listen mode and data transmission process is ongoing

enumerator HAL_I2C_STATE_RX_LISTEN

Address listen mode and data reception process is ongoing

enumerator HAL_I2C_STATE_ABORT

Abort user request is ongoing

enum hal_i2c_mode_t

HAL functional mode.

Values:

enumerator HAL_I2C_MODE_NONE

No I2C communication ongoing

enumerator HAL_I2C_MODE_MASTER

I2C communication is in master mode

enumerator HAL_I2C_MODE_SLAVE

I2C communication is in slave mode

enumerator HAL_I2C_MODE_MASTER_MEM

I2C communication is in memory mode

enum hal_i2c_t

HAL I2C instance.

Values:

enumerator HAL_I2C1

Peripheral instance I2C1

enumerator HAL_I2C2

Peripheral instance I2C2

struct hal_i2c_config_t
#include <stm32c5xx_hal_i2c.h>

I2C global configuration structure definition.

Public Members

uint32_t timing

I2C_TIMINGR register value calculated by referring to I2C initialization section in the Reference Manual. This timing is directly calculated by CubeMX2. Bit 24 to 27 are reserved. A calculation helper is also available in the package. See stm32_utils_i2c.c/.h

uint32_t own_address1

First device own address. It can be a 7-bit or a 10-bit address. If the 7-bit addressing mode is selected, the device 7-bit address value must be shifted left by 1 bit. In other words, an 8-bit value is required and the bit 0 is not considered.

hal_i2c_addressing_mode_t addressing_mode

7-bit or 10-bit addressing mode

struct hal_i2c_handle_s
#include <stm32c5xx_hal_i2c.h>

I2C handle structure definition.

Public Members

hal_i2c_t instance

Peripheral instance

volatile hal_i2c_state_t global_state

Current state

uint32_t previous_state

Previous state and mode

uint8_t * p_buf_rx

Transfer buffer rx

const uint8_t * p_buf_tx

Transfer buffer tx

uint32_t xfer_size

Transfer size in bytes

volatile uint32_t xfer_count

Transfer counter in bytes

volatile hal_i2c_xfer_opt_t xfer_opt

Sequential transfer options

hal_status_t ( * xfer_isr ) ( hal_i2c_handle_t * hi2c , uint32_t it_flags , uint32_t it_sources )

Transfer IRQ handler function pointer

volatile hal_i2c_mode_t mode

Communication mode

volatile uint32_t last_error_codes

Errors limited to the last process This parameter can be a combination of I2C Error Codes

volatile uint32_t addr_event_count

Address Event counter

volatile uint32_t dev_addr

Target device address

volatile uint32_t mem_addr

Target memory address

hal_dma_handle_t * hdma_tx

Tx DMA handle

hal_dma_handle_t * hdma_rx

Rx DMA handle

const void * p_user_data

User data pointer

hal_os_semaphore_t semaphore

I2C OS semaphore

hal_i2c_cb_t p_master_tx_cplt_cb

I2C Master Tx transfer completed callback

hal_i2c_cb_t p_master_rx_cplt_cb

I2C Master Rx transfer completed callback

hal_i2c_cb_t p_slave_tx_cplt_cb

I2C Slave Tx transfer completed callback

hal_i2c_cb_t p_slave_rx_cplt_cb

I2C Slave Rx transfer completed callback

hal_i2c_cb_t p_slave_listen_cplt_cb

I2C Slave Listen complete callback

hal_i2c_slave_addr_cb_t p_slave_addr_cb

I2C Slave Address Match callback

hal_i2c_cb_t p_mem_tx_cplt_cb

I2C Memory Tx transfer completed callback

hal_i2c_cb_t p_mem_rx_cplt_cb

I2C Memory Rx transfer completed callback

hal_i2c_cb_t p_abort_cplt_cb

I2C Abort completed callback

hal_i2c_cb_t p_error_cb

I2C Error callback