Example of single tap and double tap detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of SingleDoubleTap_IKS01A2 by ST Expansion SW Team

Single and Double Tap Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to detect the single and double tap events using the sensor expansion board and send a notification using UART to a connected PC or Desktop and display it on terminal applications like TeraTerm.
After connection has been established:
- the user can try to tap the board and then view the notification using an hyper terminal. When the single tap is detected, the LED is switched on for a while.
- the user can press the user button to pass from the single tap detection to the double tap detection feature. The user can try to double tap the board and then view the notification using an hyper terminal. When the double tap is detected, the LED is switched on twice for a while.
- the user can press again the user button to disable the single and double tap detection feature.
- the user can press the user button to enable again the single tap detection feature and so on.

Committer:
cparata
Date:
Fri Aug 19 12:31:21 2016 +0000
Revision:
2:21a191bd1998
Parent:
0:e4f89df7a7a5
Add interfaces to all components

Who changed what in which revision?

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