99 lines
2.3 KiB
C
99 lines
2.3 KiB
C
|
/*
|
||
|
* Copyright (c) 2020 Sven Herrmann
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*/
|
||
|
|
||
|
#ifndef ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_
|
||
|
#define ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_
|
||
|
|
||
|
/*
|
||
|
* Pressure Range
|
||
|
*
|
||
|
* MIN is always 0
|
||
|
*/
|
||
|
#define MPR_P_MIN (0)
|
||
|
|
||
|
#if defined(CONFIG_MPR_PRESSURE_RANGE_0001)
|
||
|
#define MPR_P_MAX (1)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_01_6)
|
||
|
#define MPR_P_MAX (1.6)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_02_5)
|
||
|
#define MPR_P_MAX (2.5)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0015)
|
||
|
#define MPR_P_MAX (15)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0025)
|
||
|
#define MPR_P_MAX (25)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0030)
|
||
|
#define MPR_P_MAX (30)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0060)
|
||
|
#define MPR_P_MAX (60)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0100)
|
||
|
#define MPR_P_MAX (100)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0160)
|
||
|
#define MPR_P_MAX (160)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0250)
|
||
|
#define MPR_P_MAX (250)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0400)
|
||
|
#define MPR_P_MAX (400)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_RANGE_0600)
|
||
|
#define MPR_P_MAX (600)
|
||
|
|
||
|
#else
|
||
|
#error "MPR: Unknown pressure range."
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Pressure Unit
|
||
|
*/
|
||
|
#if defined(CONFIG_MPR_PRESSURE_UNIT_P)
|
||
|
/* psi to kPa conversion factor: 6.894757 * 10^6 */
|
||
|
#define MPR_CONVERSION_FACTOR (6894757)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_UNIT_K)
|
||
|
/* kPa to kPa conversion factor: 1 * 10^6 */
|
||
|
#define MPR_CONVERSION_FACTOR (1000000)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_UNIT_B)
|
||
|
/* bar to kPa conversion factor: 100 * 10^6 */
|
||
|
#define MPR_CONVERSION_FACTOR (100000000)
|
||
|
|
||
|
#elif defined(CONFIG_MPR_PRESSURE_UNIT_M)
|
||
|
/* mbar to kPa conversion factor: 0.1 * 10^6 */
|
||
|
#define MPR_CONVERSION_FACTOR (100000)
|
||
|
|
||
|
#else
|
||
|
#error "MPR: Unknown pressure unit."
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Transfer function
|
||
|
*/
|
||
|
#if defined(CONFIG_MPR_TRANSFER_FUNCTION_A)
|
||
|
#define MPR_OUTPUT_MIN (0x19999A) /* 10% of 2^24 */
|
||
|
#define MPR_OUTPUT_MAX (0xE66666) /* 90% of 2^24 */
|
||
|
#elif defined(CONFIG_MPR_TRANSFER_FUNCTION_B)
|
||
|
#define MPR_OUTPUT_MIN (0x66666) /* 2.5% of 2^24 */
|
||
|
#define MPR_OUTPUT_MAX (0x399999) /* 22.5% of 2^24 */
|
||
|
#elif defined(CONFIG_MPR_TRANSFER_FUNCTION_C)
|
||
|
#define MPR_OUTPUT_MIN (0x333333) /* 20% of 2^24 */
|
||
|
#define MPR_OUTPUT_MAX (0xCCCCCC) /* 80% of 2^24 */
|
||
|
#else
|
||
|
#error "MPR: Unknown pressure reference."
|
||
|
#endif
|
||
|
|
||
|
#define MPR_OUTPUT_RANGE (MPR_OUTPUT_MAX - MPR_OUTPUT_MIN)
|
||
|
|
||
|
#endif /* ZEPHYR_DRIVERS_SENSOR_MPR_CONFIGURATION_H_ */
|