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:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
489:119543c9f674
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_i2c_ex.c
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 489:119543c9f674 5 * @version V1.2.0
mbed_official 489:119543c9f674 6 * @date 06-February-2015
mbed_official 489:119543c9f674 7 * @brief I2C Extended HAL module driver.
mbed_official 376:cb4d9db17537 8 * This file provides firmware functions to manage the following
mbed_official 489:119543c9f674 9 * functionalities of I2C Extended peripheral:
mbed_official 489:119543c9f674 10 * + Extended features functions
mbed_official 376:cb4d9db17537 11 *
mbed_official 376:cb4d9db17537 12 @verbatim
mbed_official 376:cb4d9db17537 13 ==============================================================================
mbed_official 489:119543c9f674 14 ##### I2C peripheral Extended features #####
mbed_official 376:cb4d9db17537 15 ==============================================================================
mbed_official 376:cb4d9db17537 16
mbed_official 376:cb4d9db17537 17 [..] Comparing to other previous devices, the I2C interface for STM32L0XX
mbed_official 376:cb4d9db17537 18 devices contains the following additional features
mbed_official 376:cb4d9db17537 19
mbed_official 376:cb4d9db17537 20 (+) Possibility to disable or enable Analog Noise Filter
mbed_official 376:cb4d9db17537 21 (+) Use of a configured Digital Noise Filter
mbed_official 376:cb4d9db17537 22 (+) Disable or enable wakeup from Stop mode
mbed_official 376:cb4d9db17537 23
mbed_official 376:cb4d9db17537 24 ##### How to use this driver #####
mbed_official 376:cb4d9db17537 25 ==============================================================================
mbed_official 376:cb4d9db17537 26 [..] This driver provides functions to configure Noise Filter
mbed_official 489:119543c9f674 27 (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter()
mbed_official 489:119543c9f674 28 (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter()
mbed_official 489:119543c9f674 29 (#) Configure the enable or disable of I2C Wake Up Mode using the functions :
mbed_official 489:119543c9f674 30 + HAL_I2CEx_EnableWakeUp()
mbed_official 489:119543c9f674 31 + HAL_I2CEx_DisableWakeUp()
mbed_official 489:119543c9f674 32 (#) Configure the enable or disable of fast mode plus driving capability using the functions :
mbed_official 489:119543c9f674 33 + HAL_I2CEx_EnableFastModePlus()
mbed_official 489:119543c9f674 34 + HAL_I2CEx_DisbleFastModePlus()
mbed_official 376:cb4d9db17537 35 @endverbatim
mbed_official 376:cb4d9db17537 36 ******************************************************************************
mbed_official 376:cb4d9db17537 37 * @attention
mbed_official 376:cb4d9db17537 38 *
mbed_official 489:119543c9f674 39 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 40 *
mbed_official 376:cb4d9db17537 41 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 42 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 43 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 44 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 45 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 46 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 47 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 48 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 49 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 50 * without specific prior written permission.
mbed_official 376:cb4d9db17537 51 *
mbed_official 376:cb4d9db17537 52 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 53 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 54 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 55 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 56 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 57 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 58 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 59 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 60 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 61 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 62 *
mbed_official 376:cb4d9db17537 63 ******************************************************************************
mbed_official 376:cb4d9db17537 64 */
mbed_official 376:cb4d9db17537 65
mbed_official 376:cb4d9db17537 66 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 67 #include "stm32l0xx_hal.h"
mbed_official 376:cb4d9db17537 68
mbed_official 376:cb4d9db17537 69 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 70 * @{
mbed_official 376:cb4d9db17537 71 */
mbed_official 376:cb4d9db17537 72
mbed_official 489:119543c9f674 73 /** @defgroup I2CEx I2C Extended HAL module driver
mbed_official 489:119543c9f674 74 * @brief I2C Extended HAL module driver
mbed_official 376:cb4d9db17537 75 * @{
mbed_official 376:cb4d9db17537 76 */
mbed_official 376:cb4d9db17537 77
mbed_official 376:cb4d9db17537 78 #ifdef HAL_I2C_MODULE_ENABLED
mbed_official 376:cb4d9db17537 79
mbed_official 376:cb4d9db17537 80 /* Private typedef -----------------------------------------------------------*/
mbed_official 376:cb4d9db17537 81 /* Private define ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 82 /* Private macro -------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 83 /* Private variables ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 84 /* Private function prototypes -----------------------------------------------*/
mbed_official 376:cb4d9db17537 85 /* Private functions ---------------------------------------------------------*/
mbed_official 376:cb4d9db17537 86
mbed_official 489:119543c9f674 87 /** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions
mbed_official 376:cb4d9db17537 88 * @{
mbed_official 376:cb4d9db17537 89 */
mbed_official 376:cb4d9db17537 90
mbed_official 489:119543c9f674 91 /** @defgroup I2CEx_Exported_Functions_Group1 Extended features functions
mbed_official 489:119543c9f674 92 * @brief Extended features functions
mbed_official 376:cb4d9db17537 93 *
mbed_official 376:cb4d9db17537 94 @verbatim
mbed_official 376:cb4d9db17537 95 ===============================================================================
mbed_official 489:119543c9f674 96 ##### Extended features functions #####
mbed_official 376:cb4d9db17537 97 ===============================================================================
mbed_official 376:cb4d9db17537 98 [..] This section provides functions allowing to:
mbed_official 376:cb4d9db17537 99 (+) Configure Noise Filters
mbed_official 376:cb4d9db17537 100
mbed_official 376:cb4d9db17537 101 @endverbatim
mbed_official 376:cb4d9db17537 102 * @{
mbed_official 376:cb4d9db17537 103 */
mbed_official 376:cb4d9db17537 104
mbed_official 376:cb4d9db17537 105 /**
mbed_official 376:cb4d9db17537 106 * @brief Configures I2C Analog noise filter.
mbed_official 376:cb4d9db17537 107 * @param hi2c : pointer to a I2C_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 108 * the configuration information for the specified I2Cx peripheral.
mbed_official 376:cb4d9db17537 109 * @param AnalogFilter : new state of the Analog filter.
mbed_official 376:cb4d9db17537 110 * @retval HAL status
mbed_official 376:cb4d9db17537 111 */
mbed_official 489:119543c9f674 112 HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter)
mbed_official 376:cb4d9db17537 113 {
mbed_official 376:cb4d9db17537 114 /* Check the parameters */
mbed_official 376:cb4d9db17537 115 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
mbed_official 376:cb4d9db17537 116 assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter));
mbed_official 376:cb4d9db17537 117
mbed_official 376:cb4d9db17537 118 if((hi2c->State == HAL_I2C_STATE_BUSY) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_RX)
mbed_official 376:cb4d9db17537 119 || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_RX))
mbed_official 376:cb4d9db17537 120 {
mbed_official 376:cb4d9db17537 121 return HAL_BUSY;
mbed_official 376:cb4d9db17537 122 }
mbed_official 376:cb4d9db17537 123
mbed_official 376:cb4d9db17537 124 /* Process Locked */
mbed_official 376:cb4d9db17537 125 __HAL_LOCK(hi2c);
mbed_official 376:cb4d9db17537 126
mbed_official 376:cb4d9db17537 127 hi2c->State = HAL_I2C_STATE_BUSY;
mbed_official 376:cb4d9db17537 128
mbed_official 376:cb4d9db17537 129 /* Disable the selected I2C peripheral */
mbed_official 376:cb4d9db17537 130 __HAL_I2C_DISABLE(hi2c);
mbed_official 376:cb4d9db17537 131
mbed_official 376:cb4d9db17537 132 /* Reset I2Cx ANOFF bit */
mbed_official 376:cb4d9db17537 133 hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF);
mbed_official 376:cb4d9db17537 134
mbed_official 376:cb4d9db17537 135 /* Set analog filter bit*/
mbed_official 376:cb4d9db17537 136 hi2c->Instance->CR1 |= AnalogFilter;
mbed_official 376:cb4d9db17537 137
mbed_official 376:cb4d9db17537 138 __HAL_I2C_ENABLE(hi2c);
mbed_official 376:cb4d9db17537 139
mbed_official 376:cb4d9db17537 140 hi2c->State = HAL_I2C_STATE_READY;
mbed_official 376:cb4d9db17537 141
mbed_official 376:cb4d9db17537 142 /* Process Unlocked */
mbed_official 376:cb4d9db17537 143 __HAL_UNLOCK(hi2c);
mbed_official 376:cb4d9db17537 144
mbed_official 376:cb4d9db17537 145 return HAL_OK;
mbed_official 376:cb4d9db17537 146 }
mbed_official 376:cb4d9db17537 147
mbed_official 376:cb4d9db17537 148 /**
mbed_official 376:cb4d9db17537 149 * @brief Configures I2C Digital noise filter.
mbed_official 376:cb4d9db17537 150 * @param hi2c : pointer to a I2C_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 151 * the configuration information for the specified I2Cx peripheral.
mbed_official 376:cb4d9db17537 152 * @param DigitalFilter : Coefficient of digital noise filter between 0x00 and 0x0F.
mbed_official 376:cb4d9db17537 153 * @retval HAL status
mbed_official 376:cb4d9db17537 154 */
mbed_official 489:119543c9f674 155 HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter)
mbed_official 376:cb4d9db17537 156 {
mbed_official 376:cb4d9db17537 157 uint32_t tmpreg = 0;
mbed_official 376:cb4d9db17537 158
mbed_official 376:cb4d9db17537 159 /* Check the parameters */
mbed_official 376:cb4d9db17537 160 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
mbed_official 376:cb4d9db17537 161 assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter));
mbed_official 376:cb4d9db17537 162
mbed_official 376:cb4d9db17537 163 if((hi2c->State == HAL_I2C_STATE_BUSY) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_RX)
mbed_official 376:cb4d9db17537 164 || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_RX))
mbed_official 376:cb4d9db17537 165 {
mbed_official 376:cb4d9db17537 166 return HAL_BUSY;
mbed_official 376:cb4d9db17537 167 }
mbed_official 376:cb4d9db17537 168
mbed_official 376:cb4d9db17537 169 /* Process Locked */
mbed_official 376:cb4d9db17537 170 __HAL_LOCK(hi2c);
mbed_official 376:cb4d9db17537 171
mbed_official 376:cb4d9db17537 172 hi2c->State = HAL_I2C_STATE_BUSY;
mbed_official 376:cb4d9db17537 173
mbed_official 376:cb4d9db17537 174 /* Disable the selected I2C peripheral */
mbed_official 376:cb4d9db17537 175 __HAL_I2C_DISABLE(hi2c);
mbed_official 376:cb4d9db17537 176
mbed_official 376:cb4d9db17537 177 /* Get the old register value */
mbed_official 376:cb4d9db17537 178 tmpreg = hi2c->Instance->CR1;
mbed_official 376:cb4d9db17537 179
mbed_official 376:cb4d9db17537 180 /* Reset I2Cx DNF bits [11:8] */
mbed_official 376:cb4d9db17537 181 tmpreg &= ~(I2C_CR1_DFN);
mbed_official 376:cb4d9db17537 182
mbed_official 376:cb4d9db17537 183 /* Set I2Cx DNF coefficient */
mbed_official 376:cb4d9db17537 184 tmpreg |= DigitalFilter << 8;
mbed_official 376:cb4d9db17537 185
mbed_official 376:cb4d9db17537 186 /* Store the new register value */
mbed_official 376:cb4d9db17537 187 hi2c->Instance->CR1 = tmpreg;
mbed_official 376:cb4d9db17537 188
mbed_official 376:cb4d9db17537 189 __HAL_I2C_ENABLE(hi2c);
mbed_official 376:cb4d9db17537 190
mbed_official 376:cb4d9db17537 191 hi2c->State = HAL_I2C_STATE_READY;
mbed_official 376:cb4d9db17537 192
mbed_official 376:cb4d9db17537 193 /* Process Unlocked */
mbed_official 376:cb4d9db17537 194 __HAL_UNLOCK(hi2c);
mbed_official 376:cb4d9db17537 195
mbed_official 376:cb4d9db17537 196 return HAL_OK;
mbed_official 376:cb4d9db17537 197 }
mbed_official 376:cb4d9db17537 198
mbed_official 376:cb4d9db17537 199 /**
mbed_official 376:cb4d9db17537 200 * @brief Enables I2C wakeup from stop mode.
mbed_official 376:cb4d9db17537 201 * @param hi2c : pointer to a I2C_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 202 * the configuration information for the specified I2Cx peripheral.
mbed_official 376:cb4d9db17537 203 * @retval HAL status
mbed_official 376:cb4d9db17537 204 */
mbed_official 376:cb4d9db17537 205 HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp (I2C_HandleTypeDef *hi2c)
mbed_official 376:cb4d9db17537 206 {
mbed_official 376:cb4d9db17537 207 /* Check the parameters */
mbed_official 376:cb4d9db17537 208 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
mbed_official 376:cb4d9db17537 209
mbed_official 376:cb4d9db17537 210 if((hi2c->State == HAL_I2C_STATE_BUSY) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_RX)
mbed_official 376:cb4d9db17537 211 || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_RX))
mbed_official 376:cb4d9db17537 212 {
mbed_official 376:cb4d9db17537 213 return HAL_BUSY;
mbed_official 376:cb4d9db17537 214 }
mbed_official 376:cb4d9db17537 215
mbed_official 376:cb4d9db17537 216 /* Process Locked */
mbed_official 376:cb4d9db17537 217 __HAL_LOCK(hi2c);
mbed_official 376:cb4d9db17537 218
mbed_official 376:cb4d9db17537 219 hi2c->State = HAL_I2C_STATE_BUSY;
mbed_official 376:cb4d9db17537 220
mbed_official 376:cb4d9db17537 221 /* Disable the selected I2C peripheral */
mbed_official 376:cb4d9db17537 222 __HAL_I2C_DISABLE(hi2c);
mbed_official 376:cb4d9db17537 223
mbed_official 376:cb4d9db17537 224 /* Enable wakeup from stop mode */
mbed_official 376:cb4d9db17537 225 hi2c->Instance->CR1 |= I2C_CR1_WUPEN;
mbed_official 376:cb4d9db17537 226
mbed_official 376:cb4d9db17537 227 __HAL_I2C_ENABLE(hi2c);
mbed_official 376:cb4d9db17537 228
mbed_official 376:cb4d9db17537 229 hi2c->State = HAL_I2C_STATE_READY;
mbed_official 376:cb4d9db17537 230
mbed_official 376:cb4d9db17537 231 /* Process Unlocked */
mbed_official 376:cb4d9db17537 232 __HAL_UNLOCK(hi2c);
mbed_official 376:cb4d9db17537 233
mbed_official 376:cb4d9db17537 234 return HAL_OK;
mbed_official 376:cb4d9db17537 235 }
mbed_official 376:cb4d9db17537 236
mbed_official 376:cb4d9db17537 237
mbed_official 376:cb4d9db17537 238 /**
mbed_official 376:cb4d9db17537 239 * @brief Disables I2C wakeup from stop mode.
mbed_official 376:cb4d9db17537 240 * @param hi2c : pointer to a I2C_HandleTypeDef structure that contains
mbed_official 376:cb4d9db17537 241 * the configuration information for the specified I2Cx peripheral.
mbed_official 376:cb4d9db17537 242 * @retval HAL status
mbed_official 376:cb4d9db17537 243 */
mbed_official 376:cb4d9db17537 244 HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp (I2C_HandleTypeDef *hi2c)
mbed_official 376:cb4d9db17537 245 {
mbed_official 376:cb4d9db17537 246 /* Check the parameters */
mbed_official 376:cb4d9db17537 247 assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance));
mbed_official 376:cb4d9db17537 248
mbed_official 376:cb4d9db17537 249 if((hi2c->State == HAL_I2C_STATE_BUSY) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_MASTER_BUSY_RX)
mbed_official 376:cb4d9db17537 250 || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_TX) || (hi2c->State == HAL_I2C_STATE_SLAVE_BUSY_RX))
mbed_official 376:cb4d9db17537 251 {
mbed_official 376:cb4d9db17537 252 return HAL_BUSY;
mbed_official 376:cb4d9db17537 253 }
mbed_official 376:cb4d9db17537 254
mbed_official 376:cb4d9db17537 255 /* Process Locked */
mbed_official 376:cb4d9db17537 256 __HAL_LOCK(hi2c);
mbed_official 376:cb4d9db17537 257
mbed_official 376:cb4d9db17537 258 hi2c->State = HAL_I2C_STATE_BUSY;
mbed_official 376:cb4d9db17537 259
mbed_official 376:cb4d9db17537 260 /* Disable the selected I2C peripheral */
mbed_official 376:cb4d9db17537 261 __HAL_I2C_DISABLE(hi2c);
mbed_official 376:cb4d9db17537 262
mbed_official 376:cb4d9db17537 263 /* Enable wakeup from stop mode */
mbed_official 376:cb4d9db17537 264 hi2c->Instance->CR1 &= ~(I2C_CR1_WUPEN);
mbed_official 376:cb4d9db17537 265
mbed_official 376:cb4d9db17537 266 __HAL_I2C_ENABLE(hi2c);
mbed_official 376:cb4d9db17537 267
mbed_official 376:cb4d9db17537 268 hi2c->State = HAL_I2C_STATE_READY;
mbed_official 376:cb4d9db17537 269
mbed_official 376:cb4d9db17537 270 /* Process Unlocked */
mbed_official 376:cb4d9db17537 271 __HAL_UNLOCK(hi2c);
mbed_official 376:cb4d9db17537 272
mbed_official 376:cb4d9db17537 273 return HAL_OK;
mbed_official 376:cb4d9db17537 274 }
mbed_official 376:cb4d9db17537 275
mbed_official 376:cb4d9db17537 276 /**
mbed_official 489:119543c9f674 277 * @brief Enable the I2C fast mode plus driving capability.
mbed_official 489:119543c9f674 278 * @param ConfigFastModePlus: selects the pin.
mbed_official 489:119543c9f674 279 * This parameter can be one of the @ref I2CEx_FastModePlus values
mbed_official 489:119543c9f674 280 * @note For I2C1, fast mode plus driving capability can be enabled on all selected
mbed_official 489:119543c9f674 281 * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently
mbed_official 489:119543c9f674 282 * on each one of the following pins PB6, PB7, PB8 and PB9.
mbed_official 489:119543c9f674 283 * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability
mbed_official 489:119543c9f674 284 * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter.
mbed_official 489:119543c9f674 285 * @note For all I2C2 pins fast mode plus driving capability can be enabled
mbed_official 489:119543c9f674 286 * only by using I2C_FASTMODEPLUS_I2C2 parameter.
mbed_official 489:119543c9f674 287 * @note For all I2C3 pins fast mode plus driving capability can be enabled
mbed_official 489:119543c9f674 288 * only by using I2C_FASTMODEPLUS_I2C3 parameter.
mbed_official 489:119543c9f674 289 * @retval None
mbed_official 489:119543c9f674 290 */
mbed_official 489:119543c9f674 291 void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus)
mbed_official 489:119543c9f674 292 {
mbed_official 489:119543c9f674 293 /* Check the parameter */
mbed_official 489:119543c9f674 294 assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));
mbed_official 489:119543c9f674 295
mbed_official 489:119543c9f674 296 /* Enable SYSCFG clock */
mbed_official 489:119543c9f674 297 __HAL_RCC_SYSCFG_CLK_ENABLE();
mbed_official 489:119543c9f674 298
mbed_official 489:119543c9f674 299 /* Enable fast mode plus driving capability for selected pin */
mbed_official 489:119543c9f674 300 SET_BIT(SYSCFG->CFGR1, (uint32_t)ConfigFastModePlus);
mbed_official 489:119543c9f674 301 }
mbed_official 489:119543c9f674 302
mbed_official 489:119543c9f674 303 /**
mbed_official 489:119543c9f674 304 * @brief Disable the I2C fast mode plus driving capability.
mbed_official 489:119543c9f674 305 * @param ConfigFastModePlus: selects the pin.
mbed_official 489:119543c9f674 306 * This parameter can be one of the @ref I2CEx_FastModePlus values
mbed_official 489:119543c9f674 307 * @note For I2C1, fast mode plus driving capability can be disabled on all selected
mbed_official 489:119543c9f674 308 * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently
mbed_official 489:119543c9f674 309 * on each one of the following pins PB6, PB7, PB8 and PB9.
mbed_official 489:119543c9f674 310 * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability
mbed_official 489:119543c9f674 311 * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter.
mbed_official 489:119543c9f674 312 * @note For all I2C2 pins fast mode plus driving capability can be disabled
mbed_official 489:119543c9f674 313 * only by using I2C_FASTMODEPLUS_I2C2 parameter.
mbed_official 489:119543c9f674 314 * @note For all I2C3 pins fast mode plus driving capability can be disabled
mbed_official 489:119543c9f674 315 * only by using I2C_FASTMODEPLUS_I2C3 parameter.
mbed_official 489:119543c9f674 316 * @retval None
mbed_official 489:119543c9f674 317 */
mbed_official 489:119543c9f674 318 void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus)
mbed_official 489:119543c9f674 319 {
mbed_official 489:119543c9f674 320 /* Check the parameter */
mbed_official 489:119543c9f674 321 assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus));
mbed_official 489:119543c9f674 322
mbed_official 489:119543c9f674 323 /* Enable SYSCFG clock */
mbed_official 489:119543c9f674 324 __HAL_RCC_SYSCFG_CLK_ENABLE();
mbed_official 489:119543c9f674 325
mbed_official 489:119543c9f674 326 /* Disable fast mode plus driving capability for selected pin */
mbed_official 489:119543c9f674 327 CLEAR_BIT(SYSCFG->CFGR1, (uint32_t)ConfigFastModePlus);
mbed_official 489:119543c9f674 328 }
mbed_official 489:119543c9f674 329
mbed_official 489:119543c9f674 330 /**
mbed_official 376:cb4d9db17537 331 * @}
mbed_official 376:cb4d9db17537 332 */
mbed_official 376:cb4d9db17537 333
mbed_official 376:cb4d9db17537 334 /**
mbed_official 376:cb4d9db17537 335 * @}
mbed_official 376:cb4d9db17537 336 */
mbed_official 376:cb4d9db17537 337
mbed_official 376:cb4d9db17537 338 #endif /* HAL_I2C_MODULE_ENABLED */
mbed_official 376:cb4d9db17537 339 /**
mbed_official 376:cb4d9db17537 340 * @}
mbed_official 376:cb4d9db17537 341 */
mbed_official 376:cb4d9db17537 342
mbed_official 376:cb4d9db17537 343 /**
mbed_official 376:cb4d9db17537 344 * @}
mbed_official 376:cb4d9db17537 345 */
mbed_official 376:cb4d9db17537 346
mbed_official 376:cb4d9db17537 347 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 489:119543c9f674 348