1 /* 2 * Copyright (c) 2023 Wuerth Elektronik eiSos GmbH & Co. KG 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @file 9 * @brief Header file for the WSEN-PDUS-25131308XXX01 sensor driver. 10 * 11 * #### INFORMATIVE #### 12 * The PDUS sensor has no registers to request. 13 * It will automatically send up to 4 bytes as reply to any read request to it's PDUS_ADDRESS_I2C. 14 * This sensor does not support write requests. 15 * This sensor only has a I2C communication interface alongside the analog interface. 16 */ 17 18 #ifndef _WSEN_PDUS_25131308XXX01_H 19 #define _WSEN_PDUS_25131308XXX01_H 20 21 /* Includes */ 22 23 #include <stdint.h> 24 25 #include "../WeSensorsSDK.h" 26 27 /* Available PDUS I2C slave addresses */ 28 29 #define PDUS_ADDRESS_I2C (uint8_t) 0x78 30 31 /* Misc. defines */ 32 #define P_MIN_VAL_PDUS (uint16_t) 3277 /**< Minimum raw value for pressure, calibrated range */ 33 #define P_MAX_VAL_PDUS (uint16_t) 29491 /**< Maximum raw value for pressure, calibrated range */ 34 #define T_MIN_VAL_PDUS (uint16_t) 8192 /**< Minimum raw value for temperature in degrees Celsius = 0°C, calibrated range */ 35 #define T_MAX_VAL_PDUS (uint16_t) 24576 /**< Maximum raw value for temperature in degrees Celsius = 70°C, calibrated range */ 36 37 38 /* Functional type definitions */ 39 40 /** 41 * @brief PDUS sensor model 42 * Please refer to the PDUS user manual's chapter "Look-up-Table" for detailed paramters. 43 */ 44 typedef enum 45 { 46 PDUS_pdus0 = 0, /**< order code 2513130810001, range = -0.1 to +0.1 kPa */ 47 PDUS_pdus1 = 1, /**< order code 2513130810101 (5V VCC) + 2513130810102 (3.3V VCC), range = -1 to +1 kPa */ 48 PDUS_pdus2 = 2, /**< order code 2513130810201, range = -10 to +10 kPa */ 49 PDUS_pdus3 = 3, /**< order code 2513130810301, range = 0 to 100 kPa */ 50 PDUS_pdus4 = 4, /**< order code 2513130810401 (5V VCC) + 2513130810401(3.3V VCC), range = -100 to +1000 kPa */ 51 PDUS_pdus5 = 5, /**< order code 2513130815401, range = 0 to +1500 kPa */ 52 PDUS_invalid = 0xFFFF, /**< */ 53 } PDUS_SensorType_t; 54 55 #ifdef __cplusplus 56 extern "C" 57 { 58 #endif 59 60 /* Function definitions */ 61 62 int8_t PDUS_getDefaultInterface(WE_sensorInterface_t* sensorInterface); 63 64 int8_t PDUS_getRawPressure(WE_sensorInterface_t* sensorInterface, uint16_t *pressure); 65 int8_t PDUS_getRawPressureAndTemperature(WE_sensorInterface_t* sensorInterface, uint16_t *pressure, uint16_t *temperature); 66 67 #ifdef WE_USE_FLOAT 68 int8_t PDUS_getPressure_float(WE_sensorInterface_t* sensorInterface, PDUS_SensorType_t type, float *presskPa); 69 int8_t PDUS_getPressureAndTemperature_float(WE_sensorInterface_t* sensorInterface, PDUS_SensorType_t type, float *presskPa, float *tempDegC); 70 71 int8_t PDUS_convertPressureToFloat(PDUS_SensorType_t type, uint16_t rawPressure, float *presskPa); 72 #endif // WE_USE_FLOAT 73 74 #ifdef __cplusplus 75 } 76 #endif 77 78 #endif /* _WSEN_PDUS_H */ 79