Garage Door Monitor and Opener

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Introduction

This system implements a simple garage door opener and environmental monitor. The hardware connects to the internet using Wi-Fi then on to the Pelion Device Management Platform which provides device monitoring and secure firmware updates over the air (FOTA). Pelion Device Management provides a flexible set of REST APIs which we will use to communicate to a web application running on an EC-2 instance in AWS. The web application will serve a web page where we can monitor and control our garage..

This project is intended to work on the DISCO-L475VG-IOT01A from ST Microelectronics It implements a simple actuator to drive a relay to simulate pushing the "open" button on older style garage doors which do not use a rolling code interface.

The system is designed to be mounted over the door so that the on board time of flight sensor can be used to detect if the door is open or closed.

The system also monitors temperature, humidity and barometric pressure.

https://os.mbed.com/media/uploads/JimCarver/garageopener.jpg

Hardware Requirements:

DISCO-L475G-IOT01A https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/

Seeed Studio Grove Relay module https://www.seeedstudio.com/Grove-Relay.html

Seeed Studio Grove cable, I used this one: https://www.seeedstudio.com/Grove-4-pin-Male-Jumper-to-Grove-4-pin-Conversion-Cable-5-PCs-per-Pack.html

Connect to the PMOD connector like this:

https://os.mbed.com/media/uploads/JimCarver/opener.jpg

This shows how I installed so that the time of flight sensor can detect when the door is open

https://os.mbed.com/media/uploads/JimCarver/opener1.jpg https://os.mbed.com/media/uploads/JimCarver/opener2.jpg

To use the project:

You will also need a Pelion developers account.

I suggest you first use the Pelion quick state to become familiar with Pelion Device Management. https://os.mbed.com/guides/connect-device-to-pelion/1/?board=ST-Discovery-L475E-IOT01A

Web Interface

For my web interface I am running node-red under Ubuntu in an EC2 instance on AWS. This can run for 12 month within the constraints of their free tier. Here is a tutorial: https://nodered.org/docs/getting-started/aws

You will also need to install several node-red add ons:

sudo npm install -g node-red-dashboard

sudo npm install -g node-red-contrib-mbed-cloud

sudo npm istall -g node-red-contrib-moment

After starting node-red import the contents of GarageFlow.txt from the project, pin the flow into the page.

To enable your web app to access your Pelion account you need an API key.

First you will neet to use your Pelion account to create an API key.

https://os.mbed.com/media/uploads/JimCarver/api_portal.jpg

Now we need to apply that API key to your Node-Red flow.

https://os.mbed.com/media/uploads/JimCarver/api_node-red.jpg

Committer:
JimCarver
Date:
Thu Dec 05 19:03:48 2019 +0000
Revision:
37:ec1124e5ec1f
Parent:
18:a15bfe7aaebd
Bug fix

Who changed what in which revision?

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