MEMS nano pressure sensor: 260-1260 hPa absolute digital output barometer.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_ST_Sensors MOTENV_Mbed mbed-os-mqtt-client LPS22HB_JS ... more

Committer:
cparata
Date:
Mon Mar 04 13:07:24 2019 +0000
Revision:
3:3971e9431200
Parent:
0:3de9cb936fd1
Fix issue in SPI write

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikapov 0:3de9cb936fd1 1 /**
nikapov 0:3de9cb936fd1 2 ******************************************************************************
nikapov 0:3de9cb936fd1 3 * @file LPS22HB_driver.h
nikapov 0:3de9cb936fd1 4 * @author HESA Application Team
nikapov 0:3de9cb936fd1 5 * @version V1.1
nikapov 0:3de9cb936fd1 6 * @date 10-August-2016
nikapov 0:3de9cb936fd1 7 * @brief LPS22HB driver header file
nikapov 0:3de9cb936fd1 8 ******************************************************************************
nikapov 0:3de9cb936fd1 9 * @attention
nikapov 0:3de9cb936fd1 10 *
nikapov 0:3de9cb936fd1 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
nikapov 0:3de9cb936fd1 12 *
nikapov 0:3de9cb936fd1 13 * Redistribution and use in source and binary forms, with or without modification,
nikapov 0:3de9cb936fd1 14 * are permitted provided that the following conditions are met:
nikapov 0:3de9cb936fd1 15 * 1. Redistributions of source code must retain the above copyright notice,
nikapov 0:3de9cb936fd1 16 * this list of conditions and the following disclaimer.
nikapov 0:3de9cb936fd1 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
nikapov 0:3de9cb936fd1 18 * this list of conditions and the following disclaimer in the documentation
nikapov 0:3de9cb936fd1 19 * and/or other materials provided with the distribution.
nikapov 0:3de9cb936fd1 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
nikapov 0:3de9cb936fd1 21 * may be used to endorse or promote products derived from this software
nikapov 0:3de9cb936fd1 22 * without specific prior written permission.
nikapov 0:3de9cb936fd1 23 *
nikapov 0:3de9cb936fd1 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
nikapov 0:3de9cb936fd1 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
nikapov 0:3de9cb936fd1 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
nikapov 0:3de9cb936fd1 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
nikapov 0:3de9cb936fd1 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
nikapov 0:3de9cb936fd1 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
nikapov 0:3de9cb936fd1 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
nikapov 0:3de9cb936fd1 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
nikapov 0:3de9cb936fd1 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nikapov 0:3de9cb936fd1 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nikapov 0:3de9cb936fd1 34 *
nikapov 0:3de9cb936fd1 35 ******************************************************************************
nikapov 0:3de9cb936fd1 36 */
nikapov 0:3de9cb936fd1 37
nikapov 0:3de9cb936fd1 38 /* Define to prevent recursive inclusion -------------------------------------*/
nikapov 0:3de9cb936fd1 39 #ifndef __LPS22HB_DRIVER__H
nikapov 0:3de9cb936fd1 40 #define __LPS22HB_DRIVER__H
nikapov 0:3de9cb936fd1 41
nikapov 0:3de9cb936fd1 42 #include <stdint.h>
nikapov 0:3de9cb936fd1 43
nikapov 0:3de9cb936fd1 44 #ifdef __cplusplus
nikapov 0:3de9cb936fd1 45 extern "C" {
nikapov 0:3de9cb936fd1 46 #endif
nikapov 0:3de9cb936fd1 47
nikapov 0:3de9cb936fd1 48 // the user must include the proper file where HAL_read_reg and HAL_write_reg are implemented
nikapov 0:3de9cb936fd1 49 //#include "HAL_EnvSensors.h"
nikapov 0:3de9cb936fd1 50
nikapov 0:3de9cb936fd1 51 /* Uncomment the line below to expanse the "assert_param" macro in the drivers code */
nikapov 0:3de9cb936fd1 52 //#define USE_FULL_ASSERT_LPS22HB
nikapov 0:3de9cb936fd1 53
nikapov 0:3de9cb936fd1 54 /* Exported macro ------------------------------------------------------------*/
nikapov 0:3de9cb936fd1 55 #ifdef USE_FULL_ASSERT_LPS22HB
nikapov 0:3de9cb936fd1 56
nikapov 0:3de9cb936fd1 57 /**
nikapov 0:3de9cb936fd1 58 * @brief The assert_param macro is used for function's parameters check.
nikapov 0:3de9cb936fd1 59 * @param expr: If expr is false, it calls assert_failed function which reports
nikapov 0:3de9cb936fd1 60 * the name of the source file and the source line number of the call
nikapov 0:3de9cb936fd1 61 * that failed. If expr is true, it returns no value.
nikapov 0:3de9cb936fd1 62 * @retval None
nikapov 0:3de9cb936fd1 63 */
nikapov 0:3de9cb936fd1 64 #define LPS22HB_assert_param(expr) ((expr) ? (void)0 : LPS22HB_assert_failed((uint8_t *)__FILE__, __LINE__))
nikapov 0:3de9cb936fd1 65 /* Exported functions ------------------------------------------------------- */
nikapov 0:3de9cb936fd1 66 void LPS22HB_assert_failed(uint8_t* file, uint32_t line);
nikapov 0:3de9cb936fd1 67 #else
nikapov 0:3de9cb936fd1 68 #define LPS22HB_assert_param(expr) ((void)0)
nikapov 0:3de9cb936fd1 69 #endif /* USE_FULL_ASSERT_LPS22HB */
nikapov 0:3de9cb936fd1 70
nikapov 0:3de9cb936fd1 71 /** @addtogroup Environmental_Sensor
nikapov 0:3de9cb936fd1 72 * @{
nikapov 0:3de9cb936fd1 73 */
nikapov 0:3de9cb936fd1 74
nikapov 0:3de9cb936fd1 75 /** @addtogroup LPS22HB_DRIVER
nikapov 0:3de9cb936fd1 76 * @{
nikapov 0:3de9cb936fd1 77 */
nikapov 0:3de9cb936fd1 78
nikapov 0:3de9cb936fd1 79 /* Exported Types -------------------------------------------------------------*/
nikapov 0:3de9cb936fd1 80 /** @defgroup LPS22HB_Exported_Types
nikapov 0:3de9cb936fd1 81 * @{
nikapov 0:3de9cb936fd1 82 */
nikapov 0:3de9cb936fd1 83
nikapov 0:3de9cb936fd1 84 /**
nikapov 0:3de9cb936fd1 85 * @brief Error type.
nikapov 0:3de9cb936fd1 86 */
nikapov 0:3de9cb936fd1 87 typedef enum {LPS22HB_OK = (uint8_t)0, LPS22HB_ERROR = !LPS22HB_OK} LPS22HB_Error_et;
nikapov 0:3de9cb936fd1 88
nikapov 0:3de9cb936fd1 89 /**
nikapov 0:3de9cb936fd1 90 * @brief Enable/Disable type.
nikapov 0:3de9cb936fd1 91 */
nikapov 0:3de9cb936fd1 92 typedef enum {LPS22HB_DISABLE = (uint8_t)0, LPS22HB_ENABLE = !LPS22HB_DISABLE} LPS22HB_State_et;
nikapov 0:3de9cb936fd1 93 #define IS_LPS22HB_State(MODE) ((MODE == LPS22HB_ENABLE) || (MODE == LPS22HB_DISABLE) )
nikapov 0:3de9cb936fd1 94
nikapov 0:3de9cb936fd1 95 /**
nikapov 0:3de9cb936fd1 96 * @brief Bit status type.
nikapov 0:3de9cb936fd1 97 */
nikapov 0:3de9cb936fd1 98 typedef enum {LPS22HB_RESET = (uint8_t)0, LPS22HB_SET = !LPS22HB_RESET} LPS22HB_BitStatus_et;
nikapov 0:3de9cb936fd1 99 #define IS_LPS22HB_BitStatus(MODE) ((MODE == LPS22HB_RESET) || (MODE == LPS22HB_SET))
nikapov 0:3de9cb936fd1 100
nikapov 0:3de9cb936fd1 101 /*RES_CONF see LC_EN bit*/
nikapov 0:3de9cb936fd1 102 /**
nikapov 0:3de9cb936fd1 103 * @brief LPS22HB Power/Noise Mode configuration.
nikapov 0:3de9cb936fd1 104 */
nikapov 0:3de9cb936fd1 105 typedef enum {
nikapov 0:3de9cb936fd1 106 LPS22HB_LowNoise = (uint8_t)0x00, /*!< Low Noise mode */
nikapov 0:3de9cb936fd1 107 LPS22HB_LowPower = (uint8_t)0x01 /*!< Low Current mode */
nikapov 0:3de9cb936fd1 108 } LPS22HB_PowerMode_et;
nikapov 0:3de9cb936fd1 109
nikapov 0:3de9cb936fd1 110 #define IS_LPS22HB_PowerMode(MODE) ((MODE == LPS22HB_LowNoise) || (MODE == LPS22HB_LowPower))
nikapov 0:3de9cb936fd1 111
nikapov 0:3de9cb936fd1 112 /**
nikapov 0:3de9cb936fd1 113 * @brief Output data rate configuration.
nikapov 0:3de9cb936fd1 114 */
nikapov 0:3de9cb936fd1 115 typedef enum {
nikapov 0:3de9cb936fd1 116
nikapov 0:3de9cb936fd1 117 LPS22HB_ODR_ONE_SHOT = (uint8_t)0x00, /*!< Output Data Rate: one shot */
nikapov 0:3de9cb936fd1 118 LPS22HB_ODR_1HZ = (uint8_t)0x10, /*!< Output Data Rate: 1Hz */
nikapov 0:3de9cb936fd1 119 LPS22HB_ODR_10HZ = (uint8_t)0x20, /*!< Output Data Rate: 10Hz */
nikapov 0:3de9cb936fd1 120 LPS22HB_ODR_25HZ = (uint8_t)0x30, /*!< Output Data Rate: 25Hz */
nikapov 0:3de9cb936fd1 121 LPS22HB_ODR_50HZ = (uint8_t)0x40, /*!< Output Data Rate: 50Hz */
nikapov 0:3de9cb936fd1 122 LPS22HB_ODR_75HZ = (uint8_t)0x50 /*!< Output Data Rate: 75Hz */
nikapov 0:3de9cb936fd1 123 } LPS22HB_Odr_et;
nikapov 0:3de9cb936fd1 124
nikapov 0:3de9cb936fd1 125 #define IS_LPS22HB_ODR(ODR) ((ODR == LPS22HB_ODR_ONE_SHOT) || (ODR == LPS22HB_ODR_1HZ) || \
nikapov 0:3de9cb936fd1 126 (ODR == LPS22HB_ODR_10HZ) || (ODR == LPS22HB_ODR_25HZ)|| (ODR == LPS22HB_ODR_50HZ) || (ODR == LPS22HB_ODR_75HZ))
nikapov 0:3de9cb936fd1 127
nikapov 0:3de9cb936fd1 128 /**
nikapov 0:3de9cb936fd1 129 * @brief Low Pass Filter Cutoff Configuration.
nikapov 0:3de9cb936fd1 130 */
nikapov 0:3de9cb936fd1 131 typedef enum {
nikapov 0:3de9cb936fd1 132
nikapov 0:3de9cb936fd1 133 LPS22HB_ODR_9 = (uint8_t)0x00, /*!< Filter Cutoff ODR/9 */
nikapov 0:3de9cb936fd1 134 LPS22HB_ODR_20 = (uint8_t)0x04 /*!< Filter Cutoff ODR/20 */
nikapov 0:3de9cb936fd1 135 } LPS22HB_LPF_Cutoff_et;
nikapov 0:3de9cb936fd1 136
nikapov 0:3de9cb936fd1 137 #define IS_LPS22HB_LPF_Cutoff(CUTOFF) ((CUTOFF == LPS22HB_ODR_9) || (CUTOFF == LPS22HB_ODR_20) )
nikapov 0:3de9cb936fd1 138
nikapov 0:3de9cb936fd1 139 /**
nikapov 0:3de9cb936fd1 140 * @brief Block data update.
nikapov 0:3de9cb936fd1 141 */
nikapov 0:3de9cb936fd1 142
nikapov 0:3de9cb936fd1 143 typedef enum {
nikapov 0:3de9cb936fd1 144 LPS22HB_BDU_CONTINUOUS_UPDATE = (uint8_t)0x00, /*!< Data updated continuously */
nikapov 0:3de9cb936fd1 145 LPS22HB_BDU_NO_UPDATE = (uint8_t)0x02 /*!< Data updated after a read operation */
nikapov 0:3de9cb936fd1 146 } LPS22HB_Bdu_et;
nikapov 0:3de9cb936fd1 147 #define IS_LPS22HB_BDUMode(MODE) ((MODE == LPS22HB_BDU_CONTINUOUS_UPDATE) || (MODE == LPS22HB_BDU_NO_UPDATE))
nikapov 0:3de9cb936fd1 148
nikapov 0:3de9cb936fd1 149 /**
nikapov 0:3de9cb936fd1 150 * @brief LPS22HB Spi Mode configuration.
nikapov 0:3de9cb936fd1 151 */
nikapov 0:3de9cb936fd1 152 typedef enum {
nikapov 0:3de9cb936fd1 153 LPS22HB_SPI_4_WIRE = (uint8_t)0x00,
nikapov 0:3de9cb936fd1 154 LPS22HB_SPI_3_WIRE = (uint8_t)0x01
nikapov 0:3de9cb936fd1 155 } LPS22HB_SPIMode_et;
nikapov 0:3de9cb936fd1 156
nikapov 0:3de9cb936fd1 157 #define IS_LPS22HB_SPIMode(MODE) ((MODE == LPS22HB_SPI_4_WIRE) || (MODE == LPS22HB_SPI_3_WIRE))
nikapov 0:3de9cb936fd1 158
nikapov 0:3de9cb936fd1 159
nikapov 0:3de9cb936fd1 160 /**
nikapov 0:3de9cb936fd1 161 * @brief LPS22HB Interrupt Active Level Configuration (on High or Low)
nikapov 0:3de9cb936fd1 162 */
nikapov 0:3de9cb936fd1 163 typedef enum
nikapov 0:3de9cb936fd1 164 {
nikapov 0:3de9cb936fd1 165 LPS22HB_ActiveHigh = (uint8_t)0x00,
nikapov 0:3de9cb936fd1 166 LPS22HB_ActiveLow = (uint8_t)0x80
nikapov 0:3de9cb936fd1 167 }LPS22HB_InterruptActiveLevel_et;
nikapov 0:3de9cb936fd1 168 #define IS_LPS22HB_InterruptActiveLevel(MODE) ((MODE == LPS22HB_ActiveHigh) || (MODE == LPS22HB_ActiveLow))
nikapov 0:3de9cb936fd1 169
nikapov 0:3de9cb936fd1 170 /**
nikapov 0:3de9cb936fd1 171 * @brief LPS22HB Push-pull/Open Drain selection on Interrupt pads.
nikapov 0:3de9cb936fd1 172 */
nikapov 0:3de9cb936fd1 173 typedef enum
nikapov 0:3de9cb936fd1 174 {
nikapov 0:3de9cb936fd1 175 LPS22HB_PushPull = (uint8_t)0x00,
nikapov 0:3de9cb936fd1 176 LPS22HB_OpenDrain = (uint8_t)0x40
nikapov 0:3de9cb936fd1 177 }LPS22HB_OutputType_et;
nikapov 0:3de9cb936fd1 178 #define IS_LPS22HB_OutputType(MODE) ((MODE == LPS22HB_PushPull) || (MODE == LPS22HB_OpenDrain))
nikapov 0:3de9cb936fd1 179
nikapov 0:3de9cb936fd1 180
nikapov 0:3de9cb936fd1 181 /**
nikapov 0:3de9cb936fd1 182 * @brief Data Signal on INT pad control bits.
nikapov 0:3de9cb936fd1 183 */
nikapov 0:3de9cb936fd1 184 typedef enum
nikapov 0:3de9cb936fd1 185 {
nikapov 0:3de9cb936fd1 186 LPS22HB_DATA = (uint8_t)0x00,
nikapov 0:3de9cb936fd1 187 LPS22HB_P_HIGH = (uint8_t)0x01,
nikapov 0:3de9cb936fd1 188 LPS22HB_P_LOW = (uint8_t)0x02,
nikapov 0:3de9cb936fd1 189 LPS22HB_P_LOW_HIGH = (uint8_t)0x03
nikapov 0:3de9cb936fd1 190 }LPS22HB_OutputSignalConfig_et;
nikapov 0:3de9cb936fd1 191 #define IS_LPS22HB_OutputSignal(MODE) ((MODE == LPS22HB_DATA) || (MODE == LPS22HB_P_HIGH)||\
nikapov 0:3de9cb936fd1 192 (MODE == LPS22HB_P_LOW) || (MODE == LPS22HB_P_LOW_HIGH))
nikapov 0:3de9cb936fd1 193
nikapov 0:3de9cb936fd1 194
nikapov 0:3de9cb936fd1 195
nikapov 0:3de9cb936fd1 196 /**
nikapov 0:3de9cb936fd1 197 * @brief LPS22HB Interrupt Differential Status.
nikapov 0:3de9cb936fd1 198 */
nikapov 0:3de9cb936fd1 199
nikapov 0:3de9cb936fd1 200 typedef struct
nikapov 0:3de9cb936fd1 201 {
nikapov 0:3de9cb936fd1 202 uint8_t PH; /*!< High Differential Pressure event occured */
nikapov 0:3de9cb936fd1 203 uint8_t PL; /*!< Low Differential Pressure event occured */
nikapov 0:3de9cb936fd1 204 uint8_t IA; /*!< One or more interrupt events have been generated.Interrupt Active */
nikapov 0:3de9cb936fd1 205 uint8_t BOOT; /*!< i '1' indicates that the Boot (Reboot) phase is running */
nikapov 0:3de9cb936fd1 206 }LPS22HB_InterruptDiffStatus_st;
nikapov 0:3de9cb936fd1 207
nikapov 0:3de9cb936fd1 208
nikapov 0:3de9cb936fd1 209 /**
nikapov 0:3de9cb936fd1 210 * @brief LPS22HB Pressure and Temperature data status.
nikapov 0:3de9cb936fd1 211 */
nikapov 0:3de9cb936fd1 212 typedef struct
nikapov 0:3de9cb936fd1 213 {
nikapov 0:3de9cb936fd1 214 uint8_t TempDataAvailable; /*!< Temperature data available bit */
nikapov 0:3de9cb936fd1 215 uint8_t PressDataAvailable; /*!< Pressure data available bit */
nikapov 0:3de9cb936fd1 216 uint8_t TempDataOverrun; /*!< Temperature data over-run bit */
nikapov 0:3de9cb936fd1 217 uint8_t PressDataOverrun; /*!< Pressure data over-run bit */
nikapov 0:3de9cb936fd1 218 }LPS22HB_DataStatus_st;
nikapov 0:3de9cb936fd1 219
nikapov 0:3de9cb936fd1 220
nikapov 0:3de9cb936fd1 221 /**
nikapov 0:3de9cb936fd1 222 * @brief LPS22HB Clock Tree configuration.
nikapov 0:3de9cb936fd1 223 */
nikapov 0:3de9cb936fd1 224 typedef enum {
nikapov 0:3de9cb936fd1 225 LPS22HB_CTE_NotBalanced = (uint8_t)0x00,
nikapov 0:3de9cb936fd1 226 LPS22HB_CTE_Balanced = (uint8_t)0x20
nikapov 0:3de9cb936fd1 227 } LPS22HB_CTE_et;
nikapov 0:3de9cb936fd1 228
nikapov 0:3de9cb936fd1 229 #define IS_LPS22HB_CTE(MODE) ((MODE == LPS22HB_CTE_NotBalanced) || (MODE == LPS22HB_CTE_Balanced))
nikapov 0:3de9cb936fd1 230
nikapov 0:3de9cb936fd1 231 /**
nikapov 0:3de9cb936fd1 232 * @brief LPS22HB Fifo Mode.
nikapov 0:3de9cb936fd1 233 */
nikapov 0:3de9cb936fd1 234
nikapov 0:3de9cb936fd1 235 typedef enum {
nikapov 0:3de9cb936fd1 236 LPS22HB_FIFO_BYPASS_MODE = (uint8_t)0x00, /*!< The FIFO is disabled and empty. The pressure is read directly*/
nikapov 0:3de9cb936fd1 237 LPS22HB_FIFO_MODE = (uint8_t)0x20, /*!< Stops collecting data when full */
nikapov 0:3de9cb936fd1 238 LPS22HB_FIFO_STREAM_MODE = (uint8_t)0x40, /*!< Keep the newest measurements in the FIFO*/
nikapov 0:3de9cb936fd1 239 LPS22HB_FIFO_TRIGGER_STREAMTOFIFO_MODE = (uint8_t)0x60, /*!< STREAM MODE until trigger deasserted, then change to FIFO MODE*/
nikapov 0:3de9cb936fd1 240 LPS22HB_FIFO_TRIGGER_BYPASSTOSTREAM_MODE = (uint8_t)0x80, /*!< BYPASS MODE until trigger deasserted, then STREAM MODE*/
nikapov 0:3de9cb936fd1 241 LPS22HB_FIFO_TRIGGER_BYPASSTOFIFO_MODE = (uint8_t)0xE0 /*!< BYPASS mode until trigger deasserted, then FIFO MODE*/
nikapov 0:3de9cb936fd1 242 } LPS22HB_FifoMode_et;
nikapov 0:3de9cb936fd1 243
nikapov 0:3de9cb936fd1 244 #define IS_LPS22HB_FifoMode(MODE) ((MODE == LPS22HB_FIFO_BYPASS_MODE) || (MODE ==LPS22HB_FIFO_MODE)||\
nikapov 0:3de9cb936fd1 245 (MODE == LPS22HB_FIFO_STREAM_MODE) || (MODE == LPS22HB_FIFO_TRIGGER_STREAMTOFIFO_MODE)||\
nikapov 0:3de9cb936fd1 246 (MODE == LPS22HB_FIFO_TRIGGER_BYPASSTOSTREAM_MODE) || (MODE == LPS22HB_FIFO_TRIGGER_BYPASSTOFIFO_MODE))
nikapov 0:3de9cb936fd1 247
nikapov 0:3de9cb936fd1 248
nikapov 0:3de9cb936fd1 249 /**
nikapov 0:3de9cb936fd1 250 * @brief LPS22HB Fifo Satus.
nikapov 0:3de9cb936fd1 251 */
nikapov 0:3de9cb936fd1 252 typedef struct {
nikapov 0:3de9cb936fd1 253 uint8_t FIFO_LEVEL; /*!< FIFO Stored data level: 00000: FIFO empty; 10000: FIFO is FULL and ha 32 unread samples */
nikapov 0:3de9cb936fd1 254 uint8_t FIFO_EMPTY; /*!< Empty FIFO Flag .1 FIFO is empty (see FIFO_level) */
nikapov 0:3de9cb936fd1 255 uint8_t FIFO_FULL; /*!< Full FIFO flag.1 FIFO is Full (see FIFO_level) */
nikapov 0:3de9cb936fd1 256 uint8_t FIFO_OVR; /*!< Overrun bit status. 1 FIFO is full and at least one sample in the FIFO has been overwritten */
nikapov 0:3de9cb936fd1 257 uint8_t FIFO_FTH; /*!< FIFO Threshold (Watermark) Status. 1 FIFO filling is equal or higher then FTH (wtm) level.*/
nikapov 0:3de9cb936fd1 258 }LPS22HB_FifoStatus_st;
nikapov 0:3de9cb936fd1 259
nikapov 0:3de9cb936fd1 260
nikapov 0:3de9cb936fd1 261
nikapov 0:3de9cb936fd1 262 /**
nikapov 0:3de9cb936fd1 263 * @brief LPS22HB Configuration structure definition.
nikapov 0:3de9cb936fd1 264 */
nikapov 0:3de9cb936fd1 265 typedef struct
nikapov 0:3de9cb936fd1 266 {
nikapov 0:3de9cb936fd1 267 LPS22HB_PowerMode_et PowerMode; /*!< Enable Low Current Mode (low Power) or Low Noise Mode*/
nikapov 0:3de9cb936fd1 268 LPS22HB_Odr_et OutputDataRate; /*!< Output Data Rate */
nikapov 0:3de9cb936fd1 269 LPS22HB_Bdu_et BDU; /*!< Enable to inhibit the output registers update between the reading of upper and lower register parts.*/
nikapov 0:3de9cb936fd1 270 LPS22HB_State_et LowPassFilter; /*!< Enable/ Disable Low Pass Filter */
nikapov 0:3de9cb936fd1 271 LPS22HB_LPF_Cutoff_et LPF_Cutoff; /*!< Low Pass Filter Configuration */
nikapov 0:3de9cb936fd1 272 LPS22HB_SPIMode_et Sim; /*!< SPI Serial Interface Mode selection */
nikapov 0:3de9cb936fd1 273 LPS22HB_State_et IfAddInc; /*!< Enable/Disable Register address automatically inceremented during a multiple byte access */
nikapov 0:3de9cb936fd1 274 }LPS22HB_ConfigTypeDef_st;
nikapov 0:3de9cb936fd1 275
nikapov 0:3de9cb936fd1 276
nikapov 0:3de9cb936fd1 277 /**
nikapov 0:3de9cb936fd1 278 * @brief LPS22HB Interrupt structure definition .
nikapov 0:3de9cb936fd1 279 */
nikapov 0:3de9cb936fd1 280 typedef struct {
nikapov 0:3de9cb936fd1 281 LPS22HB_InterruptActiveLevel_et INT_H_L; /*!< Interrupt active high, low. Default value: 0 */
nikapov 0:3de9cb936fd1 282 LPS22HB_OutputType_et PP_OD; /*!< Push-pull/open drain selection on interrupt pads. Default value: 0 */
nikapov 0:3de9cb936fd1 283 LPS22HB_OutputSignalConfig_et OutputSignal_INT; /*!< Data signal on INT Pad: Data,Pressure High, Preessure Low,P High or Low*/
nikapov 0:3de9cb936fd1 284 LPS22HB_State_et DRDY; /*!< Enable/Disable Data Ready Interrupt on INT_DRDY Pin*/
nikapov 0:3de9cb936fd1 285 LPS22HB_State_et FIFO_OVR; /*!< Enable/Disable FIFO Overrun Interrupt on INT_DRDY Pin*/
nikapov 0:3de9cb936fd1 286 LPS22HB_State_et FIFO_FTH; /*!< Enable/Disable FIFO threshold (Watermark) interrupt on INT_DRDY pin.*/
nikapov 0:3de9cb936fd1 287 LPS22HB_State_et FIFO_FULL; /*!< Enable/Disable FIFO FULL interrupt on INT_DRDY pin.*/
nikapov 0:3de9cb936fd1 288 LPS22HB_State_et LatchIRQ; /*!< Latch Interrupt request in to INT_SOURCE reg*/
nikapov 0:3de9cb936fd1 289 int16_t THS_threshold; /*!< Threshold value for pressure interrupt generation*/
nikapov 0:3de9cb936fd1 290 LPS22HB_State_et AutoRifP; /*!< Enable/Disable AutoRifP function */
nikapov 0:3de9cb936fd1 291 LPS22HB_State_et AutoZero; /*!< Enable/Disable AutoZero function */
nikapov 0:3de9cb936fd1 292 }LPS22HB_InterruptTypeDef_st;
nikapov 0:3de9cb936fd1 293
nikapov 0:3de9cb936fd1 294 /**
nikapov 0:3de9cb936fd1 295 * @brief LPS22HB FIFO structure definition.
nikapov 0:3de9cb936fd1 296 */
nikapov 0:3de9cb936fd1 297 typedef struct {
nikapov 0:3de9cb936fd1 298 LPS22HB_FifoMode_et FIFO_MODE; /*!< Fifo Mode Selection */
nikapov 0:3de9cb936fd1 299 LPS22HB_State_et WTM_INT; /*!< Enable/Disable the watermark interrupt*/
nikapov 0:3de9cb936fd1 300 uint8_t WTM_LEVEL; /*!< FIFO threshold/Watermark level selection*/
nikapov 0:3de9cb936fd1 301 }LPS22HB_FIFOTypeDef_st;
nikapov 0:3de9cb936fd1 302
nikapov 0:3de9cb936fd1 303 #define IS_LPS22HB_WtmLevel(LEVEL) ((LEVEL > 0) && (LEVEL <=31))
nikapov 0:3de9cb936fd1 304 /**
nikapov 0:3de9cb936fd1 305 * @brief LPS22HB Measure Type definition.
nikapov 0:3de9cb936fd1 306 */
nikapov 0:3de9cb936fd1 307 typedef struct {
nikapov 0:3de9cb936fd1 308 int16_t Tout;
nikapov 0:3de9cb936fd1 309 int32_t Pout;
nikapov 0:3de9cb936fd1 310 }LPS22HB_MeasureTypeDef_st;
nikapov 0:3de9cb936fd1 311
nikapov 0:3de9cb936fd1 312
nikapov 0:3de9cb936fd1 313 /**
nikapov 0:3de9cb936fd1 314 * @brief LPS22HB Driver Version Info structure definition.
nikapov 0:3de9cb936fd1 315 */
nikapov 0:3de9cb936fd1 316 typedef struct {
nikapov 0:3de9cb936fd1 317 uint8_t Major;
nikapov 0:3de9cb936fd1 318 uint8_t Minor;
nikapov 0:3de9cb936fd1 319 uint8_t Point;
nikapov 0:3de9cb936fd1 320 }LPS22HB_driverVersion_st;
nikapov 0:3de9cb936fd1 321
nikapov 0:3de9cb936fd1 322
nikapov 0:3de9cb936fd1 323 /**
nikapov 0:3de9cb936fd1 324 * @brief Bitfield positioning.
nikapov 0:3de9cb936fd1 325 */
nikapov 0:3de9cb936fd1 326 #define LPS22HB_BIT(x) ((uint8_t)x)
nikapov 0:3de9cb936fd1 327
nikapov 0:3de9cb936fd1 328 /**
nikapov 0:3de9cb936fd1 329 * @brief I2C address.
nikapov 0:3de9cb936fd1 330 */
nikapov 0:3de9cb936fd1 331 /* SD0/SA0(pin 5) is connected to the voltage supply */
nikapov 0:3de9cb936fd1 332 #define LPS22HB_ADDRESS_HIGH 0xBA /**< LPS22HB I2C Address High */
nikapov 0:3de9cb936fd1 333 /* SDO/SA0 (pin5) is connected to the GND */
nikapov 0:3de9cb936fd1 334 #define LPS22HB_ADDRESS_LOW 0xB8 /**< LPS22HB I2C Address Low */
nikapov 0:3de9cb936fd1 335
nikapov 0:3de9cb936fd1 336 /**
nikapov 0:3de9cb936fd1 337 * @brief Set the LPS22HB driver version.
nikapov 0:3de9cb936fd1 338 */
nikapov 0:3de9cb936fd1 339
nikapov 0:3de9cb936fd1 340 #define LPS22HB_driverVersion_Major (uint8_t)1
nikapov 0:3de9cb936fd1 341 #define LPS22HB_driverVersion_Minor (uint8_t)0
nikapov 0:3de9cb936fd1 342 #define LPS22HB_driverVersion_Point (uint8_t)0
nikapov 0:3de9cb936fd1 343
nikapov 0:3de9cb936fd1 344 /**
nikapov 0:3de9cb936fd1 345 * @}
nikapov 0:3de9cb936fd1 346 */
nikapov 0:3de9cb936fd1 347
nikapov 0:3de9cb936fd1 348
nikapov 0:3de9cb936fd1 349 /* Exported Constants ---------------------------------------------------------*/
nikapov 0:3de9cb936fd1 350 /** @defgroup LPS22HB_Exported_Constants
nikapov 0:3de9cb936fd1 351 * @{
nikapov 0:3de9cb936fd1 352 */
nikapov 0:3de9cb936fd1 353
nikapov 0:3de9cb936fd1 354
nikapov 0:3de9cb936fd1 355 /**
nikapov 0:3de9cb936fd1 356 * @addtogroup LPS22HB_Register
nikapov 0:3de9cb936fd1 357 * @{
nikapov 0:3de9cb936fd1 358 */
nikapov 0:3de9cb936fd1 359
nikapov 0:3de9cb936fd1 360
nikapov 0:3de9cb936fd1 361
nikapov 0:3de9cb936fd1 362 /**
nikapov 0:3de9cb936fd1 363 * @brief Device Identification register.
nikapov 0:3de9cb936fd1 364 * \code
nikapov 0:3de9cb936fd1 365 * Read
nikapov 0:3de9cb936fd1 366 * Default value: 0xB1
nikapov 0:3de9cb936fd1 367 * 7:0 This read-only register contains the device identifier that, for LPS22HB, is set to B1h.
nikapov 0:3de9cb936fd1 368 * \endcode
nikapov 0:3de9cb936fd1 369 */
nikapov 0:3de9cb936fd1 370
nikapov 0:3de9cb936fd1 371 #define LPS22HB_WHO_AM_I_REG (uint8_t)0x0F
nikapov 0:3de9cb936fd1 372
nikapov 0:3de9cb936fd1 373 /**
nikapov 0:3de9cb936fd1 374 * @brief Device Identification value.
nikapov 0:3de9cb936fd1 375 */
nikapov 0:3de9cb936fd1 376 #define LPS22HB_WHO_AM_I_VAL (uint8_t)0xB1
nikapov 0:3de9cb936fd1 377
nikapov 0:3de9cb936fd1 378
nikapov 0:3de9cb936fd1 379 /**
nikapov 0:3de9cb936fd1 380 * @brief Reference Pressure Register(LSB data)
nikapov 0:3de9cb936fd1 381 * \code
nikapov 0:3de9cb936fd1 382 * Read/write
nikapov 0:3de9cb936fd1 383 * Default value: 0x00
nikapov 0:3de9cb936fd1 384 * 7:0 REFL7-0: Lower part of the reference pressure value that
nikapov 0:3de9cb936fd1 385 * is sum to the sensor output pressure.
nikapov 0:3de9cb936fd1 386 * \endcode
nikapov 0:3de9cb936fd1 387 */
nikapov 0:3de9cb936fd1 388 #define LPS22HB_REF_P_XL_REG (uint8_t)0x15
nikapov 0:3de9cb936fd1 389
nikapov 0:3de9cb936fd1 390
nikapov 0:3de9cb936fd1 391 /**
nikapov 0:3de9cb936fd1 392 * @brief Reference Pressure Register (Middle data)
nikapov 0:3de9cb936fd1 393 * \code
nikapov 0:3de9cb936fd1 394 * Read/write
nikapov 0:3de9cb936fd1 395 * Default value: 0x00
nikapov 0:3de9cb936fd1 396 * 7:0 REFL15-8: Middle part of the reference pressure value that
nikapov 0:3de9cb936fd1 397 * is sum to the sensor output pressure.
nikapov 0:3de9cb936fd1 398 * \endcode
nikapov 0:3de9cb936fd1 399 */
nikapov 0:3de9cb936fd1 400 #define LPS22HB_REF_P_L_REG (uint8_t)0x16
nikapov 0:3de9cb936fd1 401
nikapov 0:3de9cb936fd1 402 /**
nikapov 0:3de9cb936fd1 403 * @brief Reference Pressure Register (MSB data)
nikapov 0:3de9cb936fd1 404 * \code
nikapov 0:3de9cb936fd1 405 * Read/write
nikapov 0:3de9cb936fd1 406 * Default value: 0x00
nikapov 0:3de9cb936fd1 407 * 7:0 REFL23-16 Higest part of the reference pressure value that
nikapov 0:3de9cb936fd1 408 * is sum to the sensor output pressure.
nikapov 0:3de9cb936fd1 409 * \endcode
nikapov 0:3de9cb936fd1 410 */
nikapov 0:3de9cb936fd1 411 #define LPS22HB_REF_P_H_REG (uint8_t)0x17
nikapov 0:3de9cb936fd1 412
nikapov 0:3de9cb936fd1 413
nikapov 0:3de9cb936fd1 414 /**
nikapov 0:3de9cb936fd1 415 * @brief Pressure and temperature resolution mode Register
nikapov 0:3de9cb936fd1 416 * \code
nikapov 0:3de9cb936fd1 417 * Read/write
nikapov 0:3de9cb936fd1 418 * Default value: 0x05
nikapov 0:3de9cb936fd1 419 * 7:2 These bits must be set to 0 for proper operation of the device
nikapov 0:3de9cb936fd1 420 * 1: Reserved
nikapov 0:3de9cb936fd1 421 * 0 LC_EN: Low Current Mode Enable. Default 0
nikapov 0:3de9cb936fd1 422 * \endcode
nikapov 0:3de9cb936fd1 423 */
nikapov 0:3de9cb936fd1 424 #define LPS22HB_RES_CONF_REG (uint8_t)0x1A
nikapov 0:3de9cb936fd1 425
nikapov 0:3de9cb936fd1 426 #define LPS22HB_LCEN_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 427
nikapov 0:3de9cb936fd1 428 /**
nikapov 0:3de9cb936fd1 429 * @brief Control Register 1
nikapov 0:3de9cb936fd1 430 * \code
nikapov 0:3de9cb936fd1 431 * Read/write
nikapov 0:3de9cb936fd1 432 * Default value: 0x00
nikapov 0:3de9cb936fd1 433 * 7: This bit must be set to 0 for proper operation of the device
nikapov 0:3de9cb936fd1 434 * 6:4 ODR2, ODR1, ODR0: output data rate selection.Default 000
nikapov 0:3de9cb936fd1 435 * ODR2 | ODR1 | ODR0 | Pressure output data-rate(Hz) | Pressure output data-rate(Hz)
nikapov 0:3de9cb936fd1 436 * ----------------------------------------------------------------------------------
nikapov 0:3de9cb936fd1 437 * 0 | 0 | 0 | one shot | one shot
nikapov 0:3de9cb936fd1 438 * 0 | 0 | 1 | 1 | 1
nikapov 0:3de9cb936fd1 439 * 0 | 1 | 0 | 10 | 10
nikapov 0:3de9cb936fd1 440 * 0 | 1 | 1 | 25 | 25
nikapov 0:3de9cb936fd1 441 * 1 | 0 | 0 | 50 | 50
nikapov 0:3de9cb936fd1 442 * 1 | 0 | 1 | 75 | 75
nikapov 0:3de9cb936fd1 443 * 1 | 1 | 0 | Reserved | Reserved
nikapov 0:3de9cb936fd1 444 * 1 | 1 | 1 | Reserved | Reserved
nikapov 0:3de9cb936fd1 445 *
nikapov 0:3de9cb936fd1 446 * 3 EN_LPFP: Enable Low Pass filter on Pressure data. Default value:0
nikapov 0:3de9cb936fd1 447 * 2:LPF_CFG Low-pass configuration register. (0: Filter cutoff is ODR/9; 1: filter cutoff is ODR/20)
nikapov 0:3de9cb936fd1 448 * 1 BDU: block data update. 0 - continuous update; 1 - output registers not updated until MSB and LSB reading.
nikapov 0:3de9cb936fd1 449 * 0 SIM: SPI Serial Interface Mode selection. 0 - SPI 4-wire; 1 - SPI 3-wire
nikapov 0:3de9cb936fd1 450 * \endcode
nikapov 0:3de9cb936fd1 451 */
nikapov 0:3de9cb936fd1 452 #define LPS22HB_CTRL_REG1 (uint8_t)0x10
nikapov 0:3de9cb936fd1 453
nikapov 0:3de9cb936fd1 454 #define LPS22HB_ODR_MASK (uint8_t)0x70
nikapov 0:3de9cb936fd1 455 #define LPS22HB_LPFP_MASK (uint8_t)0x08
nikapov 0:3de9cb936fd1 456 #define LPS22HB_LPFP_CUTOFF_MASK (uint8_t)0x04
nikapov 0:3de9cb936fd1 457 #define LPS22HB_BDU_MASK (uint8_t)0x02
nikapov 0:3de9cb936fd1 458 #define LPS22HB_SIM_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 459
nikapov 0:3de9cb936fd1 460 #define LPS22HB_LPFP_BIT LPS22HB_BIT(3)
nikapov 0:3de9cb936fd1 461
nikapov 0:3de9cb936fd1 462
nikapov 0:3de9cb936fd1 463 /**
nikapov 0:3de9cb936fd1 464 * @brief Control Register 2
nikapov 0:3de9cb936fd1 465 * \code
nikapov 0:3de9cb936fd1 466 * Read/write
nikapov 0:3de9cb936fd1 467 * Default value: 0x10
nikapov 0:3de9cb936fd1 468 * 7 BOOT: Reboot memory content. 0: normal mode; 1: reboot memory content. Self-clearing upon completation
nikapov 0:3de9cb936fd1 469 * 6 FIFO_EN: FIFO Enable. 0: disable; 1: enable
nikapov 0:3de9cb936fd1 470 * 5 STOP_ON_FTH: Stop on FIFO Threshold FIFO Watermark level use. 0: disable; 1: enable
nikapov 0:3de9cb936fd1 471 * 4 IF_ADD_INC: Register address automatically incrementeed during a multiple byte access with a serial interface (I2C or SPI). Default value 1.( 0: disable; 1: enable)
nikapov 0:3de9cb936fd1 472 * 3 I2C DIS: Disable I2C interface 0: I2C Enabled; 1: I2C disabled
nikapov 0:3de9cb936fd1 473 * 2 SWRESET: Software reset. 0: normal mode; 1: SW reset. Self-clearing upon completation
nikapov 0:3de9cb936fd1 474 * 1 AUTO_ZERO: Autozero enable. 0: normal mode; 1: autozero enable.
nikapov 0:3de9cb936fd1 475 * 0 ONE_SHOT: One shot enable. 0: waiting for start of conversion; 1: start for a new dataset
nikapov 0:3de9cb936fd1 476 * \endcode
nikapov 0:3de9cb936fd1 477 */
nikapov 0:3de9cb936fd1 478 #define LPS22HB_CTRL_REG2 (uint8_t)0x11
nikapov 0:3de9cb936fd1 479
nikapov 0:3de9cb936fd1 480 #define LPS22HB_BOOT_BIT LPS22HB_BIT(7)
nikapov 0:3de9cb936fd1 481 #define LPS22HB_FIFO_EN_BIT LPS22HB_BIT(6)
nikapov 0:3de9cb936fd1 482 #define LPS22HB_WTM_EN_BIT LPS22HB_BIT(5)
nikapov 0:3de9cb936fd1 483 #define LPS22HB_ADD_INC_BIT LPS22HB_BIT(4)
nikapov 0:3de9cb936fd1 484 #define LPS22HB_I2C_BIT LPS22HB_BIT(3)
nikapov 0:3de9cb936fd1 485 #define LPS22HB_SW_RESET_BIT LPS22HB_BIT(2)
nikapov 0:3de9cb936fd1 486
nikapov 0:3de9cb936fd1 487 #define LPS22HB_FIFO_EN_MASK (uint8_t)0x40
nikapov 0:3de9cb936fd1 488 #define LPS22HB_WTM_EN_MASK (uint8_t)0x20
nikapov 0:3de9cb936fd1 489 #define LPS22HB_ADD_INC_MASK (uint8_t)0x10
nikapov 0:3de9cb936fd1 490 #define LPS22HB_I2C_MASK (uint8_t)0x08
nikapov 0:3de9cb936fd1 491 #define LPS22HB_ONE_SHOT_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 492
nikapov 0:3de9cb936fd1 493
nikapov 0:3de9cb936fd1 494 /**
nikapov 0:3de9cb936fd1 495 * @brief CTRL Reg3 Interrupt Control Register
nikapov 0:3de9cb936fd1 496 * \code
nikapov 0:3de9cb936fd1 497 * Read/write
nikapov 0:3de9cb936fd1 498 * Default value: 0x00
nikapov 0:3de9cb936fd1 499 * 7 INT_H_L: Interrupt active high, low. 0:active high; 1: active low.
nikapov 0:3de9cb936fd1 500 * 6 PP_OD: Push-Pull/OpenDrain selection on interrupt pads. 0: Push-pull; 1: open drain.
nikapov 0:3de9cb936fd1 501 * 5 F_FSS5: FIFO full flag on INT_DRDY pin. Defaul value: 0. (0: Diasable; 1 : Enable).
nikapov 0:3de9cb936fd1 502 * 4 F_FTH: FIFO threshold (watermark) status on INT_DRDY pin. Defaul value: 0. (0: Diasable; 1 : Enable).
nikapov 0:3de9cb936fd1 503 * 3 F_OVR: FIFO overrun interrupt on INT_DRDY pin. Defaul value: 0. (0: Diasable; 1 : Enable).
nikapov 0:3de9cb936fd1 504 * 2 DRDY: Data-ready signal on INT_DRDY pin. Defaul value: 0. (0: Diasable; 1 : Enable).
nikapov 0:3de9cb936fd1 505 * 1:0 INT_S2, INT_S1: data signal on INT pad control bits.
nikapov 0:3de9cb936fd1 506 * INT_S2 | INT_S1 | INT pin
nikapov 0:3de9cb936fd1 507 * ------------------------------------------------------
nikapov 0:3de9cb936fd1 508 * 0 | 0 | Data signal( in order of priority:PTH_DRDY or F_FTH or F_OVR_or F_FSS5
nikapov 0:3de9cb936fd1 509 * 0 | 1 | Pressure high (P_high)
nikapov 0:3de9cb936fd1 510 * 1 | 0 | Pressure low (P_low)
nikapov 0:3de9cb936fd1 511 * 1 | 1 | P_low OR P_high
nikapov 0:3de9cb936fd1 512 * \endcode
nikapov 0:3de9cb936fd1 513 */
nikapov 0:3de9cb936fd1 514 #define LPS22HB_CTRL_REG3 (uint8_t)0x12
nikapov 0:3de9cb936fd1 515
nikapov 0:3de9cb936fd1 516 #define LPS22HB_PP_OD_BIT LPS22HB_BIT(6)
nikapov 0:3de9cb936fd1 517 #define LPS22HB_FIFO_FULL_BIT LPS22HB_BIT(5)
nikapov 0:3de9cb936fd1 518 #define LPS22HB_FIFO_FTH_BIT LPS22HB_BIT(4)
nikapov 0:3de9cb936fd1 519 #define LPS22HB_FIFO_OVR_BIT LPS22HB_BIT(3)
nikapov 0:3de9cb936fd1 520 #define LPS22HB_DRDY_BIT LPS22HB_BIT(2)
nikapov 0:3de9cb936fd1 521
nikapov 0:3de9cb936fd1 522
nikapov 0:3de9cb936fd1 523 #define LPS22HB_INT_H_L_MASK (uint8_t)0x80
nikapov 0:3de9cb936fd1 524 #define LPS22HB_PP_OD_MASK (uint8_t)0x40
nikapov 0:3de9cb936fd1 525 #define LPS22HB_FIFO_FULL_MASK (uint8_t)0x20
nikapov 0:3de9cb936fd1 526 #define LPS22HB_FIFO_FTH_MASK (uint8_t)0x10
nikapov 0:3de9cb936fd1 527 #define LPS22HB_FIFO_OVR_MASK (uint8_t)0x08
nikapov 0:3de9cb936fd1 528 #define LPS22HB_DRDY_MASK (uint8_t)0x04
nikapov 0:3de9cb936fd1 529 #define LPS22HB_INT_S12_MASK (uint8_t)0x03
nikapov 0:3de9cb936fd1 530
nikapov 0:3de9cb936fd1 531
nikapov 0:3de9cb936fd1 532 /**
nikapov 0:3de9cb936fd1 533 * @brief Interrupt Differential configuration Register
nikapov 0:3de9cb936fd1 534 * \code
nikapov 0:3de9cb936fd1 535 * Read/write
nikapov 0:3de9cb936fd1 536 * Default value: 0x00.
nikapov 0:3de9cb936fd1 537 * 7 AUTORIFP: AutoRifP Enable ??
nikapov 0:3de9cb936fd1 538 * 6 RESET_ARP: Reset AutoRifP function
nikapov 0:3de9cb936fd1 539 * 4 AUTOZERO: Autozero enabled
nikapov 0:3de9cb936fd1 540 * 5 RESET_AZ: Reset Autozero Function
nikapov 0:3de9cb936fd1 541 * 3 DIFF_EN: Interrupt generation enable
nikapov 0:3de9cb936fd1 542 * 2 LIR: Latch Interrupt request into INT_SOURCE register. 0 - interrupt request not latched; 1 - interrupt request latched
nikapov 0:3de9cb936fd1 543 * 1 PL_E: Enable interrupt generation on differential pressure low event. 0 - disable; 1 - enable
nikapov 0:3de9cb936fd1 544 * 0 PH_E: Enable interrupt generation on differential pressure high event. 0 - disable; 1 - enable
nikapov 0:3de9cb936fd1 545 * \endcode
nikapov 0:3de9cb936fd1 546 */
nikapov 0:3de9cb936fd1 547 #define LPS22HB_INTERRUPT_CFG_REG (uint8_t)0x0B
nikapov 0:3de9cb936fd1 548
nikapov 0:3de9cb936fd1 549 #define LPS22HB_DIFF_EN_BIT LPS22HB_BIT(3)
nikapov 0:3de9cb936fd1 550 #define LPS22HB_LIR_BIT LPS22HB_BIT(2)
nikapov 0:3de9cb936fd1 551 #define LPS22HB_PLE_BIT LPS22HB_BIT(1)
nikapov 0:3de9cb936fd1 552 #define LPS22HB_PHE_BIT LPS22HB_BIT(0)
nikapov 0:3de9cb936fd1 553
nikapov 0:3de9cb936fd1 554 #define LPS22HB_AUTORIFP_MASK (uint8_t)0x80
nikapov 0:3de9cb936fd1 555 #define LPS22HB_RESET_ARP_MASK (uint8_t)0x40
nikapov 0:3de9cb936fd1 556 #define LPS22HB_AUTOZERO_MASK (uint8_t)0x20
nikapov 0:3de9cb936fd1 557 #define LPS22HB_RESET_AZ_MASK (uint8_t)0x10
nikapov 0:3de9cb936fd1 558 #define LPS22HB_DIFF_EN_MASK (uint8_t)0x08
nikapov 0:3de9cb936fd1 559 #define LPS22HB_LIR_MASK (uint8_t)0x04
nikapov 0:3de9cb936fd1 560 #define LPS22HB_PLE_MASK (uint8_t)0x02
nikapov 0:3de9cb936fd1 561 #define LPS22HB_PHE_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 562
nikapov 0:3de9cb936fd1 563
nikapov 0:3de9cb936fd1 564
nikapov 0:3de9cb936fd1 565 /**
nikapov 0:3de9cb936fd1 566 * @brief Interrupt source Register (It is cleared by reading it)
nikapov 0:3de9cb936fd1 567 * \code
nikapov 0:3de9cb936fd1 568 * Read
nikapov 0:3de9cb936fd1 569 * Default value: ----.
nikapov 0:3de9cb936fd1 570 * 7 BOOT_STATUS: If 1 indicates that the Boot (Reboot) phase is running.
nikapov 0:3de9cb936fd1 571 * 6:3 Reserved: Keep these bits at 0
nikapov 0:3de9cb936fd1 572 * 2 IA: Interrupt Active.0: no interrupt has been generated; 1: one or more interrupt events have been generated.
nikapov 0:3de9cb936fd1 573 * 1 PL: Differential pressure Low. 0: no interrupt has been generated; 1: Low differential pressure event has occurred.
nikapov 0:3de9cb936fd1 574 * 0 PH: Differential pressure High. 0: no interrupt has been generated; 1: High differential pressure event has occurred.
nikapov 0:3de9cb936fd1 575 * \endcode
nikapov 0:3de9cb936fd1 576 */
nikapov 0:3de9cb936fd1 577 #define LPS22HB_INTERRUPT_SOURCE_REG (uint8_t)0x25
nikapov 0:3de9cb936fd1 578
nikapov 0:3de9cb936fd1 579 #define LPS22HB_BOOT_STATUS_BIT LPS22HB_BIT(7)
nikapov 0:3de9cb936fd1 580 #define LPS22HB_IA_BIT LPS22HB_BIT(2)
nikapov 0:3de9cb936fd1 581 #define LPS22HB_PL_BIT LPS22HB_BIT(1)
nikapov 0:3de9cb936fd1 582 #define LPS22HB_PH_BIT LPS22HB_BIT(0)
nikapov 0:3de9cb936fd1 583
nikapov 0:3de9cb936fd1 584 #define LPS22HB_BOOT_STATUS_MASK (uint8_t)0x80
nikapov 0:3de9cb936fd1 585 #define LPS22HB_IA_MASK (uint8_t)0x04
nikapov 0:3de9cb936fd1 586 #define LPS22HB_PL_MASK (uint8_t)0x02
nikapov 0:3de9cb936fd1 587 #define LPS22HB_PH_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 588
nikapov 0:3de9cb936fd1 589
nikapov 0:3de9cb936fd1 590 /**
nikapov 0:3de9cb936fd1 591 * @brief Status Register
nikapov 0:3de9cb936fd1 592 * \code
nikapov 0:3de9cb936fd1 593 * Read
nikapov 0:3de9cb936fd1 594 * Default value: ---
nikapov 0:3de9cb936fd1 595 * 7:6 Reserved: 0
nikapov 0:3de9cb936fd1 596 * 5 T_OR: Temperature data overrun. 0: no overrun has occurred; 1: a new data for temperature has overwritten the previous one.
nikapov 0:3de9cb936fd1 597 * 4 P_OR: Pressure data overrun. 0: no overrun has occurred; 1: new data for pressure has overwritten the previous one.
nikapov 0:3de9cb936fd1 598 * 3:2 Reserved: 0
nikapov 0:3de9cb936fd1 599 * 1 T_DA: Temperature data available. 0: new data for temperature is not yet available; 1: new data for temperature is available.
nikapov 0:3de9cb936fd1 600 * 0 P_DA: Pressure data available. 0: new data for pressure is not yet available; 1: new data for pressure is available.
nikapov 0:3de9cb936fd1 601 * \endcode
nikapov 0:3de9cb936fd1 602 */
nikapov 0:3de9cb936fd1 603 #define LPS22HB_STATUS_REG (uint8_t)0x27
nikapov 0:3de9cb936fd1 604
nikapov 0:3de9cb936fd1 605 #define LPS22HB_TOR_BIT LPS22HB_BIT(5)
nikapov 0:3de9cb936fd1 606 #define LPS22HB_POR_BIT LPS22HB_BIT(4)
nikapov 0:3de9cb936fd1 607 #define LPS22HB_TDA_BIT LPS22HB_BIT(1)
nikapov 0:3de9cb936fd1 608 #define LPS22HB_PDA_BIT LPS22HB_BIT(0)
nikapov 0:3de9cb936fd1 609
nikapov 0:3de9cb936fd1 610 #define LPS22HB_TOR_MASK (uint8_t)0x20
nikapov 0:3de9cb936fd1 611 #define LPS22HB_POR_MASK (uint8_t)0x10
nikapov 0:3de9cb936fd1 612 #define LPS22HB_TDA_MASK (uint8_t)0x02
nikapov 0:3de9cb936fd1 613 #define LPS22HB_PDA_MASK (uint8_t)0x01
nikapov 0:3de9cb936fd1 614
nikapov 0:3de9cb936fd1 615
nikapov 0:3de9cb936fd1 616
nikapov 0:3de9cb936fd1 617 /**
nikapov 0:3de9cb936fd1 618 * @brief Pressure data (LSB) register.
nikapov 0:3de9cb936fd1 619 * \code
nikapov 0:3de9cb936fd1 620 * Read
nikapov 0:3de9cb936fd1 621 * Default value: 0x00.(To be verified)
nikapov 0:3de9cb936fd1 622 * POUT7 - POUT0: Pressure data LSB (2's complement).
nikapov 0:3de9cb936fd1 623 * Pressure output data: Pout(hPA)=(PRESS_OUT_H & PRESS_OUT_L &
nikapov 0:3de9cb936fd1 624 * PRESS_OUT_XL)[dec]/4096.
nikapov 0:3de9cb936fd1 625 * \endcode
nikapov 0:3de9cb936fd1 626 */
nikapov 0:3de9cb936fd1 627
nikapov 0:3de9cb936fd1 628 #define LPS22HB_PRESS_OUT_XL_REG (uint8_t)0x28
nikapov 0:3de9cb936fd1 629 /**
nikapov 0:3de9cb936fd1 630 * @brief Pressure data (Middle part) register.
nikapov 0:3de9cb936fd1 631 * \code
nikapov 0:3de9cb936fd1 632 * Read
nikapov 0:3de9cb936fd1 633 * Default value: 0x80.
nikapov 0:3de9cb936fd1 634 * POUT15 - POUT8: Pressure data middle part (2's complement).
nikapov 0:3de9cb936fd1 635 * Pressure output data: Pout(hPA)=(PRESS_OUT_H & PRESS_OUT_L &
nikapov 0:3de9cb936fd1 636 * PRESS_OUT_XL)[dec]/4096.
nikapov 0:3de9cb936fd1 637 * \endcode
nikapov 0:3de9cb936fd1 638 */
nikapov 0:3de9cb936fd1 639 #define LPS22HB_PRESS_OUT_L_REG (uint8_t)0x29
nikapov 0:3de9cb936fd1 640
nikapov 0:3de9cb936fd1 641 /**
nikapov 0:3de9cb936fd1 642 * @brief Pressure data (MSB) register.
nikapov 0:3de9cb936fd1 643 * \code
nikapov 0:3de9cb936fd1 644 * Read
nikapov 0:3de9cb936fd1 645 * Default value: 0x2F.
nikapov 0:3de9cb936fd1 646 * POUT23 - POUT16: Pressure data MSB (2's complement).
nikapov 0:3de9cb936fd1 647 * Pressure output data: Pout(hPA)=(PRESS_OUT_H & PRESS_OUT_L &
nikapov 0:3de9cb936fd1 648 * PRESS_OUT_XL)[dec]/4096.
nikapov 0:3de9cb936fd1 649 * \endcode
nikapov 0:3de9cb936fd1 650 */
nikapov 0:3de9cb936fd1 651 #define LPS22HB_PRESS_OUT_H_REG (uint8_t)0x2A
nikapov 0:3de9cb936fd1 652
nikapov 0:3de9cb936fd1 653 /**
nikapov 0:3de9cb936fd1 654 * @brief Temperature data (LSB) register.
nikapov 0:3de9cb936fd1 655 * \code
nikapov 0:3de9cb936fd1 656 * Read
nikapov 0:3de9cb936fd1 657 * Default value: 0x00.
nikapov 0:3de9cb936fd1 658 * TOUT7 - TOUT0: temperature data LSB.
nikapov 0:3de9cb936fd1 659 * Tout(degC)=TEMP_OUT/100
nikapov 0:3de9cb936fd1 660 * \endcode
nikapov 0:3de9cb936fd1 661 */
nikapov 0:3de9cb936fd1 662 #define LPS22HB_TEMP_OUT_L_REG (uint8_t)0x2B
nikapov 0:3de9cb936fd1 663
nikapov 0:3de9cb936fd1 664 /**
nikapov 0:3de9cb936fd1 665 * @brief Temperature data (MSB) register.
nikapov 0:3de9cb936fd1 666 * \code
nikapov 0:3de9cb936fd1 667 * Read
nikapov 0:3de9cb936fd1 668 * Default value: 0x00.
nikapov 0:3de9cb936fd1 669 * TOUT15 - TOUT8: temperature data MSB.
nikapov 0:3de9cb936fd1 670 * Tout(degC)=TEMP_OUT/100
nikapov 0:3de9cb936fd1 671 * \endcode
nikapov 0:3de9cb936fd1 672 */
nikapov 0:3de9cb936fd1 673 #define LPS22HBH_TEMP_OUT_H_REG (uint8_t)0x2C
nikapov 0:3de9cb936fd1 674
nikapov 0:3de9cb936fd1 675 /**
nikapov 0:3de9cb936fd1 676 * @brief Threshold pressure (LSB) register.
nikapov 0:3de9cb936fd1 677 * \code
nikapov 0:3de9cb936fd1 678 * Read/write
nikapov 0:3de9cb936fd1 679 * Default value: 0x00.
nikapov 0:3de9cb936fd1 680 * 7:0 THS7-THS0: LSB Threshold pressure Low part of threshold value for pressure interrupt
nikapov 0:3de9cb936fd1 681 * generation. The complete threshold value is given by THS_P_H & THS_P_L and is
nikapov 0:3de9cb936fd1 682 * expressed as unsigned number. P_ths(hPA)=(THS_P_H & THS_P_L)[dec]/16.
nikapov 0:3de9cb936fd1 683 * \endcode
nikapov 0:3de9cb936fd1 684 */
nikapov 0:3de9cb936fd1 685 #define LPS22HB_THS_P_LOW_REG (uint8_t)0x0C
nikapov 0:3de9cb936fd1 686
nikapov 0:3de9cb936fd1 687 /**
nikapov 0:3de9cb936fd1 688 * @brief Threshold pressure (MSB)
nikapov 0:3de9cb936fd1 689 * \code
nikapov 0:3de9cb936fd1 690 * Read/write
nikapov 0:3de9cb936fd1 691 * Default value: 0x00.
nikapov 0:3de9cb936fd1 692 * 7:0 THS15-THS8: MSB Threshold pressure. High part of threshold value for pressure interrupt
nikapov 0:3de9cb936fd1 693 * generation. The complete threshold value is given by THS_P_H & THS_P_L and is
nikapov 0:3de9cb936fd1 694 * expressed as unsigned number. P_ths(mbar)=(THS_P_H & THS_P_L)[dec]/16.
nikapov 0:3de9cb936fd1 695 * \endcode
nikapov 0:3de9cb936fd1 696 */
nikapov 0:3de9cb936fd1 697 #define LPS22HB_THS_P_HIGH_REG (uint8_t)0x0D
nikapov 0:3de9cb936fd1 698
nikapov 0:3de9cb936fd1 699 /**
nikapov 0:3de9cb936fd1 700 * @brief FIFO control register
nikapov 0:3de9cb936fd1 701 * \code
nikapov 0:3de9cb936fd1 702 * Read/write
nikapov 0:3de9cb936fd1 703 * Default value: 0x00
nikapov 0:3de9cb936fd1 704 * 7:5 F_MODE2, F_MODE1, F_MODE0: FIFO mode selection.
nikapov 0:3de9cb936fd1 705 * FM2 | FM1 | FM0 | FIFO MODE
nikapov 0:3de9cb936fd1 706 * ---------------------------------------------------
nikapov 0:3de9cb936fd1 707 * 0 | 0 | 0 | BYPASS MODE
nikapov 0:3de9cb936fd1 708 * 0 | 0 | 1 | FIFO MODE. Stops collecting data when full
nikapov 0:3de9cb936fd1 709 * 0 | 1 | 0 | STREAM MODE: Keep the newest measurements in the FIFO
nikapov 0:3de9cb936fd1 710 * 0 | 1 | 1 | STREAM MODE until trigger deasserted, then change to FIFO MODE
nikapov 0:3de9cb936fd1 711 * 1 | 0 | 0 | BYPASS MODE until trigger deasserted, then STREAM MODE
nikapov 0:3de9cb936fd1 712 * 1 | 0 | 1 | Reserved for future use
nikapov 0:3de9cb936fd1 713 * 1 | 1 | 0 | Reserved
nikapov 0:3de9cb936fd1 714 * 1 | 1 | 1 | BYPASS mode until trigger deasserted, then FIFO MODE
nikapov 0:3de9cb936fd1 715 *
nikapov 0:3de9cb936fd1 716 * 4:0 WTM_POINT4-0 : FIFO Watermark level selection (0-31)
nikapov 0:3de9cb936fd1 717 */
nikapov 0:3de9cb936fd1 718 #define LPS22HB_CTRL_FIFO_REG (uint8_t)0x14
nikapov 0:3de9cb936fd1 719
nikapov 0:3de9cb936fd1 720 #define LPS22HB_FIFO_MODE_MASK (uint8_t)0xE0
nikapov 0:3de9cb936fd1 721 #define LPS22HB_WTM_POINT_MASK (uint8_t)0x1F
nikapov 0:3de9cb936fd1 722
nikapov 0:3de9cb936fd1 723
nikapov 0:3de9cb936fd1 724 /**
nikapov 0:3de9cb936fd1 725 * @brief FIFO Status register
nikapov 0:3de9cb936fd1 726 * \code
nikapov 0:3de9cb936fd1 727 * Read
nikapov 0:3de9cb936fd1 728 * Default value: ----
nikapov 0:3de9cb936fd1 729 * 7 FTH_FIFO: FIFO threshold status. 0:FIFO filling is lower than FTH level; 1: FIFO is equal or higher than FTH level.
nikapov 0:3de9cb936fd1 730 * 6 OVR: Overrun bit status. 0 - FIFO not full; 1 -FIFO is full and at least one sample in the FIFO has been overwritten.
nikapov 0:3de9cb936fd1 731 * 5:0 FSS: FIFO Stored data level. 000000: FIFO empty, 100000: FIFO is full and has 32 unread samples.
nikapov 0:3de9cb936fd1 732 * \endcode
nikapov 0:3de9cb936fd1 733 */
nikapov 0:3de9cb936fd1 734 #define LPS22HB_STATUS_FIFO_REG (uint8_t)0x26
nikapov 0:3de9cb936fd1 735
nikapov 0:3de9cb936fd1 736 #define LPS22HB_FTH_FIFO_BIT LPS22HB_BIT(7)
nikapov 0:3de9cb936fd1 737 #define LPS22HB_OVR_FIFO_BIT LPS22HB_BIT(6)
nikapov 0:3de9cb936fd1 738
nikapov 0:3de9cb936fd1 739 #define LPS22HB_FTH_FIFO_MASK (uint8_t)0x80
nikapov 0:3de9cb936fd1 740 #define LPS22HB_OVR_FIFO_MASK (uint8_t)0x40
nikapov 0:3de9cb936fd1 741 #define LPS22HB_LEVEL_FIFO_MASK (uint8_t)0x3F
nikapov 0:3de9cb936fd1 742 #define LPS22HB_FIFO_EMPTY (uint8_t)0x00
nikapov 0:3de9cb936fd1 743 #define LPS22HB_FIFO_FULL (uint8_t)0x20
nikapov 0:3de9cb936fd1 744
nikapov 0:3de9cb936fd1 745
nikapov 0:3de9cb936fd1 746
nikapov 0:3de9cb936fd1 747 /**
nikapov 0:3de9cb936fd1 748 * @brief Pressure offset register (LSB)
nikapov 0:3de9cb936fd1 749 * \code
nikapov 0:3de9cb936fd1 750 * Read/write
nikapov 0:3de9cb936fd1 751 * Default value: 0x00
nikapov 0:3de9cb936fd1 752 * 7:0 RPDS7-0:Pressure Offset for 1 point calibration (OPC) after soldering.
nikapov 0:3de9cb936fd1 753 * This register contains the low part of the pressure offset value after soldering,for
nikapov 0:3de9cb936fd1 754 * differential pressure computing. The complete value is given by RPDS_L & RPDS_H
nikapov 0:3de9cb936fd1 755 * and is expressed as signed 2 complement value.
nikapov 0:3de9cb936fd1 756 * \endcode
nikapov 0:3de9cb936fd1 757 */
nikapov 0:3de9cb936fd1 758 #define LPS22HB_RPDS_L_REG (uint8_t)0x18
nikapov 0:3de9cb936fd1 759
nikapov 0:3de9cb936fd1 760 /**
nikapov 0:3de9cb936fd1 761 * @brief Pressure offset register (MSB)
nikapov 0:3de9cb936fd1 762 * \code
nikapov 0:3de9cb936fd1 763 * Read/write
nikapov 0:3de9cb936fd1 764 * Default value: 0x00
nikapov 0:3de9cb936fd1 765 * 7:0 RPDS15-8:Pressure Offset for 1 point calibration (OPC) after soldering.
nikapov 0:3de9cb936fd1 766 * This register contains the high part of the pressure offset value after soldering (see description RPDS_L)
nikapov 0:3de9cb936fd1 767 * \endcode
nikapov 0:3de9cb936fd1 768 */
nikapov 0:3de9cb936fd1 769 #define LPS22HB_RPDS_H_REG (uint8_t)0x19
nikapov 0:3de9cb936fd1 770
nikapov 0:3de9cb936fd1 771
nikapov 0:3de9cb936fd1 772 /**
nikapov 0:3de9cb936fd1 773 * @brief Clock Tree Configuration register
nikapov 0:3de9cb936fd1 774 * \code
nikapov 0:3de9cb936fd1 775 * Read/write
nikapov 0:3de9cb936fd1 776 * Default value: 0x00
nikapov 0:3de9cb936fd1 777 * 7:6 Reserved.
nikapov 0:3de9cb936fd1 778 * 5: CTE: Clock Tree Enhancement
nikapov 0:3de9cb936fd1 779 * \endcode
nikapov 0:3de9cb936fd1 780 */
nikapov 0:3de9cb936fd1 781
nikapov 0:3de9cb936fd1 782 #define LPS22HB_CLOCK_TREE_CONFIGURATION (uint8_t)0x43
nikapov 0:3de9cb936fd1 783
nikapov 0:3de9cb936fd1 784 #define LPS22HB_CTE_MASK (uint8_t)0x20
nikapov 0:3de9cb936fd1 785
nikapov 0:3de9cb936fd1 786 /**
nikapov 0:3de9cb936fd1 787 * @}
nikapov 0:3de9cb936fd1 788 */
nikapov 0:3de9cb936fd1 789
nikapov 0:3de9cb936fd1 790
nikapov 0:3de9cb936fd1 791 /**
nikapov 0:3de9cb936fd1 792 * @}
nikapov 0:3de9cb936fd1 793 */
nikapov 0:3de9cb936fd1 794
nikapov 0:3de9cb936fd1 795
nikapov 0:3de9cb936fd1 796 /* Exported Functions -------------------------------------------------------------*/
nikapov 0:3de9cb936fd1 797 /** @defgroup LPS22HB_Exported_Functions
nikapov 0:3de9cb936fd1 798 * @{
nikapov 0:3de9cb936fd1 799 */
nikapov 0:3de9cb936fd1 800
nikapov 0:3de9cb936fd1 801 LPS22HB_Error_et LPS22HB_read_reg( void *handle, uint8_t RegAddr, uint16_t NumByteToRead, uint8_t *Data );
nikapov 0:3de9cb936fd1 802 LPS22HB_Error_et LPS22HB_write_reg( void *handle, uint8_t RegAddr, uint16_t NumByteToWrite, uint8_t *Data );
nikapov 0:3de9cb936fd1 803
nikapov 0:3de9cb936fd1 804 /**
nikapov 0:3de9cb936fd1 805 * @brief Init the HAL layer.
nikapov 0:3de9cb936fd1 806 * @param None
nikapov 0:3de9cb936fd1 807 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 808 */
nikapov 0:3de9cb936fd1 809 #define LPS22HB_HalInit (LPS22HB_Error_et)HAL_Init_I2C
nikapov 0:3de9cb936fd1 810
nikapov 0:3de9cb936fd1 811 /**
nikapov 0:3de9cb936fd1 812 * @brief DeInit the HAL layer.
nikapov 0:3de9cb936fd1 813 * @param None
nikapov 0:3de9cb936fd1 814 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 815 */
nikapov 0:3de9cb936fd1 816 #define LPS22HB_HalDeInit (LPS22HB_Error_et)HAL_DeInit_I2C
nikapov 0:3de9cb936fd1 817
nikapov 0:3de9cb936fd1 818
nikapov 0:3de9cb936fd1 819 /**
nikapov 0:3de9cb936fd1 820 * @brief Get the LPS22HB driver version.
nikapov 0:3de9cb936fd1 821 * @param None
nikapov 0:3de9cb936fd1 822 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 823 */
nikapov 0:3de9cb936fd1 824 LPS22HB_Error_et LPS22HB_Get_DriverVersion(LPS22HB_driverVersion_st *Version);
nikapov 0:3de9cb936fd1 825
nikapov 0:3de9cb936fd1 826 /**
nikapov 0:3de9cb936fd1 827 * @brief Initialization function for LPS22HB.
nikapov 0:3de9cb936fd1 828 * This function make a memory boot.
nikapov 0:3de9cb936fd1 829 * Init the sensor with a standard basic confifuration.
nikapov 0:3de9cb936fd1 830 * Low Power, ODR 25 Hz, Low Pass Filter disabled; BDU enabled; I2C enabled;
nikapov 0:3de9cb936fd1 831 * NO FIFO; NO Interrupt Enabled.
nikapov 0:3de9cb936fd1 832 * @param None.
nikapov 0:3de9cb936fd1 833 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 834 */
nikapov 0:3de9cb936fd1 835 LPS22HB_Error_et LPS22HB_Init(void *handle);
nikapov 0:3de9cb936fd1 836
nikapov 0:3de9cb936fd1 837 /**
nikapov 0:3de9cb936fd1 838 * @brief DeInit the LPS2Hb driver.
nikapov 0:3de9cb936fd1 839 * @param None
nikapov 0:3de9cb936fd1 840 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 841 */
nikapov 0:3de9cb936fd1 842
nikapov 0:3de9cb936fd1 843 LPS22HB_Error_et LPS22HB_DeInit(void *handle);
nikapov 0:3de9cb936fd1 844
nikapov 0:3de9cb936fd1 845
nikapov 0:3de9cb936fd1 846 /**
nikapov 0:3de9cb936fd1 847 * @brief Read identification code by WHO_AM_I register
nikapov 0:3de9cb936fd1 848 * @param Buffer to empty by Device identification Value.
nikapov 0:3de9cb936fd1 849 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 850 */
nikapov 0:3de9cb936fd1 851 LPS22HB_Error_et LPS22HB_Get_DeviceID(void *handle, uint8_t* deviceid);
nikapov 0:3de9cb936fd1 852
nikapov 0:3de9cb936fd1 853
nikapov 0:3de9cb936fd1 854 /**
nikapov 0:3de9cb936fd1 855 * @brief Set LPS22HB Low Power or Low Noise Mode Configuration
nikapov 0:3de9cb936fd1 856 * @param LPS22HB_LowNoise or LPS22HB_LowPower mode
nikapov 0:3de9cb936fd1 857 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 858 */
nikapov 0:3de9cb936fd1 859 LPS22HB_Error_et LPS22HB_Set_PowerMode(void *handle, LPS22HB_PowerMode_et mode);
nikapov 0:3de9cb936fd1 860
nikapov 0:3de9cb936fd1 861 /**
nikapov 0:3de9cb936fd1 862 * @brief Get LPS22HB Power Mode
nikapov 0:3de9cb936fd1 863 * @param Buffer to empty with Mode: Low Noise or Low Current
nikapov 0:3de9cb936fd1 864 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 865 */
nikapov 0:3de9cb936fd1 866 LPS22HB_Error_et LPS22HB_Get_PowerMode(void *handle, LPS22HB_PowerMode_et* mode);
nikapov 0:3de9cb936fd1 867
nikapov 0:3de9cb936fd1 868
nikapov 0:3de9cb936fd1 869 /**
nikapov 0:3de9cb936fd1 870 * @brief Set LPS22HB Output Data Rate
nikapov 0:3de9cb936fd1 871 * @param Output Data Rate
nikapov 0:3de9cb936fd1 872 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 873 */
nikapov 0:3de9cb936fd1 874 LPS22HB_Error_et LPS22HB_Set_Odr(void *handle, LPS22HB_Odr_et odr);
nikapov 0:3de9cb936fd1 875
nikapov 0:3de9cb936fd1 876
nikapov 0:3de9cb936fd1 877 /**
nikapov 0:3de9cb936fd1 878 * @brief Get LPS22HB Output Data Rate
nikapov 0:3de9cb936fd1 879 * @param Buffer to empty with Output Data Rate
nikapov 0:3de9cb936fd1 880 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 881 */
nikapov 0:3de9cb936fd1 882 LPS22HB_Error_et LPS22HB_Get_Odr(void *handle, LPS22HB_Odr_et* odr);
nikapov 0:3de9cb936fd1 883
nikapov 0:3de9cb936fd1 884 /**
nikapov 0:3de9cb936fd1 885 * @brief Enable/Disale low-pass filter on LPS22HB pressure data
nikapov 0:3de9cb936fd1 886 * @param state: enable or disable
nikapov 0:3de9cb936fd1 887 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 888 */
nikapov 0:3de9cb936fd1 889 LPS22HB_Error_et LPS22HB_Set_LowPassFilter(void *handle, LPS22HB_State_et state);
nikapov 0:3de9cb936fd1 890
nikapov 0:3de9cb936fd1 891
nikapov 0:3de9cb936fd1 892 /**
nikapov 0:3de9cb936fd1 893 * @brief Set low-pass filter cutoff configuration on LPS22HB pressure data
nikapov 0:3de9cb936fd1 894 * @param Filter Cutoff ODR/9 or ODR/20
nikapov 0:3de9cb936fd1 895 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 896 */
nikapov 0:3de9cb936fd1 897 LPS22HB_Error_et LPS22HB_Set_LowPassFilterCutoff(void *handle, LPS22HB_LPF_Cutoff_et cutoff);
nikapov 0:3de9cb936fd1 898
nikapov 0:3de9cb936fd1 899 /**
nikapov 0:3de9cb936fd1 900 * @brief Set Block Data Update mode
nikapov 0:3de9cb936fd1 901 * @param LPS22HB_BDU_CONTINUOS_UPDATE/ LPS22HB_BDU_NO_UPDATE
nikapov 0:3de9cb936fd1 902 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 903 */
nikapov 0:3de9cb936fd1 904 LPS22HB_Error_et LPS22HB_Set_Bdu(void *handle, LPS22HB_Bdu_et bdu);
nikapov 0:3de9cb936fd1 905
nikapov 0:3de9cb936fd1 906
nikapov 0:3de9cb936fd1 907 /**
nikapov 0:3de9cb936fd1 908 * @brief Get Block Data Update mode
nikapov 0:3de9cb936fd1 909 * @param Buffer to empty whit the bdu mode read from sensor
nikapov 0:3de9cb936fd1 910 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 911 */
nikapov 0:3de9cb936fd1 912 LPS22HB_Error_et LPS22HB_Get_Bdu(void *handle, LPS22HB_Bdu_et* bdu);
nikapov 0:3de9cb936fd1 913
nikapov 0:3de9cb936fd1 914 /**
nikapov 0:3de9cb936fd1 915 * @brief Set SPI mode: 3 Wire Interface OR 4 Wire Interface
nikapov 0:3de9cb936fd1 916 * @param LPS22HB_SPI_4_WIRE/LPS22HB_SPI_3_WIRE
nikapov 0:3de9cb936fd1 917 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 918 */
nikapov 0:3de9cb936fd1 919 LPS22HB_Error_et LPS22HB_Set_SpiInterface(void *handle, LPS22HB_SPIMode_et spimode);
nikapov 0:3de9cb936fd1 920
nikapov 0:3de9cb936fd1 921 /**
nikapov 0:3de9cb936fd1 922 * @brief Get SPI mode: 3 Wire Interface OR 4 Wire Interface
nikapov 0:3de9cb936fd1 923 * @param buffer to empty with SPI mode
nikapov 0:3de9cb936fd1 924 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 925 */
nikapov 0:3de9cb936fd1 926 LPS22HB_Error_et LPS22HB_Get_SpiInterface(void *handle, LPS22HB_SPIMode_et* spimode);
nikapov 0:3de9cb936fd1 927
nikapov 0:3de9cb936fd1 928 /**
nikapov 0:3de9cb936fd1 929 * @brief Software Reset
nikapov 0:3de9cb936fd1 930 * @param void
nikapov 0:3de9cb936fd1 931 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 932 */
nikapov 0:3de9cb936fd1 933 LPS22HB_Error_et LPS22HB_SwReset(void *handle);
nikapov 0:3de9cb936fd1 934
nikapov 0:3de9cb936fd1 935 /**
nikapov 0:3de9cb936fd1 936 * @brief Reboot Memory Content.
nikapov 0:3de9cb936fd1 937 * @param void
nikapov 0:3de9cb936fd1 938 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 939 */
nikapov 0:3de9cb936fd1 940 LPS22HB_Error_et LPS22HB_MemoryBoot(void *handle);
nikapov 0:3de9cb936fd1 941
nikapov 0:3de9cb936fd1 942 /**
nikapov 0:3de9cb936fd1 943 * @brief Software Reset ann BOOT
nikapov 0:3de9cb936fd1 944 * @param void
nikapov 0:3de9cb936fd1 945 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 946 */
nikapov 0:3de9cb936fd1 947 LPS22HB_Error_et LPS22HB_SwResetAndMemoryBoot(void *handle);
nikapov 0:3de9cb936fd1 948
nikapov 0:3de9cb936fd1 949
nikapov 0:3de9cb936fd1 950 /**
nikapov 0:3de9cb936fd1 951 * @brief Enable or Disable FIFO
nikapov 0:3de9cb936fd1 952 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 953 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 954 */
nikapov 0:3de9cb936fd1 955 LPS22HB_Error_et LPS22HB_Set_FifoModeUse(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 956
nikapov 0:3de9cb936fd1 957 /**
nikapov 0:3de9cb936fd1 958 * @brief Enable or Disable FIFO Watermark level use. Stop on FIFO Threshold
nikapov 0:3de9cb936fd1 959 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 960 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 961 */
nikapov 0:3de9cb936fd1 962 LPS22HB_Error_et LPS22HB_Set_FifoWatermarkLevelUse(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 963
nikapov 0:3de9cb936fd1 964 /**
nikapov 0:3de9cb936fd1 965 * @brief Enable or Disable the Automatic increment register address during a multiple byte access with a serial interface (I2C or SPI)
nikapov 0:3de9cb936fd1 966 * @param LPS22HB_ENABLE/LPS22HB_DISABLE. Default is LPS22HB_ENABLE
nikapov 0:3de9cb936fd1 967 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 968 */
nikapov 0:3de9cb936fd1 969 LPS22HB_Error_et LPS22HB_Set_AutomaticIncrementRegAddress(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 970
nikapov 0:3de9cb936fd1 971
nikapov 0:3de9cb936fd1 972 /**
nikapov 0:3de9cb936fd1 973 * @brief Set One Shot bit to start a new conversion (ODR mode has to be 000)
nikapov 0:3de9cb936fd1 974 * @param void
nikapov 0:3de9cb936fd1 975 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 976 */
nikapov 0:3de9cb936fd1 977 LPS22HB_Error_et LPS22HB_StartOneShotMeasurement(void *handle);
nikapov 0:3de9cb936fd1 978
nikapov 0:3de9cb936fd1 979 /**
nikapov 0:3de9cb936fd1 980 * @brief Enable/Disable I2C
nikapov 0:3de9cb936fd1 981 * @param State. Enable (reset bit)/ Disable (set bit)
nikapov 0:3de9cb936fd1 982 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 983 */
nikapov 0:3de9cb936fd1 984 LPS22HB_Error_et LPS22HB_Set_I2C(void *handle, LPS22HB_State_et i2cstate);
nikapov 0:3de9cb936fd1 985
nikapov 0:3de9cb936fd1 986
nikapov 0:3de9cb936fd1 987 /*CTRL_REG3 Interrupt Control*/
nikapov 0:3de9cb936fd1 988 /**
nikapov 0:3de9cb936fd1 989 * @brief Set Interrupt Active on High or Low Level
nikapov 0:3de9cb936fd1 990 * @param LPS22HB_ActiveHigh/LPS22HB_ActiveLow
nikapov 0:3de9cb936fd1 991 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 992 */
nikapov 0:3de9cb936fd1 993 LPS22HB_Error_et LPS22HB_Set_InterruptActiveLevel(void *handle, LPS22HB_InterruptActiveLevel_et mode);
nikapov 0:3de9cb936fd1 994
nikapov 0:3de9cb936fd1 995 /**
nikapov 0:3de9cb936fd1 996 * @brief Set Push-pull/open drain selection on interrupt pads.
nikapov 0:3de9cb936fd1 997 * @param LPS22HB_PushPull/LPS22HB_OpenDrain
nikapov 0:3de9cb936fd1 998 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 999 */
nikapov 0:3de9cb936fd1 1000 LPS22HB_Error_et LPS22HB_Set_InterruptOutputType(void *handle, LPS22HB_OutputType_et output);
nikapov 0:3de9cb936fd1 1001
nikapov 0:3de9cb936fd1 1002 /**
nikapov 0:3de9cb936fd1 1003 * @brief Set Data signal on INT1 pad control bits.
nikapov 0:3de9cb936fd1 1004 * @param LPS22HB_DATA,LPS22HB_P_HIGH_LPS22HB_P_LOW,LPS22HB_P_LOW_HIGH
nikapov 0:3de9cb936fd1 1005 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1006 */
nikapov 0:3de9cb936fd1 1007 LPS22HB_Error_et LPS22HB_Set_InterruptControlConfig(void *handle, LPS22HB_OutputSignalConfig_et config);
nikapov 0:3de9cb936fd1 1008
nikapov 0:3de9cb936fd1 1009
nikapov 0:3de9cb936fd1 1010 /**
nikapov 0:3de9cb936fd1 1011 * @brief Enable/Disable Data-ready signal on INT_DRDY pin.
nikapov 0:3de9cb936fd1 1012 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1013 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1014 */
nikapov 0:3de9cb936fd1 1015 LPS22HB_Error_et LPS22HB_Set_DRDYInterrupt(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1016
nikapov 0:3de9cb936fd1 1017 /**
nikapov 0:3de9cb936fd1 1018 * @brief Enable/Disable FIFO overrun interrupt on INT_DRDY pin.
nikapov 0:3de9cb936fd1 1019 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1020 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1021 */
nikapov 0:3de9cb936fd1 1022 LPS22HB_Error_et LPS22HB_Set_FIFO_OVR_Interrupt(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1023
nikapov 0:3de9cb936fd1 1024 /**
nikapov 0:3de9cb936fd1 1025 * @brief Enable/Disable FIFO threshold (Watermark) interrupt on INT_DRDY pin.
nikapov 0:3de9cb936fd1 1026 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1027 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1028 */
nikapov 0:3de9cb936fd1 1029 LPS22HB_Error_et LPS22HB_Set_FIFO_FTH_Interrupt(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1030
nikapov 0:3de9cb936fd1 1031 /**
nikapov 0:3de9cb936fd1 1032 * @brief Enable/Disable FIFO FULL interrupt on INT_DRDY pin.
nikapov 0:3de9cb936fd1 1033 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1034 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1035 */
nikapov 0:3de9cb936fd1 1036 LPS22HB_Error_et LPS22HB_Set_FIFO_FULL_Interrupt(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1037
nikapov 0:3de9cb936fd1 1038 /**
nikapov 0:3de9cb936fd1 1039 * @brief Enable AutoRifP function
nikapov 0:3de9cb936fd1 1040 * @param none
nikapov 0:3de9cb936fd1 1041 * @detail When this function is enabled, an internal register is set with the current pressure values
nikapov 0:3de9cb936fd1 1042 * and the content is subtracted from the pressure output value and result is used for the interrupt generation.
nikapov 0:3de9cb936fd1 1043 * the AutoRifP is slf creared.
nikapov 0:3de9cb936fd1 1044 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1045 */
nikapov 0:3de9cb936fd1 1046 LPS22HB_Error_et LPS22HB_Set_AutoRifP(void *handle);
nikapov 0:3de9cb936fd1 1047
nikapov 0:3de9cb936fd1 1048 /**
nikapov 0:3de9cb936fd1 1049 * @brief Disable AutoRifP
nikapov 0:3de9cb936fd1 1050 * @param none
nikapov 0:3de9cb936fd1 1051 * @detail the RESET_ARP bit is used to disable the AUTORIFP function. This bis i is selfdleared
nikapov 0:3de9cb936fd1 1052 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1053 */
nikapov 0:3de9cb936fd1 1054 LPS22HB_Error_et LPS22HB_ResetAutoRifP(void *handle);
nikapov 0:3de9cb936fd1 1055
nikapov 0:3de9cb936fd1 1056 /**?????
nikapov 0:3de9cb936fd1 1057 * @brief Set AutoZero Function bit
nikapov 0:3de9cb936fd1 1058 * @detail When set to ‘1’, the actual pressure output is copied in the REF_P reg (@0x15..0x17)
nikapov 0:3de9cb936fd1 1059 * @param None
nikapov 0:3de9cb936fd1 1060 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1061 */
nikapov 0:3de9cb936fd1 1062 LPS22HB_Error_et LPS22HB_Set_AutoZeroFunction(void *handle);
nikapov 0:3de9cb936fd1 1063
nikapov 0:3de9cb936fd1 1064 /**???
nikapov 0:3de9cb936fd1 1065 * @brief Set ResetAutoZero Function bit
nikapov 0:3de9cb936fd1 1066 * @details REF_P reg (@0x015..17) set pressure reference to default value RPDS reg (0x18/19).
nikapov 0:3de9cb936fd1 1067 * @param None
nikapov 0:3de9cb936fd1 1068 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1069 */
nikapov 0:3de9cb936fd1 1070 LPS22HB_Error_et LPS22HB_ResetAutoZeroFunction(void *handle);
nikapov 0:3de9cb936fd1 1071
nikapov 0:3de9cb936fd1 1072
nikapov 0:3de9cb936fd1 1073 /**
nikapov 0:3de9cb936fd1 1074 * @brief Enable/ Disable the computing of differential pressure output (Interrupt Generation)
nikapov 0:3de9cb936fd1 1075 * @param LPS22HB_ENABLE,LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1076 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1077 */
nikapov 0:3de9cb936fd1 1078 LPS22HB_Error_et LPS22HB_Set_InterruptDifferentialGeneration(void *handle, LPS22HB_State_et diff_en) ;
nikapov 0:3de9cb936fd1 1079
nikapov 0:3de9cb936fd1 1080
nikapov 0:3de9cb936fd1 1081
nikapov 0:3de9cb936fd1 1082 /**
nikapov 0:3de9cb936fd1 1083 * @brief Get the DIFF_EN bit value
nikapov 0:3de9cb936fd1 1084 * @param buffer to empty with the read value of DIFF_EN bit
nikapov 0:3de9cb936fd1 1085 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1086 */
nikapov 0:3de9cb936fd1 1087 LPS22HB_Error_et LPS22HB_Get_InterruptDifferentialGeneration(void *handle, LPS22HB_State_et* diff_en);
nikapov 0:3de9cb936fd1 1088
nikapov 0:3de9cb936fd1 1089
nikapov 0:3de9cb936fd1 1090 /**
nikapov 0:3de9cb936fd1 1091 * @brief Latch Interrupt request to the INT_SOURCE register.
nikapov 0:3de9cb936fd1 1092 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1093 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1094 */
nikapov 0:3de9cb936fd1 1095 LPS22HB_Error_et LPS22HB_LatchInterruptRequest(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1096
nikapov 0:3de9cb936fd1 1097 /**
nikapov 0:3de9cb936fd1 1098 * @brief Enable\Disable Interrupt Generation on differential pressure Low event
nikapov 0:3de9cb936fd1 1099 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1100 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1101 */
nikapov 0:3de9cb936fd1 1102 LPS22HB_Error_et LPS22HB_Set_PLE(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1103
nikapov 0:3de9cb936fd1 1104 /**
nikapov 0:3de9cb936fd1 1105 * @brief Enable\Disable Interrupt Generation on differential pressure High event
nikapov 0:3de9cb936fd1 1106 * @param LPS22HB_ENABLE/LPS22HB_DISABLE
nikapov 0:3de9cb936fd1 1107 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1108 */
nikapov 0:3de9cb936fd1 1109 LPS22HB_Error_et LPS22HB_Set_PHE(void *handle, LPS22HB_State_et status);
nikapov 0:3de9cb936fd1 1110
nikapov 0:3de9cb936fd1 1111 /**
nikapov 0:3de9cb936fd1 1112 * @brief Get the Interrupt Generation on differential pressure status event and the Boot Status.
nikapov 0:3de9cb936fd1 1113 * @detail The INT_SOURCE register is cleared by reading it.
nikapov 0:3de9cb936fd1 1114 * @param Status Event Flag: BOOT, PH,PL,IA
nikapov 0:3de9cb936fd1 1115 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1116 */
nikapov 0:3de9cb936fd1 1117 LPS22HB_Error_et LPS22HB_Get_InterruptDifferentialEventStatus(void *handle, LPS22HB_InterruptDiffStatus_st* interruptsource);
nikapov 0:3de9cb936fd1 1118
nikapov 0:3de9cb936fd1 1119
nikapov 0:3de9cb936fd1 1120 /**
nikapov 0:3de9cb936fd1 1121 * @brief Get the status of Pressure and Temperature data
nikapov 0:3de9cb936fd1 1122 * @param Data Status Flag: TempDataAvailable, TempDataOverrun, PressDataAvailable, PressDataOverrun
nikapov 0:3de9cb936fd1 1123 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1124 */
nikapov 0:3de9cb936fd1 1125 LPS22HB_Error_et LPS22HB_Get_DataStatus(void *handle, LPS22HB_DataStatus_st* datastatus);
nikapov 0:3de9cb936fd1 1126
nikapov 0:3de9cb936fd1 1127
nikapov 0:3de9cb936fd1 1128 /**
nikapov 0:3de9cb936fd1 1129 * @brief Get the LPS22HB raw presure value
nikapov 0:3de9cb936fd1 1130 * @param The buffer to empty with the pressure raw value
nikapov 0:3de9cb936fd1 1131 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1132 */
nikapov 0:3de9cb936fd1 1133 LPS22HB_Error_et LPS22HB_Get_RawPressure(void *handle, int32_t *raw_press);
nikapov 0:3de9cb936fd1 1134
nikapov 0:3de9cb936fd1 1135 /**
nikapov 0:3de9cb936fd1 1136 * @brief Get the LPS22HB Pressure value in hPA.
nikapov 0:3de9cb936fd1 1137 * @param The buffer to empty with the pressure value that must be divided by 100 to get the value in hPA
nikapov 0:3de9cb936fd1 1138 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1139 */
nikapov 0:3de9cb936fd1 1140 LPS22HB_Error_et LPS22HB_Get_Pressure(void *handle, int32_t* Pout);
nikapov 0:3de9cb936fd1 1141
nikapov 0:3de9cb936fd1 1142 /**
nikapov 0:3de9cb936fd1 1143 * @brief Read LPS22HB output register, and calculate the raw temperature.
nikapov 0:3de9cb936fd1 1144 * @param The buffer to empty with the temperature raw value
nikapov 0:3de9cb936fd1 1145 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1146 */
nikapov 0:3de9cb936fd1 1147 LPS22HB_Error_et LPS22HB_Get_RawTemperature(void *handle, int16_t *raw_data);
nikapov 0:3de9cb936fd1 1148
nikapov 0:3de9cb936fd1 1149 /**
nikapov 0:3de9cb936fd1 1150 * @brief Read the Temperature value in °C.
nikapov 0:3de9cb936fd1 1151 * @param The buffer to empty with the temperature value that must be divided by 10 to get the value in ['C]
nikapov 0:3de9cb936fd1 1152 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1153 */
nikapov 0:3de9cb936fd1 1154 LPS22HB_Error_et LPS22HB_Get_Temperature(void *handle, int16_t* Tout);
nikapov 0:3de9cb936fd1 1155
nikapov 0:3de9cb936fd1 1156 /**
nikapov 0:3de9cb936fd1 1157 * @brief Get the threshold value used for pressure interrupt generation.
nikapov 0:3de9cb936fd1 1158 * @param The buffer to empty with the temperature value
nikapov 0:3de9cb936fd1 1159 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1160 */
nikapov 0:3de9cb936fd1 1161 LPS22HB_Error_et LPS22HB_Get_PressureThreshold(void *handle, int16_t *P_ths);
nikapov 0:3de9cb936fd1 1162
nikapov 0:3de9cb936fd1 1163 /**
nikapov 0:3de9cb936fd1 1164 * @brief Set the threshold value used for pressure interrupt generation.
nikapov 0:3de9cb936fd1 1165 * @param The buffer to empty with the temperature value
nikapov 0:3de9cb936fd1 1166 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1167 */
nikapov 0:3de9cb936fd1 1168 LPS22HB_Error_et LPS22HB_Set_PressureThreshold(void *handle, int16_t P_ths);
nikapov 0:3de9cb936fd1 1169
nikapov 0:3de9cb936fd1 1170 /**
nikapov 0:3de9cb936fd1 1171 * @brief Set Fifo Mode.
nikapov 0:3de9cb936fd1 1172 * @param Fifo Mode struct
nikapov 0:3de9cb936fd1 1173 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1174 */
nikapov 0:3de9cb936fd1 1175 LPS22HB_Error_et LPS22HB_Set_FifoMode(void *handle, LPS22HB_FifoMode_et fifomode);
nikapov 0:3de9cb936fd1 1176 /**
nikapov 0:3de9cb936fd1 1177 * @brief Get Fifo Mode.
nikapov 0:3de9cb936fd1 1178 * @param Buffer to empty with fifo mode value
nikapov 0:3de9cb936fd1 1179 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1180 */
nikapov 0:3de9cb936fd1 1181 LPS22HB_Error_et LPS22HB_Get_FifoMode(void *handle, LPS22HB_FifoMode_et* fifomode);
nikapov 0:3de9cb936fd1 1182
nikapov 0:3de9cb936fd1 1183 /**
nikapov 0:3de9cb936fd1 1184 * @brief Set Fifo Watermark Level.
nikapov 0:3de9cb936fd1 1185 * @param Watermark level value [0 31]
nikapov 0:3de9cb936fd1 1186 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1187 */
nikapov 0:3de9cb936fd1 1188 LPS22HB_Error_et LPS22HB_Set_FifoWatermarkLevel(void *handle, uint8_t wtmlevel);
nikapov 0:3de9cb936fd1 1189
nikapov 0:3de9cb936fd1 1190 /**
nikapov 0:3de9cb936fd1 1191 * @brief Get FIFO Watermark Level
nikapov 0:3de9cb936fd1 1192 * @param buffer to empty with watermak level[0,31] value read from sensor
nikapov 0:3de9cb936fd1 1193 * @retval Status [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1194 */
nikapov 0:3de9cb936fd1 1195 LPS22HB_Error_et LPS22HB_Get_FifoWatermarkLevel(void *handle, uint8_t *wtmlevel);
nikapov 0:3de9cb936fd1 1196
nikapov 0:3de9cb936fd1 1197
nikapov 0:3de9cb936fd1 1198 /**
nikapov 0:3de9cb936fd1 1199 * @brief Get Fifo Status.
nikapov 0:3de9cb936fd1 1200 * @param Buffer to empty with fifo status
nikapov 0:3de9cb936fd1 1201 * @retval Status [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1202 */
nikapov 0:3de9cb936fd1 1203 LPS22HB_Error_et LPS22HB_Get_FifoStatus(void *handle, LPS22HB_FifoStatus_st* status);
nikapov 0:3de9cb936fd1 1204
nikapov 0:3de9cb936fd1 1205
nikapov 0:3de9cb936fd1 1206 /**
nikapov 0:3de9cb936fd1 1207 * @brief Get the reference pressure after soldering for computing differential pressure (hPA)
nikapov 0:3de9cb936fd1 1208 * @param buffer to empty with the he pressure value (hPA)
nikapov 0:3de9cb936fd1 1209 * @retval Status [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1210 */
nikapov 0:3de9cb936fd1 1211 LPS22HB_Error_et LPS22HB_Get_PressureOffsetValue(void *handle, int16_t *pressoffset);
nikapov 0:3de9cb936fd1 1212
nikapov 0:3de9cb936fd1 1213 /**
nikapov 0:3de9cb936fd1 1214 * @brief Get the Reference Pressure value
nikapov 0:3de9cb936fd1 1215 * @detail It is a 24-bit data added to the sensor output measurement to detect a measured pressure beyond programmed limits.
nikapov 0:3de9cb936fd1 1216 * @param Buffer to empty with reference pressure value
nikapov 0:3de9cb936fd1 1217 * @retval Status [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1218 */
nikapov 0:3de9cb936fd1 1219 LPS22HB_Error_et LPS22HB_Get_ReferencePressure(void *handle, int32_t* RefP);
nikapov 0:3de9cb936fd1 1220
nikapov 0:3de9cb936fd1 1221
nikapov 0:3de9cb936fd1 1222 /**
nikapov 0:3de9cb936fd1 1223 * @brief Check if the single measurement has completed.
nikapov 0:3de9cb936fd1 1224 * @param the returned value is set to 1, when the measurement is completed
nikapov 0:3de9cb936fd1 1225 * @retval Status [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1226 */
nikapov 0:3de9cb936fd1 1227 LPS22HB_Error_et LPS22HB_IsMeasurementCompleted(void *handle, uint8_t* Is_Measurement_Completed);
nikapov 0:3de9cb936fd1 1228
nikapov 0:3de9cb936fd1 1229
nikapov 0:3de9cb936fd1 1230 /**
nikapov 0:3de9cb936fd1 1231 * @brief Get the values of the last single measurement.
nikapov 0:3de9cb936fd1 1232 * @param Pressure and temperature value
nikapov 0:3de9cb936fd1 1233 * @retvalStatus [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1234 */
nikapov 0:3de9cb936fd1 1235 LPS22HB_Error_et LPS22HB_Get_Measurement(void *handle, LPS22HB_MeasureTypeDef_st *Measurement_Value);
nikapov 0:3de9cb936fd1 1236
nikapov 0:3de9cb936fd1 1237
nikapov 0:3de9cb936fd1 1238 /**
nikapov 0:3de9cb936fd1 1239 * @brief Set Generic Configuration
nikapov 0:3de9cb936fd1 1240 * @param Struct to empty with the chosen values
nikapov 0:3de9cb936fd1 1241 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1242 */
nikapov 0:3de9cb936fd1 1243 LPS22HB_Error_et LPS22HB_Set_GenericConfig(void *handle, LPS22HB_ConfigTypeDef_st* pxLPS22HBInit);
nikapov 0:3de9cb936fd1 1244
nikapov 0:3de9cb936fd1 1245 /**
nikapov 0:3de9cb936fd1 1246 * @brief Get Generic configuration
nikapov 0:3de9cb936fd1 1247 * @param Struct to empty with configuration values
nikapov 0:3de9cb936fd1 1248 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1249 */
nikapov 0:3de9cb936fd1 1250 LPS22HB_Error_et LPS22HB_Get_GenericConfig(void *handle, LPS22HB_ConfigTypeDef_st* pxLPS22HBInit);
nikapov 0:3de9cb936fd1 1251
nikapov 0:3de9cb936fd1 1252 /**
nikapov 0:3de9cb936fd1 1253 * @brief Set Interrupt configuration
nikapov 0:3de9cb936fd1 1254 * @param Struct holding the configuration values
nikapov 0:3de9cb936fd1 1255 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1256 */
nikapov 0:3de9cb936fd1 1257 LPS22HB_Error_et LPS22HB_Set_InterruptConfig(void *handle, LPS22HB_InterruptTypeDef_st* pLPS22HBInt);
nikapov 0:3de9cb936fd1 1258
nikapov 0:3de9cb936fd1 1259 /**
nikapov 0:3de9cb936fd1 1260 * @brief LPS22HBGet_InterruptConfig
nikapov 0:3de9cb936fd1 1261 * @param Struct to empty with configuration values
nikapov 0:3de9cb936fd1 1262 * @retval S Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1263 */
nikapov 0:3de9cb936fd1 1264 LPS22HB_Error_et LPS22HB_Get_InterruptConfig(void *handle, LPS22HB_InterruptTypeDef_st* pLPS22HBInt);
nikapov 0:3de9cb936fd1 1265
nikapov 0:3de9cb936fd1 1266 /**
nikapov 0:3de9cb936fd1 1267 * @brief Set Fifo configuration
nikapov 0:3de9cb936fd1 1268 * @param Struct holding the configuration values
nikapov 0:3de9cb936fd1 1269 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1270 */
nikapov 0:3de9cb936fd1 1271 LPS22HB_Error_et LPS22HB_Set_FifoConfig(void *handle, LPS22HB_FIFOTypeDef_st* pLPS22HBFIFO);
nikapov 0:3de9cb936fd1 1272
nikapov 0:3de9cb936fd1 1273 /**
nikapov 0:3de9cb936fd1 1274 * @brief Get Fifo configuration
nikapov 0:3de9cb936fd1 1275 * @param Struct to empty with the configuration values
nikapov 0:3de9cb936fd1 1276 * @retval Error code[LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1277 */
nikapov 0:3de9cb936fd1 1278 LPS22HB_Error_et LPS22HB_Get_FifoConfig(void *handle, LPS22HB_FIFOTypeDef_st* pLPS22HBFIFO);
nikapov 0:3de9cb936fd1 1279
nikapov 0:3de9cb936fd1 1280 /**
nikapov 0:3de9cb936fd1 1281 * @brief Clock Tree Confoguration
nikapov 0:3de9cb936fd1 1282 * @param LPS22HB_CTE_NotBalanced, LPS22HB_CTE_ABalanced
nikapov 0:3de9cb936fd1 1283 * @retval Error Code [LPS22HB_ERROR, LPS22HB_OK]
nikapov 0:3de9cb936fd1 1284 */
nikapov 0:3de9cb936fd1 1285 LPS22HB_Error_et LPS22HB_Set_ClockTreeConfifuration(void *handle, LPS22HB_CTE_et mode);
nikapov 0:3de9cb936fd1 1286
nikapov 0:3de9cb936fd1 1287 /**
nikapov 0:3de9cb936fd1 1288 * @}
nikapov 0:3de9cb936fd1 1289 */
nikapov 0:3de9cb936fd1 1290
nikapov 0:3de9cb936fd1 1291 /**
nikapov 0:3de9cb936fd1 1292 * @}
nikapov 0:3de9cb936fd1 1293 */
nikapov 0:3de9cb936fd1 1294
nikapov 0:3de9cb936fd1 1295 /**
nikapov 0:3de9cb936fd1 1296 * @}
nikapov 0:3de9cb936fd1 1297 */
nikapov 0:3de9cb936fd1 1298
nikapov 0:3de9cb936fd1 1299 #ifdef __cplusplus
nikapov 0:3de9cb936fd1 1300 }
nikapov 0:3de9cb936fd1 1301 #endif
nikapov 0:3de9cb936fd1 1302
nikapov 0:3de9cb936fd1 1303 #endif /* __LPS22HB_DRIVER__H */
nikapov 0:3de9cb936fd1 1304
nikapov 0:3de9cb936fd1 1305 /******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/