Deepti AST / Envt_Shield_API
Committer:
Deepti
Date:
Thu Aug 14 11:39:55 2014 +0000
Revision:
0:9ac219c9a7df
Environmental Shield API

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Deepti 0:9ac219c9a7df 1 /**
Deepti 0:9ac219c9a7df 2 ******************************************************************************
Deepti 0:9ac219c9a7df 3 * @file LPS25H.c
Deepti 0:9ac219c9a7df 4 * @author AST Robotics Team
Deepti 0:9ac219c9a7df 5 * @version V0.0.1
Deepti 0:9ac219c9a7df 6 * @date 03-April-2014
Deepti 0:9ac219c9a7df 7 * @brief This file provides a set of functions needed to manage the lps25h.
Deepti 0:9ac219c9a7df 8 ******************************************************************************
Deepti 0:9ac219c9a7df 9 * @attention
Deepti 0:9ac219c9a7df 10 *
Deepti 0:9ac219c9a7df 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Deepti 0:9ac219c9a7df 12 *
Deepti 0:9ac219c9a7df 13 * Redistribution and use in source and binary forms, with or without modification,
Deepti 0:9ac219c9a7df 14 * are permitted provided that the following conditions are met:
Deepti 0:9ac219c9a7df 15 * 1. Redistributions of source code must retain the above copyright notice,
Deepti 0:9ac219c9a7df 16 * this list of conditions and the following disclaimer.
Deepti 0:9ac219c9a7df 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Deepti 0:9ac219c9a7df 18 * this list of conditions and the following disclaimer in the documentation
Deepti 0:9ac219c9a7df 19 * and/or other materials provided with the distribution.
Deepti 0:9ac219c9a7df 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Deepti 0:9ac219c9a7df 21 * may be used to endorse or promote products derived from this software
Deepti 0:9ac219c9a7df 22 * without specific prior written permission.
Deepti 0:9ac219c9a7df 23 *
Deepti 0:9ac219c9a7df 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Deepti 0:9ac219c9a7df 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Deepti 0:9ac219c9a7df 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Deepti 0:9ac219c9a7df 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Deepti 0:9ac219c9a7df 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Deepti 0:9ac219c9a7df 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Deepti 0:9ac219c9a7df 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Deepti 0:9ac219c9a7df 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Deepti 0:9ac219c9a7df 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Deepti 0:9ac219c9a7df 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Deepti 0:9ac219c9a7df 34 *
Deepti 0:9ac219c9a7df 35 ******************************************************************************
Deepti 0:9ac219c9a7df 36 */
Deepti 0:9ac219c9a7df 37 /* Includes ------------------------------------------------------------------*/
Deepti 0:9ac219c9a7df 38 #include "lps25h.h"
Deepti 0:9ac219c9a7df 39
Deepti 0:9ac219c9a7df 40 /** @addtogroup BSP
Deepti 0:9ac219c9a7df 41 * @{
Deepti 0:9ac219c9a7df 42 */
Deepti 0:9ac219c9a7df 43
Deepti 0:9ac219c9a7df 44 /** @addtogroup STM32F439_SENSITRON
Deepti 0:9ac219c9a7df 45 * @{
Deepti 0:9ac219c9a7df 46 */
Deepti 0:9ac219c9a7df 47
Deepti 0:9ac219c9a7df 48 /** @addtogroup LPS25H
Deepti 0:9ac219c9a7df 49 * @{
Deepti 0:9ac219c9a7df 50 */
Deepti 0:9ac219c9a7df 51
Deepti 0:9ac219c9a7df 52
Deepti 0:9ac219c9a7df 53 /** @defgroup LPS25H_Private_TypesDefinitions
Deepti 0:9ac219c9a7df 54 * @{
Deepti 0:9ac219c9a7df 55 */
Deepti 0:9ac219c9a7df 56
Deepti 0:9ac219c9a7df 57 /**
Deepti 0:9ac219c9a7df 58 * @}
Deepti 0:9ac219c9a7df 59 */
Deepti 0:9ac219c9a7df 60
Deepti 0:9ac219c9a7df 61 /** @defgroup LPS25H_Private_Defines
Deepti 0:9ac219c9a7df 62 * @{
Deepti 0:9ac219c9a7df 63 */
Deepti 0:9ac219c9a7df 64
Deepti 0:9ac219c9a7df 65 /**
Deepti 0:9ac219c9a7df 66 * @}
Deepti 0:9ac219c9a7df 67 */
Deepti 0:9ac219c9a7df 68
Deepti 0:9ac219c9a7df 69 /** @defgroup LPS25H_Private_Macros
Deepti 0:9ac219c9a7df 70 * @{
Deepti 0:9ac219c9a7df 71 */
Deepti 0:9ac219c9a7df 72
Deepti 0:9ac219c9a7df 73 /**
Deepti 0:9ac219c9a7df 74 * @}
Deepti 0:9ac219c9a7df 75 */
Deepti 0:9ac219c9a7df 76
Deepti 0:9ac219c9a7df 77 /** @defgroup LPS25H_Private_Variables
Deepti 0:9ac219c9a7df 78 * @{
Deepti 0:9ac219c9a7df 79 */
Deepti 0:9ac219c9a7df 80
Deepti 0:9ac219c9a7df 81 PRESSURE_DrvTypeDef LPS25HDrv =
Deepti 0:9ac219c9a7df 82 {
Deepti 0:9ac219c9a7df 83 LPS25H_Init,
Deepti 0:9ac219c9a7df 84 LPS25H_PowerOff,
Deepti 0:9ac219c9a7df 85 LPS25H_ReadID,
Deepti 0:9ac219c9a7df 86 LPS25H_RebootCmd,
Deepti 0:9ac219c9a7df 87 0,//LPS25H_INT1InterruptConfig,
Deepti 0:9ac219c9a7df 88 0,//LPS25H_EnableIT,
Deepti 0:9ac219c9a7df 89 0,//LPS25H_DisableIT,
Deepti 0:9ac219c9a7df 90 0,
Deepti 0:9ac219c9a7df 91 0,
Deepti 0:9ac219c9a7df 92 LPS25H_GetPressure,
Deepti 0:9ac219c9a7df 93 LPS25H_GetTemperature,
Deepti 0:9ac219c9a7df 94 LPS25H_SlaveAddrRemap
Deepti 0:9ac219c9a7df 95 };
Deepti 0:9ac219c9a7df 96
Deepti 0:9ac219c9a7df 97 uint8_t LPS25H_SlaveAddress = LPS25H_ADDRESS_LOW;
Deepti 0:9ac219c9a7df 98
Deepti 0:9ac219c9a7df 99 /**
Deepti 0:9ac219c9a7df 100 * @}
Deepti 0:9ac219c9a7df 101 */
Deepti 0:9ac219c9a7df 102
Deepti 0:9ac219c9a7df 103 /** @defgroup LPS25H_Private_FunctionPrototypes
Deepti 0:9ac219c9a7df 104 * @{
Deepti 0:9ac219c9a7df 105 */
Deepti 0:9ac219c9a7df 106
Deepti 0:9ac219c9a7df 107 /**
Deepti 0:9ac219c9a7df 108 * @brief Exit the shutdown mode for LPS25H.
Deepti 0:9ac219c9a7df 109 * @param None
Deepti 0:9ac219c9a7df 110 * @retval None
Deepti 0:9ac219c9a7df 111 */
Deepti 0:9ac219c9a7df 112 void LPS25H_PowerOn(void);
Deepti 0:9ac219c9a7df 113
Deepti 0:9ac219c9a7df 114 void LPS25H_I2C_ReadRawPressure(uint32_t *raw_press);
Deepti 0:9ac219c9a7df 115
Deepti 0:9ac219c9a7df 116 void LPS25H_I2C_ReadRawTemperature(int16_t *raw_data);
Deepti 0:9ac219c9a7df 117
Deepti 0:9ac219c9a7df 118
Deepti 0:9ac219c9a7df 119 /**
Deepti 0:9ac219c9a7df 120 * @}
Deepti 0:9ac219c9a7df 121 */
Deepti 0:9ac219c9a7df 122
Deepti 0:9ac219c9a7df 123 /** @defgroup LPS25H_Private_Functions
Deepti 0:9ac219c9a7df 124 * @{
Deepti 0:9ac219c9a7df 125 */
Deepti 0:9ac219c9a7df 126
Deepti 0:9ac219c9a7df 127
Deepti 0:9ac219c9a7df 128 /**
Deepti 0:9ac219c9a7df 129 * @brief Set LPS25H Initialization.
Deepti 0:9ac219c9a7df 130 * @param InitStruct: it contains the configuration setting for the LPS25H.
Deepti 0:9ac219c9a7df 131 * @retval Error Code (PressureError_Enum)
Deepti 0:9ac219c9a7df 132 */
Deepti 0:9ac219c9a7df 133 void LPS25H_Init(PRESSURE_InitTypeDef *LPS25H_Init)
Deepti 0:9ac219c9a7df 134 {
Deepti 0:9ac219c9a7df 135 uint8_t tmp1 = 0x00;
Deepti 0:9ac219c9a7df 136
Deepti 0:9ac219c9a7df 137 /* Configure the low level interface ---------------------------------------*/
Deepti 0:9ac219c9a7df 138 PRESSURE_IO_Init();
Deepti 0:9ac219c9a7df 139
Deepti 0:9ac219c9a7df 140 LPS25H_PowerOn();
Deepti 0:9ac219c9a7df 141
Deepti 0:9ac219c9a7df 142 PRESSURE_IO_Read(&tmp1, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 143
Deepti 0:9ac219c9a7df 144 /* Output Data Rate selection */
Deepti 0:9ac219c9a7df 145 tmp1 &= ~(LPS25H_ODR_MASK);
Deepti 0:9ac219c9a7df 146 tmp1 |= LPS25H_Init->OutputDataRate;
Deepti 0:9ac219c9a7df 147
Deepti 0:9ac219c9a7df 148 /* Interrupt circuit selection */
Deepti 0:9ac219c9a7df 149 tmp1 &= ~(LPS25H_DIFF_EN_MASK);
Deepti 0:9ac219c9a7df 150 tmp1 |= LPS25H_Init->DiffEnable;
Deepti 0:9ac219c9a7df 151
Deepti 0:9ac219c9a7df 152 /* Block Data Update selection */
Deepti 0:9ac219c9a7df 153 tmp1 &= ~(LPS25H_BDU_MASK);
Deepti 0:9ac219c9a7df 154 tmp1 |= LPS25H_Init->BlockDataUpdate;
Deepti 0:9ac219c9a7df 155
Deepti 0:9ac219c9a7df 156 /* Serial Interface Mode selection */
Deepti 0:9ac219c9a7df 157 tmp1 &= ~(LPS25H_SPI_SIM_MASK);
Deepti 0:9ac219c9a7df 158 tmp1 |= LPS25H_Init->SPIMode;
Deepti 0:9ac219c9a7df 159
Deepti 0:9ac219c9a7df 160 PRESSURE_IO_Write(&tmp1, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 161
Deepti 0:9ac219c9a7df 162 PRESSURE_IO_Read(&tmp1, LPS25H_SlaveAddress, LPS25H_RES_CONF_ADDR, 1);
Deepti 0:9ac219c9a7df 163
Deepti 0:9ac219c9a7df 164 /* Serial Interface Mode selection */
Deepti 0:9ac219c9a7df 165 tmp1 &= ~(LPS25H_P_RES_MASK);
Deepti 0:9ac219c9a7df 166 tmp1 |= LPS25H_Init->PressureResolution;
Deepti 0:9ac219c9a7df 167
Deepti 0:9ac219c9a7df 168 /* Serial Interface Mode selection */
Deepti 0:9ac219c9a7df 169 tmp1 &= ~(LPS25H_T_RES_MASK);
Deepti 0:9ac219c9a7df 170 tmp1 |= LPS25H_Init->TemperatureResolution;
Deepti 0:9ac219c9a7df 171
Deepti 0:9ac219c9a7df 172 PRESSURE_IO_Write(&tmp1, LPS25H_SlaveAddress, LPS25H_RES_CONF_ADDR, 1);
Deepti 0:9ac219c9a7df 173 }
Deepti 0:9ac219c9a7df 174
Deepti 0:9ac219c9a7df 175 /**
Deepti 0:9ac219c9a7df 176 * @brief Read ID address of LPS25H
Deepti 0:9ac219c9a7df 177 * @param Device ID address
Deepti 0:9ac219c9a7df 178 * @retval ID name
Deepti 0:9ac219c9a7df 179 */
Deepti 0:9ac219c9a7df 180 uint8_t LPS25H_ReadID(void)
Deepti 0:9ac219c9a7df 181 {
Deepti 0:9ac219c9a7df 182 uint8_t tmp;
Deepti 0:9ac219c9a7df 183
Deepti 0:9ac219c9a7df 184 /* Read WHO I AM register */
Deepti 0:9ac219c9a7df 185 PRESSURE_IO_Read(&tmp, LPS25H_SlaveAddress, LPS25H_WHO_AM_I_ADDR, 1);
Deepti 0:9ac219c9a7df 186
Deepti 0:9ac219c9a7df 187 /* Return the ID */
Deepti 0:9ac219c9a7df 188 return (uint8_t)tmp;
Deepti 0:9ac219c9a7df 189 }
Deepti 0:9ac219c9a7df 190
Deepti 0:9ac219c9a7df 191 /**
Deepti 0:9ac219c9a7df 192 * @brief Reboot memory content of LPS25H
Deepti 0:9ac219c9a7df 193 * @param None
Deepti 0:9ac219c9a7df 194 * @retval None
Deepti 0:9ac219c9a7df 195 */
Deepti 0:9ac219c9a7df 196 void LPS25H_RebootCmd(void)
Deepti 0:9ac219c9a7df 197 {
Deepti 0:9ac219c9a7df 198 uint8_t tmpreg;
Deepti 0:9ac219c9a7df 199
Deepti 0:9ac219c9a7df 200 /* Read CTRL_REG5 register */
Deepti 0:9ac219c9a7df 201 PRESSURE_IO_Read(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG2_ADDR, 1);
Deepti 0:9ac219c9a7df 202
Deepti 0:9ac219c9a7df 203 /* Enable or Disable the reboot memory */
Deepti 0:9ac219c9a7df 204 tmpreg |= LPS25H_RESET_MEMORY;
Deepti 0:9ac219c9a7df 205
Deepti 0:9ac219c9a7df 206 /* Write value to MEMS CTRL_REG5 regsister */
Deepti 0:9ac219c9a7df 207 PRESSURE_IO_Write(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG2_ADDR, 1);
Deepti 0:9ac219c9a7df 208 }
Deepti 0:9ac219c9a7df 209
Deepti 0:9ac219c9a7df 210 /**
Deepti 0:9ac219c9a7df 211 * @brief Set LPS25H Interrupt INT1 configuration
Deepti 0:9ac219c9a7df 212 * @param LPS25H_InterruptConfig_TypeDef: pointer to a LPS25H_InterruptConfig_TypeDef
Deepti 0:9ac219c9a7df 213 * structure that contains the configuration setting for the LPS25H Interrupt.
Deepti 0:9ac219c9a7df 214 * @retval None
Deepti 0:9ac219c9a7df 215 */
Deepti 0:9ac219c9a7df 216 void LPS25H_INT1InterruptConfig(uint16_t Int1Config)
Deepti 0:9ac219c9a7df 217 {
Deepti 0:9ac219c9a7df 218
Deepti 0:9ac219c9a7df 219 }
Deepti 0:9ac219c9a7df 220
Deepti 0:9ac219c9a7df 221 /**
Deepti 0:9ac219c9a7df 222 * @brief Enable INT1
Deepti 0:9ac219c9a7df 223 * @retval None
Deepti 0:9ac219c9a7df 224 */
Deepti 0:9ac219c9a7df 225 void LPS25H_EnableIT()
Deepti 0:9ac219c9a7df 226 {
Deepti 0:9ac219c9a7df 227
Deepti 0:9ac219c9a7df 228 }
Deepti 0:9ac219c9a7df 229
Deepti 0:9ac219c9a7df 230 /**
Deepti 0:9ac219c9a7df 231 * @brief Disable INT1
Deepti 0:9ac219c9a7df 232 * @retval None
Deepti 0:9ac219c9a7df 233 */
Deepti 0:9ac219c9a7df 234 void LPS25H_DisableIT()
Deepti 0:9ac219c9a7df 235 {
Deepti 0:9ac219c9a7df 236
Deepti 0:9ac219c9a7df 237 }
Deepti 0:9ac219c9a7df 238
Deepti 0:9ac219c9a7df 239
Deepti 0:9ac219c9a7df 240 /**
Deepti 0:9ac219c9a7df 241 * @brief Read LPS25H output register, and calculate the raw pressure.
Deepti 0:9ac219c9a7df 242 * @param uint32_t: raw_press. Pressure raw value.
Deepti 0:9ac219c9a7df 243 * @retval LPS25H_ERROR or LPS25H_OK.
Deepti 0:9ac219c9a7df 244 */
Deepti 0:9ac219c9a7df 245 void LPS25H_I2C_ReadRawPressure(uint32_t *raw_press)
Deepti 0:9ac219c9a7df 246 {
Deepti 0:9ac219c9a7df 247 uint8_t buffer[3], i;
Deepti 0:9ac219c9a7df 248 uint32_t tempVal=0;
Deepti 0:9ac219c9a7df 249
Deepti 0:9ac219c9a7df 250 /* Read the register content */
Deepti 0:9ac219c9a7df 251
Deepti 0:9ac219c9a7df 252 PRESSURE_IO_Read(buffer, LPS25H_SlaveAddress, LPS25H_PRESS_POUT_XL_ADDR+0x80, 3);
Deepti 0:9ac219c9a7df 253 // LPS25H_I2C_Read(LPS25H_PRESS_POUT_XL_ADDR+0x80, 3, buffer);
Deepti 0:9ac219c9a7df 254
Deepti 0:9ac219c9a7df 255 /* Build the raw data */
Deepti 0:9ac219c9a7df 256 for (i = 0 ; i < 3 ; i++)
Deepti 0:9ac219c9a7df 257 tempVal |= (((uint32_t) buffer[i]) << (8 * i));
Deepti 0:9ac219c9a7df 258
Deepti 0:9ac219c9a7df 259 /* convert the 2's complement 24 bit to 2's complement 32 bit */
Deepti 0:9ac219c9a7df 260 if (tempVal & 0x00800000)
Deepti 0:9ac219c9a7df 261 tempVal |= 0xFF000000;
Deepti 0:9ac219c9a7df 262
Deepti 0:9ac219c9a7df 263 /* return the built value */
Deepti 0:9ac219c9a7df 264 *raw_press = ((uint32_t) tempVal);
Deepti 0:9ac219c9a7df 265 }
Deepti 0:9ac219c9a7df 266
Deepti 0:9ac219c9a7df 267 /**
Deepti 0:9ac219c9a7df 268 * @brief Read LPS25H output register, and calculate the pressure in mbar.
Deepti 0:9ac219c9a7df 269 * @param float *pressure. Pressure value in mbar.
Deepti 0:9ac219c9a7df 270 * @retval LPS25H_ERROR or LPS25H_OK.
Deepti 0:9ac219c9a7df 271 */
Deepti 0:9ac219c9a7df 272 void LPS25H_GetPressure(float* pfData)
Deepti 0:9ac219c9a7df 273 {
Deepti 0:9ac219c9a7df 274 uint32_t raw_press = 0;
Deepti 0:9ac219c9a7df 275
Deepti 0:9ac219c9a7df 276 LPS25H_I2C_ReadRawPressure(&raw_press);
Deepti 0:9ac219c9a7df 277
Deepti 0:9ac219c9a7df 278 /* return the built value */
Deepti 0:9ac219c9a7df 279 //tempInt = raw_press / 4096;
Deepti 0:9ac219c9a7df 280
Deepti 0:9ac219c9a7df 281 *pfData = (float)raw_press /4096.0f;
Deepti 0:9ac219c9a7df 282 }
Deepti 0:9ac219c9a7df 283
Deepti 0:9ac219c9a7df 284 /**
Deepti 0:9ac219c9a7df 285 * @brief Read LPS25H output register, and calculate the raw temperature.
Deepti 0:9ac219c9a7df 286 * @param int16_t *raw_data: temperature raw value.
Deepti 0:9ac219c9a7df 287 * @retval LPS25H_ERROR or LPS25H_OK.
Deepti 0:9ac219c9a7df 288 */
Deepti 0:9ac219c9a7df 289 void LPS25H_I2C_ReadRawTemperature(int16_t *raw_data)
Deepti 0:9ac219c9a7df 290 {
Deepti 0:9ac219c9a7df 291 uint8_t buffer[2];
Deepti 0:9ac219c9a7df 292 uint16_t tempVal=0;
Deepti 0:9ac219c9a7df 293
Deepti 0:9ac219c9a7df 294 /* Read the register content */
Deepti 0:9ac219c9a7df 295 PRESSURE_IO_Read(buffer, LPS25H_SlaveAddress, LPS25H_TEMP_OUT_L_ADDR+0x80, 2);
Deepti 0:9ac219c9a7df 296 // LPS25H_I2C_Read(LPS25H_TEMP_OUT_L_ADDR+0x80, 2, buffer);
Deepti 0:9ac219c9a7df 297
Deepti 0:9ac219c9a7df 298 /* Build the raw value */
Deepti 0:9ac219c9a7df 299 tempVal = (((uint16_t)buffer[1]) << 8)+(uint16_t)buffer[0];
Deepti 0:9ac219c9a7df 300
Deepti 0:9ac219c9a7df 301 /* Return it */
Deepti 0:9ac219c9a7df 302 *raw_data = ((int16_t)tempVal);
Deepti 0:9ac219c9a7df 303 }
Deepti 0:9ac219c9a7df 304
Deepti 0:9ac219c9a7df 305 /**
Deepti 0:9ac219c9a7df 306 * @brief Read LPS25H output register, and calculate the temperature.
Deepti 0:9ac219c9a7df 307 * @param float *temperature : temperature value..
Deepti 0:9ac219c9a7df 308 * @retval LPS25H_ERROR or LPS25H_OK.
Deepti 0:9ac219c9a7df 309 */
Deepti 0:9ac219c9a7df 310 void LPS25H_GetTemperature(float* pfData)
Deepti 0:9ac219c9a7df 311 {
Deepti 0:9ac219c9a7df 312 int16_t raw_data;
Deepti 0:9ac219c9a7df 313
Deepti 0:9ac219c9a7df 314 LPS25H_I2C_ReadRawTemperature(&raw_data);
Deepti 0:9ac219c9a7df 315
Deepti 0:9ac219c9a7df 316 //*data_out = (int16_t)((((float)raw_data/480.0) + 42.5)*100);
Deepti 0:9ac219c9a7df 317 *pfData = (int16_t)((((float)raw_data/480.0) + 42.5));
Deepti 0:9ac219c9a7df 318 }
Deepti 0:9ac219c9a7df 319 /**
Deepti 0:9ac219c9a7df 320 * @brief Exit the shutdown mode for LPS25H.
Deepti 0:9ac219c9a7df 321 * @param None
Deepti 0:9ac219c9a7df 322 * @retval LPS25H_ERROR or LPS25H_OK
Deepti 0:9ac219c9a7df 323 */
Deepti 0:9ac219c9a7df 324 void LPS25H_PowerOn(void)
Deepti 0:9ac219c9a7df 325 {
Deepti 0:9ac219c9a7df 326 uint8_t tmpreg;
Deepti 0:9ac219c9a7df 327
Deepti 0:9ac219c9a7df 328 /* Read the register content */
Deepti 0:9ac219c9a7df 329 // LPS25H_I2C_Read(LPS25H_CTRL_REG1_ADDR,1,&tmpReg);
Deepti 0:9ac219c9a7df 330 PRESSURE_IO_Read(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 331
Deepti 0:9ac219c9a7df 332 /* Set the power down bit */
Deepti 0:9ac219c9a7df 333 tmpreg |= LPS25H_MODE_ACTIVE;
Deepti 0:9ac219c9a7df 334
Deepti 0:9ac219c9a7df 335 /* Write register */
Deepti 0:9ac219c9a7df 336 // PRESSURE_IO_Write(LPS25H_CTRL_REG1_ADDR,1,&tmpReg);
Deepti 0:9ac219c9a7df 337 PRESSURE_IO_Write(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 338
Deepti 0:9ac219c9a7df 339 }
Deepti 0:9ac219c9a7df 340
Deepti 0:9ac219c9a7df 341
Deepti 0:9ac219c9a7df 342 /**
Deepti 0:9ac219c9a7df 343 * @brief Enter the shutdown mode for LPS25H.
Deepti 0:9ac219c9a7df 344 * @param None
Deepti 0:9ac219c9a7df 345 * @retval LPS25H_ERROR or LPS25H_OK
Deepti 0:9ac219c9a7df 346 */
Deepti 0:9ac219c9a7df 347 void LPS25H_PowerOff(void)
Deepti 0:9ac219c9a7df 348 {
Deepti 0:9ac219c9a7df 349 uint8_t tmpreg;
Deepti 0:9ac219c9a7df 350
Deepti 0:9ac219c9a7df 351 /* Read the register content */
Deepti 0:9ac219c9a7df 352 // PRESSURE_IO_Read( LPS25H_CTRL_REG1_ADDR,1,&tmpReg);
Deepti 0:9ac219c9a7df 353 PRESSURE_IO_Read(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 354
Deepti 0:9ac219c9a7df 355 /* Reset the power down bit */
Deepti 0:9ac219c9a7df 356 tmpreg &= ~(LPS25H_MODE_ACTIVE);
Deepti 0:9ac219c9a7df 357
Deepti 0:9ac219c9a7df 358 /* Write register */
Deepti 0:9ac219c9a7df 359 // PRESSURE_IO_Write( LPS25H_CTRL_REG1_ADDR,1,&tmpReg);
Deepti 0:9ac219c9a7df 360 PRESSURE_IO_Write(&tmpreg, LPS25H_SlaveAddress, LPS25H_CTRL_REG1_ADDR, 1);
Deepti 0:9ac219c9a7df 361 }
Deepti 0:9ac219c9a7df 362
Deepti 0:9ac219c9a7df 363
Deepti 0:9ac219c9a7df 364 /**
Deepti 0:9ac219c9a7df 365 * @brief Set the slave address according to SA0 bit.
Deepti 0:9ac219c9a7df 366 * @param SA0_Bit_Status: LPS25H_SA0_LOW or LPS25H_SA0_HIGH
Deepti 0:9ac219c9a7df 367 * @retval None
Deepti 0:9ac219c9a7df 368 */
Deepti 0:9ac219c9a7df 369 void LPS25H_SlaveAddrRemap(uint8_t SA0_Bit_Status)
Deepti 0:9ac219c9a7df 370 {
Deepti 0:9ac219c9a7df 371 LPS25H_SlaveAddress = (SA0_Bit_Status==LPS25H_SA0_LOW?LPS25H_ADDRESS_LOW:LPS25H_ADDRESS_HIGH);
Deepti 0:9ac219c9a7df 372 }
Deepti 0:9ac219c9a7df 373
Deepti 0:9ac219c9a7df 374 /**
Deepti 0:9ac219c9a7df 375 * @}
Deepti 0:9ac219c9a7df 376 */
Deepti 0:9ac219c9a7df 377
Deepti 0:9ac219c9a7df 378 /**
Deepti 0:9ac219c9a7df 379 * @}
Deepti 0:9ac219c9a7df 380 */
Deepti 0:9ac219c9a7df 381
Deepti 0:9ac219c9a7df 382 /**
Deepti 0:9ac219c9a7df 383 * @}
Deepti 0:9ac219c9a7df 384 */
Deepti 0:9ac219c9a7df 385
Deepti 0:9ac219c9a7df 386 /**
Deepti 0:9ac219c9a7df 387 * @}
Deepti 0:9ac219c9a7df 388 */
Deepti 0:9ac219c9a7df 389
Deepti 0:9ac219c9a7df 390
Deepti 0:9ac219c9a7df 391 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Deepti 0:9ac219c9a7df 392