mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

Full URL: https://github.com/mbedmicro/mbed/commit/f7ce4ed029cc611121464252ff28d5e8beb895b0/

NUCLEO_F303K8 - add support of the STM32F303K8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 330:c80ac197fa6a 1 /**
mbed_official 330:c80ac197fa6a 2 ******************************************************************************
mbed_official 330:c80ac197fa6a 3 * @file stm32f3xx_hal_i2c.h
mbed_official 330:c80ac197fa6a 4 * @author MCD Application Team
mbed_official 632:7687fb9c4f91 5 * @version V1.1.1
mbed_official 632:7687fb9c4f91 6 * @date 19-June-2015
mbed_official 330:c80ac197fa6a 7 * @brief Header file of I2C HAL module.
mbed_official 330:c80ac197fa6a 8 ******************************************************************************
mbed_official 330:c80ac197fa6a 9 * @attention
mbed_official 330:c80ac197fa6a 10 *
mbed_official 632:7687fb9c4f91 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 330:c80ac197fa6a 12 *
mbed_official 330:c80ac197fa6a 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 330:c80ac197fa6a 14 * are permitted provided that the following conditions are met:
mbed_official 330:c80ac197fa6a 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 330:c80ac197fa6a 16 * this list of conditions and the following disclaimer.
mbed_official 330:c80ac197fa6a 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 330:c80ac197fa6a 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 330:c80ac197fa6a 19 * and/or other materials provided with the distribution.
mbed_official 330:c80ac197fa6a 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 330:c80ac197fa6a 21 * may be used to endorse or promote products derived from this software
mbed_official 330:c80ac197fa6a 22 * without specific prior written permission.
mbed_official 330:c80ac197fa6a 23 *
mbed_official 330:c80ac197fa6a 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 330:c80ac197fa6a 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 330:c80ac197fa6a 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 330:c80ac197fa6a 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 330:c80ac197fa6a 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 330:c80ac197fa6a 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 330:c80ac197fa6a 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 330:c80ac197fa6a 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 330:c80ac197fa6a 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 330:c80ac197fa6a 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 330:c80ac197fa6a 34 *
mbed_official 330:c80ac197fa6a 35 ******************************************************************************
mbed_official 330:c80ac197fa6a 36 */
mbed_official 330:c80ac197fa6a 37
mbed_official 330:c80ac197fa6a 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 330:c80ac197fa6a 39 #ifndef __STM32F3xx_HAL_I2C_H
mbed_official 330:c80ac197fa6a 40 #define __STM32F3xx_HAL_I2C_H
mbed_official 330:c80ac197fa6a 41
mbed_official 330:c80ac197fa6a 42 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 43 extern "C" {
mbed_official 330:c80ac197fa6a 44 #endif
mbed_official 330:c80ac197fa6a 45
mbed_official 330:c80ac197fa6a 46 /* Includes ------------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 47 #include "stm32f3xx_hal_def.h"
mbed_official 330:c80ac197fa6a 48
mbed_official 330:c80ac197fa6a 49 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 330:c80ac197fa6a 50 * @{
mbed_official 330:c80ac197fa6a 51 */
mbed_official 330:c80ac197fa6a 52
mbed_official 330:c80ac197fa6a 53 /** @addtogroup I2C
mbed_official 330:c80ac197fa6a 54 * @{
mbed_official 330:c80ac197fa6a 55 */
mbed_official 330:c80ac197fa6a 56
mbed_official 330:c80ac197fa6a 57 /* Exported types ------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 58 /** @defgroup I2C_Exported_Types I2C Exported Types
mbed_official 330:c80ac197fa6a 59 * @{
mbed_official 330:c80ac197fa6a 60 */
mbed_official 330:c80ac197fa6a 61
mbed_official 330:c80ac197fa6a 62 /** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition
mbed_official 330:c80ac197fa6a 63 * @brief I2C Configuration Structure definition
mbed_official 330:c80ac197fa6a 64 * @{
mbed_official 330:c80ac197fa6a 65 */
mbed_official 330:c80ac197fa6a 66 typedef struct
mbed_official 330:c80ac197fa6a 67 {
mbed_official 330:c80ac197fa6a 68 uint32_t Timing; /*!< Specifies the I2C_TIMINGR_register value.
mbed_official 330:c80ac197fa6a 69 This parameter calculated by referring to I2C initialization
mbed_official 330:c80ac197fa6a 70 section in Reference manual */
mbed_official 330:c80ac197fa6a 71
mbed_official 330:c80ac197fa6a 72 uint32_t OwnAddress1; /*!< Specifies the first device own address.
mbed_official 330:c80ac197fa6a 73 This parameter can be a 7-bit or 10-bit address. */
mbed_official 330:c80ac197fa6a 74
mbed_official 330:c80ac197fa6a 75 uint32_t AddressingMode; /*!< Specifies if 7-bit or 10-bit addressing mode is selected.
mbed_official 330:c80ac197fa6a 76 This parameter can be a value of @ref I2C_addressing_mode */
mbed_official 330:c80ac197fa6a 77
mbed_official 330:c80ac197fa6a 78 uint32_t DualAddressMode; /*!< Specifies if dual addressing mode is selected.
mbed_official 330:c80ac197fa6a 79 This parameter can be a value of @ref I2C_dual_addressing_mode */
mbed_official 330:c80ac197fa6a 80
mbed_official 330:c80ac197fa6a 81 uint32_t OwnAddress2; /*!< Specifies the second device own address if dual addressing mode is selected
mbed_official 330:c80ac197fa6a 82 This parameter can be a 7-bit address. */
mbed_official 330:c80ac197fa6a 83
mbed_official 330:c80ac197fa6a 84 uint32_t OwnAddress2Masks; /*!< Specifies the acknoledge mask address second device own address if dual addressing mode is selected
mbed_official 330:c80ac197fa6a 85 This parameter can be a value of @ref I2C_own_address2_masks. */
mbed_official 330:c80ac197fa6a 86
mbed_official 330:c80ac197fa6a 87 uint32_t GeneralCallMode; /*!< Specifies if general call mode is selected.
mbed_official 330:c80ac197fa6a 88 This parameter can be a value of @ref I2C_general_call_addressing_mode. */
mbed_official 330:c80ac197fa6a 89
mbed_official 330:c80ac197fa6a 90 uint32_t NoStretchMode; /*!< Specifies if nostretch mode is selected.
mbed_official 330:c80ac197fa6a 91 This parameter can be a value of @ref I2C_nostretch_mode */
mbed_official 330:c80ac197fa6a 92
mbed_official 330:c80ac197fa6a 93 }I2C_InitTypeDef;
mbed_official 330:c80ac197fa6a 94
mbed_official 330:c80ac197fa6a 95 /**
mbed_official 330:c80ac197fa6a 96 * @}
mbed_official 330:c80ac197fa6a 97 */
mbed_official 330:c80ac197fa6a 98
mbed_official 330:c80ac197fa6a 99 /** @defgroup HAL_state_structure_definition HAL state structure definition
mbed_official 330:c80ac197fa6a 100 * @brief HAL State structure definition
mbed_official 330:c80ac197fa6a 101 * @{
mbed_official 330:c80ac197fa6a 102 */
mbed_official 330:c80ac197fa6a 103
mbed_official 330:c80ac197fa6a 104 typedef enum
mbed_official 330:c80ac197fa6a 105 {
mbed_official 330:c80ac197fa6a 106 HAL_I2C_STATE_RESET = 0x00, /*!< I2C not yet initialized or disabled */
mbed_official 330:c80ac197fa6a 107 HAL_I2C_STATE_READY = 0x01, /*!< I2C initialized and ready for use */
mbed_official 330:c80ac197fa6a 108 HAL_I2C_STATE_BUSY = 0x02, /*!< I2C internal process is ongoing */
mbed_official 330:c80ac197fa6a 109 HAL_I2C_STATE_MASTER_BUSY_TX = 0x12, /*!< Master Data Transmission process is ongoing */
mbed_official 330:c80ac197fa6a 110 HAL_I2C_STATE_MASTER_BUSY_RX = 0x22, /*!< Master Data Reception process is ongoing */
mbed_official 330:c80ac197fa6a 111 HAL_I2C_STATE_SLAVE_BUSY_TX = 0x32, /*!< Slave Data Transmission process is ongoing */
mbed_official 330:c80ac197fa6a 112 HAL_I2C_STATE_SLAVE_BUSY_RX = 0x42, /*!< Slave Data Reception process is ongoing */
mbed_official 330:c80ac197fa6a 113 HAL_I2C_STATE_MEM_BUSY_TX = 0x52, /*!< Memory Data Transmission process is ongoing */
mbed_official 330:c80ac197fa6a 114 HAL_I2C_STATE_MEM_BUSY_RX = 0x62, /*!< Memory Data Reception process is ongoing */
mbed_official 330:c80ac197fa6a 115 HAL_I2C_STATE_TIMEOUT = 0x03, /*!< Timeout state */
mbed_official 330:c80ac197fa6a 116 HAL_I2C_STATE_ERROR = 0x04 /*!< Reception process is ongoing */
mbed_official 330:c80ac197fa6a 117
mbed_official 330:c80ac197fa6a 118 }HAL_I2C_StateTypeDef;
mbed_official 330:c80ac197fa6a 119
mbed_official 330:c80ac197fa6a 120 /**
mbed_official 330:c80ac197fa6a 121 * @}
mbed_official 330:c80ac197fa6a 122 */
mbed_official 330:c80ac197fa6a 123
mbed_official 330:c80ac197fa6a 124 /** @defgroup I2C_Error_Code_structure_definition I2C Error Code structure definition
mbed_official 330:c80ac197fa6a 125 * @brief I2C Error Code structure definition
mbed_official 330:c80ac197fa6a 126 * @{
mbed_official 330:c80ac197fa6a 127 */
mbed_official 330:c80ac197fa6a 128
mbed_official 330:c80ac197fa6a 129 typedef enum
mbed_official 330:c80ac197fa6a 130 {
mbed_official 330:c80ac197fa6a 131 HAL_I2C_ERROR_NONE = 0x00, /*!< No error */
mbed_official 330:c80ac197fa6a 132 HAL_I2C_ERROR_BERR = 0x01, /*!< BERR error */
mbed_official 330:c80ac197fa6a 133 HAL_I2C_ERROR_ARLO = 0x02, /*!< ARLO error */
mbed_official 330:c80ac197fa6a 134 HAL_I2C_ERROR_AF = 0x04, /*!< AF error */
mbed_official 330:c80ac197fa6a 135 HAL_I2C_ERROR_OVR = 0x08, /*!< OVR error */
mbed_official 330:c80ac197fa6a 136 HAL_I2C_ERROR_DMA = 0x10, /*!< DMA transfer error */
mbed_official 330:c80ac197fa6a 137 HAL_I2C_ERROR_TIMEOUT = 0x20, /*!< Timeout error */
mbed_official 330:c80ac197fa6a 138 HAL_I2C_ERROR_SIZE = 0x40 /*!< Size Management error */
mbed_official 330:c80ac197fa6a 139 }HAL_I2C_ErrorTypeDef;
mbed_official 330:c80ac197fa6a 140
mbed_official 330:c80ac197fa6a 141 /**
mbed_official 330:c80ac197fa6a 142 * @}
mbed_official 330:c80ac197fa6a 143 */
mbed_official 330:c80ac197fa6a 144
mbed_official 330:c80ac197fa6a 145 /** @defgroup I2C_handle_Structure_definition I2C handle Structure definition
mbed_official 330:c80ac197fa6a 146 * @brief I2C handle Structure definition
mbed_official 330:c80ac197fa6a 147 * @{
mbed_official 330:c80ac197fa6a 148 */
mbed_official 330:c80ac197fa6a 149
mbed_official 330:c80ac197fa6a 150 typedef struct
mbed_official 330:c80ac197fa6a 151 {
mbed_official 330:c80ac197fa6a 152 I2C_TypeDef *Instance; /*!< I2C registers base address */
mbed_official 330:c80ac197fa6a 153
mbed_official 330:c80ac197fa6a 154 I2C_InitTypeDef Init; /*!< I2C communication parameters */
mbed_official 330:c80ac197fa6a 155
mbed_official 330:c80ac197fa6a 156 uint8_t *pBuffPtr; /*!< Pointer to I2C transfer buffer */
mbed_official 330:c80ac197fa6a 157
mbed_official 330:c80ac197fa6a 158 uint16_t XferSize; /*!< I2C transfer size */
mbed_official 330:c80ac197fa6a 159
mbed_official 330:c80ac197fa6a 160 __IO uint16_t XferCount; /*!< I2C transfer counter */
mbed_official 330:c80ac197fa6a 161
mbed_official 330:c80ac197fa6a 162 DMA_HandleTypeDef *hdmatx; /*!< I2C Tx DMA handle parameters */
mbed_official 330:c80ac197fa6a 163
mbed_official 330:c80ac197fa6a 164 DMA_HandleTypeDef *hdmarx; /*!< I2C Rx DMA handle parameters */
mbed_official 330:c80ac197fa6a 165
mbed_official 330:c80ac197fa6a 166 HAL_LockTypeDef Lock; /*!< I2C locking object */
mbed_official 330:c80ac197fa6a 167
mbed_official 330:c80ac197fa6a 168 __IO HAL_I2C_StateTypeDef State; /*!< I2C communication state */
mbed_official 330:c80ac197fa6a 169
mbed_official 330:c80ac197fa6a 170 __IO HAL_I2C_ErrorTypeDef ErrorCode; /* I2C Error code */
mbed_official 330:c80ac197fa6a 171
mbed_official 330:c80ac197fa6a 172 }I2C_HandleTypeDef;
mbed_official 330:c80ac197fa6a 173 /**
mbed_official 330:c80ac197fa6a 174 * @}
mbed_official 330:c80ac197fa6a 175 */
mbed_official 330:c80ac197fa6a 176
mbed_official 330:c80ac197fa6a 177 /**
mbed_official 330:c80ac197fa6a 178 * @}
mbed_official 330:c80ac197fa6a 179 */
mbed_official 330:c80ac197fa6a 180 /* Exported constants --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 181
mbed_official 330:c80ac197fa6a 182 /** @defgroup I2C_Exported_Constants I2C Exported Constants
mbed_official 330:c80ac197fa6a 183 * @{
mbed_official 330:c80ac197fa6a 184 */
mbed_official 330:c80ac197fa6a 185
mbed_official 330:c80ac197fa6a 186 /** @defgroup I2C_addressing_mode I2C addressing mode
mbed_official 330:c80ac197fa6a 187 * @{
mbed_official 330:c80ac197fa6a 188 */
mbed_official 330:c80ac197fa6a 189 #define I2C_ADDRESSINGMODE_7BIT ((uint32_t)0x00000001)
mbed_official 330:c80ac197fa6a 190 #define I2C_ADDRESSINGMODE_10BIT ((uint32_t)0x00000002)
mbed_official 330:c80ac197fa6a 191
mbed_official 330:c80ac197fa6a 192 #define IS_I2C_ADDRESSING_MODE(MODE) (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \
mbed_official 330:c80ac197fa6a 193 ((MODE) == I2C_ADDRESSINGMODE_10BIT))
mbed_official 330:c80ac197fa6a 194 /**
mbed_official 330:c80ac197fa6a 195 * @}
mbed_official 330:c80ac197fa6a 196 */
mbed_official 330:c80ac197fa6a 197
mbed_official 330:c80ac197fa6a 198 /** @defgroup I2C_dual_addressing_mode I2C dual addressing mode
mbed_official 330:c80ac197fa6a 199 * @{
mbed_official 330:c80ac197fa6a 200 */
mbed_official 330:c80ac197fa6a 201
mbed_official 330:c80ac197fa6a 202 #define I2C_DUALADDRESS_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 203 #define I2C_DUALADDRESS_ENABLED I2C_OAR2_OA2EN
mbed_official 330:c80ac197fa6a 204
mbed_official 330:c80ac197fa6a 205 #define IS_I2C_DUAL_ADDRESS(ADDRESS) (((ADDRESS) == I2C_DUALADDRESS_DISABLED) || \
mbed_official 330:c80ac197fa6a 206 ((ADDRESS) == I2C_DUALADDRESS_ENABLED))
mbed_official 330:c80ac197fa6a 207 /**
mbed_official 330:c80ac197fa6a 208 * @}
mbed_official 330:c80ac197fa6a 209 */
mbed_official 330:c80ac197fa6a 210
mbed_official 330:c80ac197fa6a 211 /** @defgroup I2C_own_address2_masks I2C own address2 masks
mbed_official 330:c80ac197fa6a 212 * @{
mbed_official 330:c80ac197fa6a 213 */
mbed_official 330:c80ac197fa6a 214
mbed_official 330:c80ac197fa6a 215 #define I2C_OA2_NOMASK ((uint8_t)0x00)
mbed_official 330:c80ac197fa6a 216 #define I2C_OA2_MASK01 ((uint8_t)0x01)
mbed_official 330:c80ac197fa6a 217 #define I2C_OA2_MASK02 ((uint8_t)0x02)
mbed_official 330:c80ac197fa6a 218 #define I2C_OA2_MASK03 ((uint8_t)0x03)
mbed_official 330:c80ac197fa6a 219 #define I2C_OA2_MASK04 ((uint8_t)0x04)
mbed_official 330:c80ac197fa6a 220 #define I2C_OA2_MASK05 ((uint8_t)0x05)
mbed_official 330:c80ac197fa6a 221 #define I2C_OA2_MASK06 ((uint8_t)0x06)
mbed_official 330:c80ac197fa6a 222 #define I2C_OA2_MASK07 ((uint8_t)0x07)
mbed_official 330:c80ac197fa6a 223
mbed_official 330:c80ac197fa6a 224 #define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NOMASK) || \
mbed_official 330:c80ac197fa6a 225 ((MASK) == I2C_OA2_MASK01) || \
mbed_official 330:c80ac197fa6a 226 ((MASK) == I2C_OA2_MASK02) || \
mbed_official 330:c80ac197fa6a 227 ((MASK) == I2C_OA2_MASK03) || \
mbed_official 330:c80ac197fa6a 228 ((MASK) == I2C_OA2_MASK04) || \
mbed_official 330:c80ac197fa6a 229 ((MASK) == I2C_OA2_MASK05) || \
mbed_official 330:c80ac197fa6a 230 ((MASK) == I2C_OA2_MASK06) || \
mbed_official 330:c80ac197fa6a 231 ((MASK) == I2C_OA2_MASK07))
mbed_official 330:c80ac197fa6a 232 /**
mbed_official 330:c80ac197fa6a 233 * @}
mbed_official 330:c80ac197fa6a 234 */
mbed_official 330:c80ac197fa6a 235
mbed_official 330:c80ac197fa6a 236 /** @defgroup I2C_general_call_addressing_mode I2C general call addressing mode
mbed_official 330:c80ac197fa6a 237 * @{
mbed_official 330:c80ac197fa6a 238 */
mbed_official 330:c80ac197fa6a 239 #define I2C_GENERALCALL_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 240 #define I2C_GENERALCALL_ENABLED I2C_CR1_GCEN
mbed_official 330:c80ac197fa6a 241
mbed_official 330:c80ac197fa6a 242 #define IS_I2C_GENERAL_CALL(CALL) (((CALL) == I2C_GENERALCALL_DISABLED) || \
mbed_official 330:c80ac197fa6a 243 ((CALL) == I2C_GENERALCALL_ENABLED))
mbed_official 330:c80ac197fa6a 244 /**
mbed_official 330:c80ac197fa6a 245 * @}
mbed_official 330:c80ac197fa6a 246 */
mbed_official 330:c80ac197fa6a 247
mbed_official 330:c80ac197fa6a 248 /** @defgroup I2C_nostretch_mode I2C nostretch mode
mbed_official 330:c80ac197fa6a 249 * @{
mbed_official 330:c80ac197fa6a 250 */
mbed_official 330:c80ac197fa6a 251 #define I2C_NOSTRETCH_DISABLED ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 252 #define I2C_NOSTRETCH_ENABLED I2C_CR1_NOSTRETCH
mbed_official 330:c80ac197fa6a 253
mbed_official 330:c80ac197fa6a 254 #define IS_I2C_NO_STRETCH(STRETCH) (((STRETCH) == I2C_NOSTRETCH_DISABLED) || \
mbed_official 330:c80ac197fa6a 255 ((STRETCH) == I2C_NOSTRETCH_ENABLED))
mbed_official 330:c80ac197fa6a 256 /**
mbed_official 330:c80ac197fa6a 257 * @}
mbed_official 330:c80ac197fa6a 258 */
mbed_official 330:c80ac197fa6a 259
mbed_official 330:c80ac197fa6a 260 /** @defgroup I2C_Memory_Address_Size I2C Memory Address Size
mbed_official 330:c80ac197fa6a 261 * @{
mbed_official 330:c80ac197fa6a 262 */
mbed_official 330:c80ac197fa6a 263 #define I2C_MEMADD_SIZE_8BIT ((uint32_t)0x00000001)
mbed_official 330:c80ac197fa6a 264 #define I2C_MEMADD_SIZE_16BIT ((uint32_t)0x00000002)
mbed_official 330:c80ac197fa6a 265
mbed_official 330:c80ac197fa6a 266 #define IS_I2C_MEMADD_SIZE(SIZE) (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \
mbed_official 330:c80ac197fa6a 267 ((SIZE) == I2C_MEMADD_SIZE_16BIT))
mbed_official 330:c80ac197fa6a 268 /**
mbed_official 330:c80ac197fa6a 269 * @}
mbed_official 330:c80ac197fa6a 270 */
mbed_official 330:c80ac197fa6a 271
mbed_official 330:c80ac197fa6a 272 /** @defgroup I2C_ReloadEndMode_definition I2C ReloadEndMode definition
mbed_official 330:c80ac197fa6a 273 * @{
mbed_official 330:c80ac197fa6a 274 */
mbed_official 330:c80ac197fa6a 275
mbed_official 330:c80ac197fa6a 276 #define I2C_RELOAD_MODE I2C_CR2_RELOAD
mbed_official 330:c80ac197fa6a 277 #define I2C_AUTOEND_MODE I2C_CR2_AUTOEND
mbed_official 330:c80ac197fa6a 278 #define I2C_SOFTEND_MODE ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 279
mbed_official 330:c80ac197fa6a 280 #define IS_TRANSFER_MODE(MODE) (((MODE) == I2C_RELOAD_MODE) || \
mbed_official 330:c80ac197fa6a 281 ((MODE) == I2C_AUTOEND_MODE) || \
mbed_official 330:c80ac197fa6a 282 ((MODE) == I2C_SOFTEND_MODE))
mbed_official 330:c80ac197fa6a 283 /**
mbed_official 330:c80ac197fa6a 284 * @}
mbed_official 330:c80ac197fa6a 285 */
mbed_official 330:c80ac197fa6a 286
mbed_official 330:c80ac197fa6a 287 /** @defgroup I2C_StartStopMode_definition I2C StartStopMode definition
mbed_official 330:c80ac197fa6a 288 * @{
mbed_official 330:c80ac197fa6a 289 */
mbed_official 330:c80ac197fa6a 290
mbed_official 330:c80ac197fa6a 291 #define I2C_NO_STARTSTOP ((uint32_t)0x00000000)
mbed_official 330:c80ac197fa6a 292 #define I2C_GENERATE_STOP I2C_CR2_STOP
mbed_official 330:c80ac197fa6a 293 #define I2C_GENERATE_START_READ (uint32_t)(I2C_CR2_START | I2C_CR2_RD_WRN)
mbed_official 330:c80ac197fa6a 294 #define I2C_GENERATE_START_WRITE I2C_CR2_START
mbed_official 330:c80ac197fa6a 295
mbed_official 330:c80ac197fa6a 296 #define IS_TRANSFER_REQUEST(REQUEST) (((REQUEST) == I2C_GENERATE_STOP) || \
mbed_official 330:c80ac197fa6a 297 ((REQUEST) == I2C_GENERATE_START_READ) || \
mbed_official 330:c80ac197fa6a 298 ((REQUEST) == I2C_GENERATE_START_WRITE) || \
mbed_official 330:c80ac197fa6a 299 ((REQUEST) == I2C_NO_STARTSTOP))
mbed_official 330:c80ac197fa6a 300
mbed_official 330:c80ac197fa6a 301 /**
mbed_official 330:c80ac197fa6a 302 * @}
mbed_official 330:c80ac197fa6a 303 */
mbed_official 330:c80ac197fa6a 304
mbed_official 330:c80ac197fa6a 305 /** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition
mbed_official 330:c80ac197fa6a 306 * @brief I2C Interrupt definition
mbed_official 330:c80ac197fa6a 307 * Elements values convention: 0xXXXXXXXX
mbed_official 330:c80ac197fa6a 308 * - XXXXXXXX : Interrupt control mask
mbed_official 330:c80ac197fa6a 309 * @{
mbed_official 330:c80ac197fa6a 310 */
mbed_official 330:c80ac197fa6a 311 #define I2C_IT_ERRI I2C_CR1_ERRIE
mbed_official 330:c80ac197fa6a 312 #define I2C_IT_TCI I2C_CR1_TCIE
mbed_official 330:c80ac197fa6a 313 #define I2C_IT_STOPI I2C_CR1_STOPIE
mbed_official 330:c80ac197fa6a 314 #define I2C_IT_NACKI I2C_CR1_NACKIE
mbed_official 330:c80ac197fa6a 315 #define I2C_IT_ADDRI I2C_CR1_ADDRIE
mbed_official 330:c80ac197fa6a 316 #define I2C_IT_RXI I2C_CR1_RXIE
mbed_official 330:c80ac197fa6a 317 #define I2C_IT_TXI I2C_CR1_TXIE
mbed_official 330:c80ac197fa6a 318
mbed_official 330:c80ac197fa6a 319 /**
mbed_official 330:c80ac197fa6a 320 * @}
mbed_official 330:c80ac197fa6a 321 */
mbed_official 330:c80ac197fa6a 322
mbed_official 330:c80ac197fa6a 323
mbed_official 330:c80ac197fa6a 324 /** @defgroup I2C_Flag_definition I2C Flag definition
mbed_official 330:c80ac197fa6a 325 * @{
mbed_official 330:c80ac197fa6a 326 */
mbed_official 330:c80ac197fa6a 327
mbed_official 330:c80ac197fa6a 328 #define I2C_FLAG_TXE I2C_ISR_TXE
mbed_official 330:c80ac197fa6a 329 #define I2C_FLAG_TXIS I2C_ISR_TXIS
mbed_official 330:c80ac197fa6a 330 #define I2C_FLAG_RXNE I2C_ISR_RXNE
mbed_official 330:c80ac197fa6a 331 #define I2C_FLAG_ADDR I2C_ISR_ADDR
mbed_official 330:c80ac197fa6a 332 #define I2C_FLAG_AF I2C_ISR_NACKF
mbed_official 330:c80ac197fa6a 333 #define I2C_FLAG_STOPF I2C_ISR_STOPF
mbed_official 330:c80ac197fa6a 334 #define I2C_FLAG_TC I2C_ISR_TC
mbed_official 330:c80ac197fa6a 335 #define I2C_FLAG_TCR I2C_ISR_TCR
mbed_official 330:c80ac197fa6a 336 #define I2C_FLAG_BERR I2C_ISR_BERR
mbed_official 330:c80ac197fa6a 337 #define I2C_FLAG_ARLO I2C_ISR_ARLO
mbed_official 330:c80ac197fa6a 338 #define I2C_FLAG_OVR I2C_ISR_OVR
mbed_official 330:c80ac197fa6a 339 #define I2C_FLAG_PECERR I2C_ISR_PECERR
mbed_official 330:c80ac197fa6a 340 #define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT
mbed_official 330:c80ac197fa6a 341 #define I2C_FLAG_ALERT I2C_ISR_ALERT
mbed_official 330:c80ac197fa6a 342 #define I2C_FLAG_BUSY I2C_ISR_BUSY
mbed_official 330:c80ac197fa6a 343 #define I2C_FLAG_DIR I2C_ISR_DIR
mbed_official 330:c80ac197fa6a 344 /**
mbed_official 330:c80ac197fa6a 345 * @}
mbed_official 330:c80ac197fa6a 346 */
mbed_official 330:c80ac197fa6a 347
mbed_official 330:c80ac197fa6a 348 /**
mbed_official 330:c80ac197fa6a 349 * @}
mbed_official 330:c80ac197fa6a 350 */
mbed_official 330:c80ac197fa6a 351
mbed_official 330:c80ac197fa6a 352 /* Exported macros -----------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 353
mbed_official 330:c80ac197fa6a 354 /** @defgroup I2C_Exported_Macros I2C Exported Macros
mbed_official 330:c80ac197fa6a 355 * @{
mbed_official 330:c80ac197fa6a 356 */
mbed_official 330:c80ac197fa6a 357
mbed_official 330:c80ac197fa6a 358 /** @brief Reset I2C handle state
mbed_official 330:c80ac197fa6a 359 * @param __HANDLE__: I2C handle.
mbed_official 330:c80ac197fa6a 360 * @retval None
mbed_official 330:c80ac197fa6a 361 */
mbed_official 330:c80ac197fa6a 362 #define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2C_STATE_RESET)
mbed_official 330:c80ac197fa6a 363
mbed_official 330:c80ac197fa6a 364 /** @brief Enables or disables the specified I2C interrupts.
mbed_official 330:c80ac197fa6a 365 * @param __HANDLE__: specifies the I2C Handle.
mbed_official 330:c80ac197fa6a 366 * This parameter can be I2Cx where x: 1, 2, or 3 to select the I2C peripheral.
mbed_official 330:c80ac197fa6a 367 * @param __INTERRUPT__: specifies the interrupt source to enable or disable.
mbed_official 330:c80ac197fa6a 368 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 369 * @arg I2C_IT_ERRI: Errors interrupt enable
mbed_official 330:c80ac197fa6a 370 * @arg I2C_IT_TCI: Transfer complete interrupt enable
mbed_official 330:c80ac197fa6a 371 * @arg I2C_IT_STOPI: STOP detection interrupt enable
mbed_official 330:c80ac197fa6a 372 * @arg I2C_IT_NACKI: NACK received interrupt enable
mbed_official 330:c80ac197fa6a 373 * @arg I2C_IT_ADDRI: Address match interrupt enable
mbed_official 330:c80ac197fa6a 374 * @arg I2C_IT_RXI: RX interrupt enable
mbed_official 330:c80ac197fa6a 375 * @arg I2C_IT_TXI: TX interrupt enable
mbed_official 330:c80ac197fa6a 376 *
mbed_official 330:c80ac197fa6a 377 * @retval None
mbed_official 330:c80ac197fa6a 378 */
mbed_official 330:c80ac197fa6a 379
mbed_official 330:c80ac197fa6a 380 #define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__))
mbed_official 330:c80ac197fa6a 381 #define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__)))
mbed_official 330:c80ac197fa6a 382
mbed_official 330:c80ac197fa6a 383 /** @brief Checks if the specified I2C interrupt source is enabled or disabled.
mbed_official 330:c80ac197fa6a 384 * @param __HANDLE__: specifies the I2C Handle.
mbed_official 330:c80ac197fa6a 385 * This parameter can be I2Cx where x: 1, 2, or 3 to select the I2C peripheral.
mbed_official 330:c80ac197fa6a 386 * @param __INTERRUPT__: specifies the I2C interrupt source to check.
mbed_official 330:c80ac197fa6a 387 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 388 * @arg I2C_IT_ERRI: Errors interrupt enable
mbed_official 330:c80ac197fa6a 389 * @arg I2C_IT_TCI: Transfer complete interrupt enable
mbed_official 330:c80ac197fa6a 390 * @arg I2C_IT_STOPI: STOP detection interrupt enable
mbed_official 330:c80ac197fa6a 391 * @arg I2C_IT_NACKI: NACK received interrupt enable
mbed_official 330:c80ac197fa6a 392 * @arg I2C_IT_ADDRI: Address match interrupt enable
mbed_official 330:c80ac197fa6a 393 * @arg I2C_IT_RXI: RX interrupt enable
mbed_official 330:c80ac197fa6a 394 * @arg I2C_IT_TXI: TX interrupt enable
mbed_official 330:c80ac197fa6a 395 *
mbed_official 330:c80ac197fa6a 396 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 330:c80ac197fa6a 397 */
mbed_official 330:c80ac197fa6a 398 #define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
mbed_official 330:c80ac197fa6a 399
mbed_official 330:c80ac197fa6a 400 /** @brief Checks whether the specified I2C flag is set or not.
mbed_official 330:c80ac197fa6a 401 * @param __HANDLE__: specifies the I2C Handle.
mbed_official 330:c80ac197fa6a 402 * This parameter can be I2Cx where x: 1, 2, or 3 to select the I2C peripheral.
mbed_official 330:c80ac197fa6a 403 * @param __FLAG__: specifies the flag to check.
mbed_official 330:c80ac197fa6a 404 * This parameter can be one of the following values:
mbed_official 330:c80ac197fa6a 405 * @arg I2C_FLAG_TXE: Transmit data register empty
mbed_official 330:c80ac197fa6a 406 * @arg I2C_FLAG_TXIS: Transmit interrupt status
mbed_official 330:c80ac197fa6a 407 * @arg I2C_FLAG_RXNE: Receive data register not empty
mbed_official 330:c80ac197fa6a 408 * @arg I2C_FLAG_ADDR: Address matched (slave mode)
mbed_official 330:c80ac197fa6a 409 * @arg I2C_FLAG_AF: Acknowledge failure received flag
mbed_official 330:c80ac197fa6a 410 * @arg I2C_FLAG_STOPF: STOP detection flag
mbed_official 330:c80ac197fa6a 411 * @arg I2C_FLAG_TC: Transfer complete (master mode)
mbed_official 330:c80ac197fa6a 412 * @arg I2C_FLAG_TCR: Transfer complete reload
mbed_official 330:c80ac197fa6a 413 * @arg I2C_FLAG_BERR: Bus error
mbed_official 330:c80ac197fa6a 414 * @arg I2C_FLAG_ARLO: Arbitration lost
mbed_official 330:c80ac197fa6a 415 * @arg I2C_FLAG_OVR: Overrun/Underrun
mbed_official 330:c80ac197fa6a 416 * @arg I2C_FLAG_PECERR: PEC error in reception
mbed_official 330:c80ac197fa6a 417 * @arg I2C_FLAG_TIMEOUT: Timeout or Tlow detection flag
mbed_official 330:c80ac197fa6a 418 * @arg I2C_FLAG_ALERT: SMBus alert
mbed_official 330:c80ac197fa6a 419 * @arg I2C_FLAG_BUSY: Bus busy
mbed_official 330:c80ac197fa6a 420 * @arg I2C_FLAG_DIR: Transfer direction (slave mode)
mbed_official 330:c80ac197fa6a 421 *
mbed_official 330:c80ac197fa6a 422 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 330:c80ac197fa6a 423 */
mbed_official 330:c80ac197fa6a 424 #define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->ISR) & (__FLAG__)) == (__FLAG__))
mbed_official 330:c80ac197fa6a 425
mbed_official 330:c80ac197fa6a 426 /** @brief Clears the I2C pending flags which are cleared by writing 1 in a specific bit.
mbed_official 330:c80ac197fa6a 427 * @param __HANDLE__: specifies the I2C Handle.
mbed_official 330:c80ac197fa6a 428 * This parameter can be I2Cx where x: 1, 2, or 3 to select the I2C peripheral.
mbed_official 330:c80ac197fa6a 429 * @param __FLAG__: specifies the flag to clear.
mbed_official 330:c80ac197fa6a 430 * This parameter can be any combination of the following values:
mbed_official 330:c80ac197fa6a 431 * @arg I2C_FLAG_ADDR: Address matched (slave mode)
mbed_official 330:c80ac197fa6a 432 * @arg I2C_FLAG_AF: Acknowledge failure flag
mbed_official 330:c80ac197fa6a 433 * @arg I2C_FLAG_STOPF: STOP detection flag
mbed_official 330:c80ac197fa6a 434 * @arg I2C_FLAG_BERR: Bus error
mbed_official 330:c80ac197fa6a 435 * @arg I2C_FLAG_ARLO: Arbitration lost
mbed_official 330:c80ac197fa6a 436 * @arg I2C_FLAG_OVR: Overrun/Underrun
mbed_official 330:c80ac197fa6a 437 * @arg I2C_FLAG_PECERR: PEC error in reception
mbed_official 330:c80ac197fa6a 438 * @arg I2C_FLAG_TIMEOUT: Timeout or Tlow detection flag
mbed_official 330:c80ac197fa6a 439 * @arg I2C_FLAG_ALERT: SMBus alert
mbed_official 330:c80ac197fa6a 440 *
mbed_official 330:c80ac197fa6a 441 * @retval None
mbed_official 330:c80ac197fa6a 442 */
mbed_official 330:c80ac197fa6a 443 #define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
mbed_official 330:c80ac197fa6a 444
mbed_official 330:c80ac197fa6a 445
mbed_official 330:c80ac197fa6a 446 #define __HAL_I2C_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= I2C_CR1_PE)
mbed_official 330:c80ac197fa6a 447 #define __HAL_I2C_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~I2C_CR1_PE)
mbed_official 330:c80ac197fa6a 448
mbed_official 330:c80ac197fa6a 449 #define __HAL_I2C_RESET_CR2(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_RD_WRN)))
mbed_official 330:c80ac197fa6a 450
mbed_official 330:c80ac197fa6a 451 #define __HAL_I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0xFF00))) >> 8)))
mbed_official 330:c80ac197fa6a 452 #define __HAL_I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FF))))
mbed_official 330:c80ac197fa6a 453
mbed_official 330:c80ac197fa6a 454 #define __HAL_I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN)) : \
mbed_official 330:c80ac197fa6a 455 (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | (I2C_CR2_ADD10) | (I2C_CR2_START)) & (~I2C_CR2_RD_WRN)))
mbed_official 330:c80ac197fa6a 456
mbed_official 330:c80ac197fa6a 457 #define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= (uint32_t)0x000003FF)
mbed_official 330:c80ac197fa6a 458 #define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FF)
mbed_official 330:c80ac197fa6a 459 /**
mbed_official 330:c80ac197fa6a 460 * @}
mbed_official 330:c80ac197fa6a 461 */
mbed_official 330:c80ac197fa6a 462
mbed_official 330:c80ac197fa6a 463 /* Include I2C HAL Extended module */
mbed_official 330:c80ac197fa6a 464 #include "stm32f3xx_hal_i2c_ex.h"
mbed_official 330:c80ac197fa6a 465
mbed_official 330:c80ac197fa6a 466 /* Exported functions --------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 467 /** @addtogroup I2C_Exported_Functions
mbed_official 330:c80ac197fa6a 468 * @{
mbed_official 330:c80ac197fa6a 469 */
mbed_official 330:c80ac197fa6a 470
mbed_official 330:c80ac197fa6a 471 /** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 330:c80ac197fa6a 472 * @{
mbed_official 330:c80ac197fa6a 473 */
mbed_official 330:c80ac197fa6a 474
mbed_official 330:c80ac197fa6a 475 /* Initialization/de-initialization functions **********************************/
mbed_official 330:c80ac197fa6a 476 HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 477 HAL_StatusTypeDef HAL_I2C_DeInit (I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 478 void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 479 void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 480
mbed_official 330:c80ac197fa6a 481 /**
mbed_official 330:c80ac197fa6a 482 * @}
mbed_official 330:c80ac197fa6a 483 */
mbed_official 330:c80ac197fa6a 484
mbed_official 330:c80ac197fa6a 485 /** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions
mbed_official 330:c80ac197fa6a 486 * @{
mbed_official 330:c80ac197fa6a 487 */
mbed_official 330:c80ac197fa6a 488
mbed_official 330:c80ac197fa6a 489 /* IO operation functions *****************************************************/
mbed_official 330:c80ac197fa6a 490
mbed_official 330:c80ac197fa6a 491 /** @addtogroup Blocking_mode_Polling Blocking mode Polling
mbed_official 330:c80ac197fa6a 492 * @{
mbed_official 330:c80ac197fa6a 493 */
mbed_official 330:c80ac197fa6a 494
mbed_official 330:c80ac197fa6a 495 /******* Blocking mode: Polling */
mbed_official 330:c80ac197fa6a 496 HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 497 HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 498 HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 499 HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 500 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);
mbed_official 330:c80ac197fa6a 501 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);
mbed_official 330:c80ac197fa6a 502 HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, uint32_t Timeout);
mbed_official 330:c80ac197fa6a 503
mbed_official 330:c80ac197fa6a 504 /**
mbed_official 330:c80ac197fa6a 505 * @}
mbed_official 330:c80ac197fa6a 506 */
mbed_official 330:c80ac197fa6a 507
mbed_official 330:c80ac197fa6a 508 /** @addtogroup Non_Blocking_mode_Interrupt Non Blocking mode Interrupt
mbed_official 330:c80ac197fa6a 509 * @{
mbed_official 330:c80ac197fa6a 510 */
mbed_official 330:c80ac197fa6a 511
mbed_official 330:c80ac197fa6a 512 /******* Non-Blocking mode: Interrupt */
mbed_official 330:c80ac197fa6a 513 HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 514 HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 515 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 516 HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 517 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);
mbed_official 330:c80ac197fa6a 518 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);
mbed_official 330:c80ac197fa6a 519
mbed_official 330:c80ac197fa6a 520 /**
mbed_official 330:c80ac197fa6a 521 * @}
mbed_official 330:c80ac197fa6a 522 */
mbed_official 330:c80ac197fa6a 523
mbed_official 330:c80ac197fa6a 524 /** @addtogroup Non_Blocking_mode_DMA Non Blocking mode DMA
mbed_official 330:c80ac197fa6a 525 * @{
mbed_official 330:c80ac197fa6a 526 */
mbed_official 330:c80ac197fa6a 527 /******* Non-Blocking mode: DMA */
mbed_official 330:c80ac197fa6a 528 HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 529 HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 530 HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 531 HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size);
mbed_official 330:c80ac197fa6a 532 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);
mbed_official 330:c80ac197fa6a 533 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);
mbed_official 330:c80ac197fa6a 534 /**
mbed_official 330:c80ac197fa6a 535 * @}
mbed_official 330:c80ac197fa6a 536 */
mbed_official 330:c80ac197fa6a 537
mbed_official 330:c80ac197fa6a 538 /** @addtogroup IRQ_Handler_and_Callbacks IRQ Handler and Callbacks
mbed_official 330:c80ac197fa6a 539 * @{
mbed_official 330:c80ac197fa6a 540 */
mbed_official 330:c80ac197fa6a 541 /******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */
mbed_official 330:c80ac197fa6a 542 void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 543 void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 544 void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 545 void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 546 void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 547 void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 548 void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 549 void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 550 void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 551
mbed_official 330:c80ac197fa6a 552 /**
mbed_official 330:c80ac197fa6a 553 * @}
mbed_official 330:c80ac197fa6a 554 */
mbed_official 330:c80ac197fa6a 555
mbed_official 330:c80ac197fa6a 556 /**
mbed_official 330:c80ac197fa6a 557 * @}
mbed_official 330:c80ac197fa6a 558 */
mbed_official 330:c80ac197fa6a 559
mbed_official 330:c80ac197fa6a 560 /** @addtogroup I2C_Exported_Functions_Group3 Peripheral State and Errors functions
mbed_official 330:c80ac197fa6a 561 * @{
mbed_official 330:c80ac197fa6a 562 */
mbed_official 330:c80ac197fa6a 563
mbed_official 330:c80ac197fa6a 564 /* Peripheral State and Errors functions **************************************/
mbed_official 330:c80ac197fa6a 565 HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 566 uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c);
mbed_official 330:c80ac197fa6a 567
mbed_official 330:c80ac197fa6a 568 /**
mbed_official 330:c80ac197fa6a 569 * @}
mbed_official 330:c80ac197fa6a 570 */
mbed_official 330:c80ac197fa6a 571
mbed_official 330:c80ac197fa6a 572 /**
mbed_official 330:c80ac197fa6a 573 * @}
mbed_official 330:c80ac197fa6a 574 */
mbed_official 330:c80ac197fa6a 575
mbed_official 330:c80ac197fa6a 576 /**
mbed_official 330:c80ac197fa6a 577 * @}
mbed_official 330:c80ac197fa6a 578 */
mbed_official 330:c80ac197fa6a 579
mbed_official 330:c80ac197fa6a 580 /**
mbed_official 330:c80ac197fa6a 581 * @}
mbed_official 330:c80ac197fa6a 582 */
mbed_official 330:c80ac197fa6a 583
mbed_official 330:c80ac197fa6a 584 #ifdef __cplusplus
mbed_official 330:c80ac197fa6a 585 }
mbed_official 330:c80ac197fa6a 586 #endif
mbed_official 330:c80ac197fa6a 587
mbed_official 330:c80ac197fa6a 588
mbed_official 330:c80ac197fa6a 589 #endif /* __STM32F3xx_HAL_I2C_H */
mbed_official 330:c80ac197fa6a 590
mbed_official 330:c80ac197fa6a 591 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/