18#ifndef __ST_HAL_I2C_H__
19#define __ST_HAL_I2C_H__
25#if defined(HAL_I2C_MODULE_ENABLED) && VSF_HAL_USE_I2C == ENABLED
33#define HAL_I2C_ERROR_NONE 0x00000000U
34#define HAL_I2C_ERROR_BERR 0x00000001U
35#define HAL_I2C_ERROR_ARLO 0x00000002U
36#define HAL_I2C_ERROR_AF 0x00000004U
37#define HAL_I2C_ERROR_OVR 0x00000008U
38#define HAL_I2C_ERROR_DMA 0x00000010U
39#define HAL_I2C_ERROR_TIMEOUT 0x00000020U
40#define HAL_I2C_ERROR_SIZE 0x00000040U
41#define HAL_I2C_ERROR_DMA_PARAM 0x00000080U
42#define HAL_I2C_WRONG_START 0x00000200U
44#define I2C_DUTYCYCLE_2 0x00000000U
45#define I2C_DUTYCYCLE_16_9 0
46#define I2C_ADDRESSINGMODE_7BIT VSF_I2C_ADDR_7_BITS
47#define I2C_ADDRESSINGMODE_10BIT VSF_I2C_ADDR_10_BITS
48#define I2C_MEMADD_SIZE_8BIT 1
49#define I2C_MEMADD_SIZE_16BIT 2
51#ifdef VSF_I2C_DUAL_ADDRESS_DISABLE
52# define I2C_DUALADDRESS_DISABLE VSF_I2C_DUAL_ADDRESS_DISABLE
54# define I2C_DUALADDRESS_DISABLE 0x00000000U
56#ifdef VSF_I2C_DUAL_ADDRESS_ENABLE
57# define I2C_DUALADDRESS_ENABLE VSF_I2C_DUAL_ADDRESS_ENABLE
59# define I2C_DUALADDRESS_ENABLE 0x00000000U
61#ifdef VSF_I2C_GENERALCALL_DISABLE
62# define I2C_GENERALCALL_DISABLE VSF_I2C_GENERALCALL_DISABLE
64# define I2C_GENERALCALL_DISABLE 0x00000000U
66#ifdef VSF_I2C_GENERALCALL_ENABLE
67# define I2C_GENERALCALL_ENABLE I2C_GENERALCALL_ENABLE
69# define I2C_GENERALCALL_ENABLE 0x00000000U
72#ifdef VSF_I2C_NO_STRETCH_DISABLE
73# define I2C_NOSTRETCH_DISABLE VSF_I2C_NO_STRETCH_DISABLE
75# define I2C_NOSTRETCH_DISABLE 0x00000000U
77#ifdef VSF_I2C_NO_STRETCH_ENABLE
78# define I2C_NOSTRETCH_ENABLE I2C_NO_STRETCH_ENABLE
80# define I2C_NOSTRETCH_ENABLE 0x00000000U
83#ifdef VSF_DIRECTION_RECEIVE
84# define I2C_DIRECTION_RECEIVE VSF_DIRECTION_RECEIVE
86# define I2C_DIRECTION_RECEIVE 0x00000000U
88#ifdef VSF_I2C_DIRECTION_RECEIVE
89# define I2C_DIRECTION_TRANSMIT VSF_I2C_DIRECTION_RECEIVE
91# define I2C_DIRECTION_TRANSMIT 0x00000000U
94#ifdef VSF_I2C_FRAME_EXTEND_MASK
95# ifdef VSF_I2C_FIRST_FRAME
96# define I2C_FIRST_FRAME VSF_I2C_FIRST_FRAME
98# ifdef VSF_I2C_FIRST_AND_NEXT_FRAME
99# define I2C_FIRST_AND_NEXT_FRAME 0x00000002U
101# ifdef VSF_I2C_NEXT_FRAME
102# define I2C_NEXT_FRAME 0x00000004U
104# ifdef VSF_I2C_FIRST_AND_LAST_FRAME
105# define I2C_FIRST_AND_LAST_FRAME 0x00000008U
107# ifdef VSF_I2C_LAST_FRAME_NO_STOP
108# define I2C_LAST_FRAME_NO_STOP 0x00000010U
110# ifdef VSF_I2C_LAST_FRAME
111# define I2C_LAST_FRAME 0x00000020U
115#define I2C_FIRST_FRAME 0x00000001U
116#define I2C_FIRST_AND_NEXT_FRAME 0x00000002U
117#define I2C_NEXT_FRAME 0x00000004U
118#define I2C_FIRST_AND_LAST_FRAME 0x00000008U
119#define I2C_LAST_FRAME_NO_STOP 0x00000010U
120#define I2C_LAST_FRAME 0x00000020U
122#define I2C_OTHER_FRAME (0x00AA0000U)
123#define I2C_OTHER_AND_LAST_FRAME (0xAA000000U)
125#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
126# define HAL_I2C_ERROR_INVALID_CALLBACK 0x00000100U
132#define IS_I2C_ALL_INSTANCE(INSTANCE) 1
134#define IS_I2C_DUTY_CYCLE(CYCLE) \
135 (((CYCLE) == I2C_DUTYCYCLE_2) || ((CYCLE) == I2C_DUTYCYCLE_16_9))
136#define IS_I2C_ADDRESSING_MODE(ADDRESS) \
137 (((ADDRESS) == I2C_ADDRESSINGMODE_7BIT) || \
138 ((ADDRESS) == I2C_ADDRESSINGMODE_10BIT))
139#define IS_I2C_DUAL_ADDRESS(ADDRESS) \
140 (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \
141 ((ADDRESS) == I2C_DUALADDRESS_ENABLE))
142#define IS_I2C_GENERAL_CALL(CALL) \
143 (((CALL) == I2C_GENERALCALL_DISABLE) || ((CALL) == I2C_GENERALCALL_ENABLE))
144#define IS_I2C_NO_STRETCH(STRETCH) \
145 (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \
146 ((STRETCH) == I2C_NOSTRETCH_ENABLE))
147#define IS_I2C_MEMADD_SIZE(SIZE) \
148 (((SIZE) == I2C_MEMADD_SIZE_8BIT) || ((SIZE) == I2C_MEMADD_SIZE_16BIT))
149#define IS_I2C_CLOCK_SPEED(SPEED) (((SPEED) > 0U) && ((SPEED) <= 400000U))
150#define IS_I2C_OWN_ADDRESS1(ADDRESS1) (((ADDRESS1) & 0xFFFFFC00U) == 0U)
151#define IS_I2C_OWN_ADDRESS2(ADDRESS2) (((ADDRESS2) & 0xFFFFFF01U) == 0U)
152#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) \
153 (((REQUEST) == I2C_FIRST_FRAME) || \
154 ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \
155 ((REQUEST) == I2C_NEXT_FRAME) || \
156 ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \
157 ((REQUEST) == I2C_LAST_FRAME) || ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \
158 IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST))
160#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) \
161 (((REQUEST) == I2C_OTHER_FRAME) || ((REQUEST) == I2C_OTHER_AND_LAST_FRAME))
163#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
164# define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) \
166 (__HANDLE__)->State = HAL_I2C_STATE_RESET; \
167 (__HANDLE__)->MspInitCallback = NULL; \
168 (__HANDLE__)->MspDeInitCallback = NULL; \
171# define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) \
172 ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
180 HAL_I2C_STATE_RESET = 0x00U,
181 HAL_I2C_STATE_READY = 0x20U,
182 HAL_I2C_STATE_BUSY = 0x24U,
183 HAL_I2C_STATE_BUSY_TX = 0x21U,
184 HAL_I2C_STATE_BUSY_RX = 0x22U,
185 HAL_I2C_STATE_LISTEN = 0x28U,
186 HAL_I2C_STATE_BUSY_TX_LISTEN = 0x29U,
187 HAL_I2C_STATE_BUSY_RX_LISTEN = 0x2AU,
188 HAL_I2C_STATE_ABORT = 0x60U,
189 HAL_I2C_STATE_TIMEOUT = 0xA0U,
190 HAL_I2C_STATE_ERROR = 0xE0U,
191} HAL_I2C_StateTypeDef;
194 HAL_I2C_MODE_NONE = 0x00U,
195 HAL_I2C_MODE_MASTER = 0x10U,
196 HAL_I2C_MODE_SLAVE = 0x20U,
197 HAL_I2C_MODE_MEM = 0x40U,
198} HAL_I2C_ModeTypeDef;
211#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
212typedef struct __I2C_HandleTypeDef {
216 I2C_TypeDef *Instance;
217 I2C_InitTypeDef
Init;
223 DMA_HandleTypeDef *hdmatx;
224 DMA_HandleTypeDef *hdmarx;
226 volatile HAL_I2C_StateTypeDef State;
227 volatile HAL_I2C_ModeTypeDef Mode;
234#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
235 void (*MasterTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
236 void (*MasterRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
237 void (*SlaveTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
238 void (*SlaveRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
239 void (*ListenCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
240 void (*MemTxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
241 void (*MemRxCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
242 void (*ErrorCallback)(
struct __I2C_HandleTypeDef *hi2c);
243 void (*AbortCpltCallback)(
struct __I2C_HandleTypeDef *hi2c);
244 void (*AddrCallback)(
struct __I2C_HandleTypeDef *hi2c,
246 void (*MspInitCallback)(
struct __I2C_HandleTypeDef *hi2c);
247 void (*MspDeInitCallback)(
struct __I2C_HandleTypeDef *hi2c);
251#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
253 HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U,
254 HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U,
255 HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U,
256 HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U,
257 HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U,
258 HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U,
259 HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U,
260 HAL_I2C_ERROR_CB_ID = 0x07U,
261 HAL_I2C_ABORT_CB_ID = 0x08U,
263 HAL_I2C_MSPINIT_CB_ID = 0x09U,
264 HAL_I2C_MSPDEINIT_CB_ID = 0x0AU,
265} HAL_I2C_CallbackIDTypeDef;
277#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1)
278typedef void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c);
279typedef void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c,
283 HAL_I2C_CallbackIDTypeDef CallbackID,
284 pI2C_CallbackTypeDef pCallback);
286 I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID);
289 I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback);
vsf_err_t(* Init)(vsf_adc_cfg_t *pCfg)
Definition adc_interface.h:38
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:1262
void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1735
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1428
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:1527
HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1763
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1341
void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:113
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:1209
HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1370
HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1165
void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:73
HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter)
Definition sthal_i2c.c:1775
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:1466
void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode)
Definition sthal_i2c.c:103
HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter)
Definition sthal_i2c.c:1797
HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1314
HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1144
void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:134
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:85
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1412
uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1769
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:1232
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:1135
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1322
void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1741
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:1494
void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:91
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:1396
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:120
HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1291
HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Definition sthal_i2c.c:1299
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:1126
HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1360
HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:991
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:79
void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:140
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:1577
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:1186
HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1306
HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1093
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:67
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:127
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:1380
HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress)
Definition sthal_i2c.c:1712
HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1747
HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1664
HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size)
Definition sthal_i2c.c:1420
HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout)
Definition sthal_i2c.c:1630
void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:97
HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t XferOptions)
Definition sthal_i2c.c:1447
HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c)
Definition sthal_i2c.c:1687
I2C instance structure for multi-class support.
Definition vsf_template_i2c.h:976