18#ifndef __ST_HAL_I2C_H__
19#define __ST_HAL_I2C_H__
31#define HAL_I2C_ERROR_NONE 0x00000000U
32#define HAL_I2C_ERROR_BERR 0x00000001U
33#define HAL_I2C_ERROR_ARLO 0x00000002U
34#define HAL_I2C_ERROR_AF 0x00000004U
35#define HAL_I2C_ERROR_OVR 0x00000008U
36#define HAL_I2C_ERROR_DMA 0x00000010U
37#define HAL_I2C_ERROR_TIMEOUT 0x00000020U
38#define HAL_I2C_ERROR_SIZE 0x00000040U
39#define HAL_I2C_ERROR_DMA_PARAM 0x00000080U
40#define HAL_I2C_WRONG_START 0x00000200U
42#define I2C_DUTYCYCLE_2 0x00000000U
43#define I2C_DUTYCYCLE_16_9 0
44#define I2C_ADDRESSINGMODE_7BIT VSF_I2C_ADDR_7_BITS
45#define I2C_ADDRESSINGMODE_10BIT VSF_I2C_ADDR_10_BITS
46#define I2C_MEMADD_SIZE_8BIT 1
47#define I2C_MEMADD_SIZE_16BIT 2
49#ifdef VSF_I2C_DUAL_ADDRESS_DISABLE
50# define I2C_DUALADDRESS_DISABLE VSF_I2C_DUAL_ADDRESS_DISABLE
52# define I2C_DUALADDRESS_DISABLE 0x00000000U
54#ifdef VSF_I2C_DUAL_ADDRESS_ENABLE
55# define I2C_DUALADDRESS_ENABLE VSF_I2C_DUAL_ADDRESS_ENABLE
57# define I2C_DUALADDRESS_ENABLE 0x00000000U
59#ifdef VSF_I2C_GENERALCALL_DISABLE
60# define I2C_GENERALCALL_DISABLE VSF_I2C_GENERALCALL_DISABLE
62# define I2C_GENERALCALL_DISABLE 0x00000000U
64#ifdef VSF_I2C_GENERALCALL_ENABLE
65# define I2C_GENERALCALL_ENABLE I2C_GENERALCALL_ENABLE
67# define I2C_GENERALCALL_ENABLE 0x00000000U
70#ifdef VSF_I2C_NO_STRETCH_DISABLE
71# define I2C_NOSTRETCH_DISABLE VSF_I2C_NO_STRETCH_DISABLE
73# define I2C_NOSTRETCH_DISABLE 0x00000000U
75#ifdef VSF_I2C_NO_STRETCH_ENABLE
76# define I2C_NOSTRETCH_ENABLE I2C_NO_STRETCH_ENABLE
78# define I2C_NOSTRETCH_ENABLE 0x00000000U
81#ifdef VSF_DIRECTION_RECEIVE
82# define I2C_DIRECTION_RECEIVE VSF_DIRECTION_RECEIVE
84# define I2C_DIRECTION_RECEIVE 0x00000000U
86#ifdef VSF_I2C_DIRECTION_RECEIVE
87# define I2C_DIRECTION_TRANSMIT VSF_I2C_DIRECTION_RECEIVE
89# define I2C_DIRECTION_TRANSMIT 0x00000000U
92#ifdef VSF_I2C_FRAME_EXTEND_MASK
93# ifdef VSF_I2C_FIRST_FRAME
94# define I2C_FIRST_FRAME VSF_I2C_FIRST_FRAME
96# ifdef VSF_I2C_FIRST_AND_NEXT_FRAME
97# define I2C_FIRST_AND_NEXT_FRAME 0x00000002U
99# ifdef VSF_I2C_NEXT_FRAME
100# define I2C_NEXT_FRAME 0x00000004U
102# ifdef VSF_I2C_FIRST_AND_LAST_FRAME
103# define I2C_FIRST_AND_LAST_FRAME 0x00000008U
105# ifdef VSF_I2C_LAST_FRAME_NO_STOP
106# define I2C_LAST_FRAME_NO_STOP 0x00000010U
108# ifdef VSF_I2C_LAST_FRAME
109# define I2C_LAST_FRAME 0x00000020U
113#define I2C_FIRST_FRAME 0x00000001U
114#define I2C_FIRST_AND_NEXT_FRAME 0x00000002U
115#define I2C_NEXT_FRAME 0x00000004U
116#define I2C_FIRST_AND_LAST_FRAME 0x00000008U
117#define I2C_LAST_FRAME_NO_STOP 0x00000010U
118#define I2C_LAST_FRAME 0x00000020U
120#define I2C_OTHER_FRAME (0x00AA0000U)
121#define I2C_OTHER_AND_LAST_FRAME (0xAA000000U)
123#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
124# define HAL_I2C_ERROR_INVALID_CALLBACK 0x00000100U
130#define IS_I2C_ALL_INSTANCE(INSTANCE) 1
132#define IS_I2C_DUTY_CYCLE(CYCLE) \
133 (((CYCLE) == I2C_DUTYCYCLE_2) || ((CYCLE) == I2C_DUTYCYCLE_16_9))
134#define IS_I2C_ADDRESSING_MODE(ADDRESS) \
135 (((ADDRESS) == I2C_ADDRESSINGMODE_7BIT) || \
136 ((ADDRESS) == I2C_ADDRESSINGMODE_10BIT))
137#define IS_I2C_DUAL_ADDRESS(ADDRESS) \
138 (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \
139 ((ADDRESS) == I2C_DUALADDRESS_ENABLE))
140#define IS_I2C_GENERAL_CALL(CALL) \
141 (((CALL) == I2C_GENERALCALL_DISABLE) || ((CALL) == I2C_GENERALCALL_ENABLE))
142#define IS_I2C_NO_STRETCH(STRETCH) \
143 (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \
144 ((STRETCH) == I2C_NOSTRETCH_ENABLE))
145#define IS_I2C_MEMADD_SIZE(SIZE) \
146 (((SIZE) == I2C_MEMADD_SIZE_8BIT) || ((SIZE) == I2C_MEMADD_SIZE_16BIT))
147#define IS_I2C_CLOCK_SPEED(SPEED) (((SPEED) > 0U) && ((SPEED) <= 400000U))
148#define IS_I2C_OWN_ADDRESS1(ADDRESS1) (((ADDRESS1) & 0xFFFFFC00U) == 0U)
149#define IS_I2C_OWN_ADDRESS2(ADDRESS2) (((ADDRESS2) & 0xFFFFFF01U) == 0U)
150#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) \
151 (((REQUEST) == I2C_FIRST_FRAME) || \
152 ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \
153 ((REQUEST) == I2C_NEXT_FRAME) || \
154 ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \
155 ((REQUEST) == I2C_LAST_FRAME) || ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \
156 IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
158#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) \
159 (((REQUEST) == I2C_OTHER_FRAME) || ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))
161#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
162# define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) \
164 (__HANDLE__)->State = HAL_I2C_STATE_RESET; \
165 (__HANDLE__)->MspInitCallback = NULL; \
166 (__HANDLE__)->MspDeInitCallback = NULL; \
169# define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) \
170 ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
209#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
210typedef struct __I2C_HandleTypeDef {
232#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
233 void (*MasterTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
234 void (*MasterRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
235 void (*SlaveTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
236 void (*SlaveRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
237 void (*ListenCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
238 void (*MemTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
239 void (*MemRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
240 void (*ErrorCallback)(
struct __I2C_HandleTypeDef *hi2c);
241 void (*AbortCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
242 void (*AddrCallback)(
struct __I2C_HandleTypeDef *hi2c,
244 void (*MspInitCallback)(
struct __I2C_HandleTypeDef *hi2c);
245 void (*MspDeInitCallback)(
struct __I2C_HandleTypeDef *hi2c);
249#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
251 HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U,
252 HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U,
253 HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U,
254 HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U,
255 HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U,
256 HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U,
257 HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U,
258 HAL_I2C_ERROR_CB_ID = 0x07U,
259 HAL_I2C_ABORT_CB_ID = 0x08U,
261 HAL_I2C_MSPINIT_CB_ID = 0x09U,
262 HAL_I2C_MSPDEINIT_CB_ID = 0x0AU,
263} HAL_I2C_CallbackIDTypeDef;
275#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
281 HAL_I2C_CallbackIDTypeDef CallbackID,
282 pI2C_CallbackTypeDef pCallback);
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
HAL_StatusTypeDef
Definition sthal_def.h:61
HAL_LockTypeDef
Definition sthal_def.h:68
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1260
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1734
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1426
HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1525
HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1762
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1339
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:111
HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1207
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1368
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1163
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:71
HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter)
Definition sthal_i2c.c:1774
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1464
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Definition sthal_i2c.c:101
HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter)
Definition sthal_i2c.c:1796
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1312
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1142
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:132
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:83
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1410
uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1768
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1230
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1133
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1320
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1740
HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1492
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:89
HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1394
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:118
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1289
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1297
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1124
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1358
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:989
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:77
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:138
HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1575
HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1184
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1304
HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1091
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:65
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:125
HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1378
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
Definition sthal_i2c.c:1711
HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1746
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1663
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1418
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
Definition sthal_i2c.c:1629
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:95
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1445
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1686
HAL_I2C_ModeTypeDef
Definition sthal_i2c.h:191
@ HAL_I2C_MODE_MASTER
Definition sthal_i2c.h:193
@ HAL_I2C_MODE_MEM
Definition sthal_i2c.h:195
@ HAL_I2C_MODE_SLAVE
Definition sthal_i2c.h:194
@ HAL_I2C_MODE_NONE
Definition sthal_i2c.h:192
vsf_i2c_t I2C_TypeDef
Definition sthal_i2c.h:175
HAL_I2C_StateTypeDef
Definition sthal_i2c.h:177
@ HAL_I2C_STATE_BUSY
Definition sthal_i2c.h:180
@ HAL_I2C_STATE_LISTEN
Definition sthal_i2c.h:183
@ HAL_I2C_STATE_BUSY_TX_LISTEN
Definition sthal_i2c.h:184
@ HAL_I2C_STATE_ABORT
Definition sthal_i2c.h:186
@ HAL_I2C_STATE_TIMEOUT
Definition sthal_i2c.h:187
@ HAL_I2C_STATE_BUSY_RX
Definition sthal_i2c.h:182
@ HAL_I2C_STATE_BUSY_RX_LISTEN
Definition sthal_i2c.h:185
@ HAL_I2C_STATE_RESET
Definition sthal_i2c.h:178
@ HAL_I2C_STATE_BUSY_TX
Definition sthal_i2c.h:181
@ HAL_I2C_STATE_READY
Definition sthal_i2c.h:179
@ HAL_I2C_STATE_ERROR
Definition sthal_i2c.h:188
Definition sthal_dma.h:103
Definition sthal_i2c.h:212
volatile uint32_t EventCount
Definition sthal_i2c.h:230
volatile uint16_t XferCount
Definition sthal_i2c.h:218
uint16_t XferSize
Definition sthal_i2c.h:217
uint8_t * pBuffPtr
Definition sthal_i2c.h:216
volatile uint32_t Devaddress
Definition sthal_i2c.h:227
volatile HAL_I2C_StateTypeDef State
Definition sthal_i2c.h:224
I2C_InitTypeDef Init
Definition sthal_i2c.h:215
volatile HAL_I2C_ModeTypeDef Mode
Definition sthal_i2c.h:225
volatile uint32_t MemaddSize
Definition sthal_i2c.h:229
volatile uint32_t XferOptions
Definition sthal_i2c.h:219
DMA_HandleTypeDef * hdmarx
Definition sthal_i2c.h:222
I2C_TypeDef * Instance
Definition sthal_i2c.h:214
DMA_HandleTypeDef * hdmatx
Definition sthal_i2c.h:221
volatile uint32_t Memaddress
Definition sthal_i2c.h:228
HAL_LockTypeDef Lock
Definition sthal_i2c.h:223
volatile uint32_t ErrorCode
Definition sthal_i2c.h:226
volatile uint32_t PreviousState
Definition sthal_i2c.h:220
Definition sthal_i2c.h:198
uint32_t GeneralCallMode
Definition sthal_i2c.h:205
uint32_t NoStretchMode
Definition sthal_i2c.h:206
uint32_t ClockSpeed
Definition sthal_i2c.h:199
uint32_t AddressingMode
Definition sthal_i2c.h:202
uint32_t OwnAddress2
Definition sthal_i2c.h:204
uint32_t DutyCycle
Definition sthal_i2c.h:200
uint32_t OwnAddress1
Definition sthal_i2c.h:201
uint32_t DualAddressMode
Definition sthal_i2c.h:203
I2C instance structure for multi-class support.
Definition vsf_template_i2c.h:976