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:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

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