Skyward boardcore
Loading...
Searching...
No Matches
LPS22DF.h
Go to the documentation of this file.
1/* Copyright (c) 2023 Skyward Experimental Rocketry
2 * Author: Giulia Ghirardini
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22
23#pragma once
24
27#include <sensors/Sensor.h>
28
29#include "LPS22DFData.h"
30
31namespace Boardcore
32{
33
37class LPS22DF : public Sensor<LPS22DFData>
38{
39public:
47 enum ODR : uint8_t
48 {
49 ONE_SHOT = 0b0000 << 3,
50 ODR_1 = 0b0001 << 3,
51 ODR_4 = 0b0010 << 3,
52 ODR_10 = 0b0011 << 3,
53 ODR_25 = 0b0100 << 3,
54 ODR_50 = 0b0101 << 3,
55 ODR_75 = 0b0110 << 3,
56 ODR_100 = 0b0111 << 3,
57 ODR_200 = 0b1000 << 3
58 };
59
70 enum AVG : uint8_t
71 {
72 AVG_4 = 0b000,
73 AVG_8 = 0b001,
74 AVG_16 = 0b010,
75 AVG_32 = 0b011,
76 AVG_64 = 0b100,
77 AVG_128 = 0b101,
78 AVG_512 = 0b111
79 };
80
89
96 LPS22DF(SPIBusInterface& bus, miosix::GpioPin cs);
97
105 LPS22DF(SPIBusInterface& bus, miosix::GpioPin cs, SPIBusConfig spiConfig,
106 Config config);
107
109
114 bool init() override;
115
122 bool selfTest() override;
123
127 void setConfig(const Config& config);
128
133 void setAverage(AVG avg);
134
139 void setOutputDataRate(ODR odr);
140
141protected:
142 LPS22DFData sampleImpl() override;
143
144private:
145 SPISlave slave;
146 Config config;
147
148 bool isInitialized = false;
149
150 PrintLogger logger = Logging::getLogger("lps22df");
151};
152
153} // namespace Boardcore
Driver for LPS22DF, Low-power and high-precision MEMS pressure sensor.
Definition LPS22DF.h:38
void setConfig(const Config &config)
Sets and saves the configurations passed on the parameters.
Definition LPS22DF.cpp:103
void setOutputDataRate(ODR odr)
Sets and saves the output data rate.
Definition LPS22DF.cpp:124
AVG
Oversampling average values.
Definition LPS22DF.h:71
static SPIBusConfig getDefaultSPIConfig()
Definition LPS22DF.cpp:45
LPS22DFData sampleImpl() override
Read a data sample from the sensor. In case of errors, the method should return the last available co...
Definition LPS22DF.cpp:139
bool selfTest() override
The self test method returns true if we read the right whoami value. We can't make a better self test...
Definition LPS22DF.cpp:76
ODR
Enumeration for Output Data Rate Configuration.
Definition LPS22DF.h:48
LPS22DF(SPIBusInterface &bus, miosix::GpioPin cs)
Constructor that stores the initial default settings (without applying them to the sensor).
Definition LPS22DF.cpp:34
bool init() override
Initializes the sensor with the current settings.
Definition LPS22DF.cpp:54
void setAverage(AVG avg)
Sets and saves the oversampling on the sensor.
Definition LPS22DF.cpp:109
static PrintLogger getLogger(const string &name)
Interface for low level access of a SPI bus as a master.
Base sensor class with has to be extended by any sensor driver.
Definition Sensor.h:91
This file includes all the types the logdecoder script will decode.
Struct that sums up all the settings of the sensor.
Definition LPS22DF.h:85
SPI Bus configuration for a specific slave.
Contains information about a single SPI slave device.