You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
/** |
|
* @brief |
|
* |
|
* Temperature measurements must be enabled for the DPS422 to compensate for temperature drift in the pressure measurement. |
|
* @file Dps422.h |
|
* @author Infineon Technologies |
|
* @date 2018-08-22 |
|
*/ |
|
|
|
#ifndef DPS422_H_INCLUDED |
|
#define DPS422_H_INCLUDED |
|
#include "DpsClass.h" |
|
#include "util/dps422_config.h" |
|
|
|
class Dps422 : public DpsClass |
|
{ |
|
public: |
|
int16_t getContResults(float *tempBuffer, uint8_t &tempCount, float *prsBuffer, uint8_t &prsCount); |
|
|
|
/** |
|
* @brief Set the source of interrupt (FIFO full, measurement values ready) |
|
* |
|
* @param intr_source Source of interrupt as defined by Interrupt_source_420_e |
|
* @param polarity |
|
* @return int16_t |
|
*/ |
|
int16_t setInterruptSources(uint8_t intr_source, uint8_t polarity = 1); |
|
|
|
/** |
|
* @brief measures both temperature and pressure values, when op mode is set to CMD_BOTH |
|
* |
|
* @param prs reference to the pressure value |
|
* @param temp prs reference to the temperature value |
|
* @return status code |
|
*/ |
|
int16_t measureBothOnce(float &prs, float &temp); // might make sense to declare in base class for future sensors |
|
|
|
int16_t measureBothOnce(float &prs, float &temp, uint8_t prs_osr, uint8_t temp_osr); |
|
|
|
protected: |
|
//compensation coefficients (for simplicity use 32 bits) |
|
float a_prime; |
|
float b_prime; |
|
int32_t m_c02; |
|
int32_t m_c12; |
|
|
|
/////// implement pure virtual functions /////// |
|
void init(void); |
|
int16_t readcoeffs(void); |
|
int16_t flushFIFO(); |
|
float calcTemp(int32_t raw); |
|
float calcPressure(int32_t raw); |
|
}; |
|
|
|
#endif |