From 77537a36e67bb406fbcca580beaafc466cafe76e Mon Sep 17 00:00:00 2001 From: Alberto Nidasio <alberto.nidasio@skywarder.eu> Date: Fri, 17 Mar 2023 17:47:00 +0100 Subject: [PATCH] [LIS2MDL] Updated temperature register reading --- src/shared/sensors/LIS2MDL/LIS2MDL.cpp | 14 ++++++++++---- src/shared/sensors/LIS2MDL/LIS2MDL.h | 2 ++ src/tests/sensors/test-lis2mdl.cpp | 4 +--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/shared/sensors/LIS2MDL/LIS2MDL.cpp b/src/shared/sensors/LIS2MDL/LIS2MDL.cpp index ae2bb907a..9d8ab3479 100644 --- a/src/shared/sensors/LIS2MDL/LIS2MDL.cpp +++ b/src/shared/sensors/LIS2MDL/LIS2MDL.cpp @@ -35,6 +35,15 @@ LIS2MDL::LIS2MDL(SPIBusInterface& bus, miosix::GpioPin pin, { } +SPIBusConfig LIS2MDL::getDefaultSPIConfig() +{ + SPIBusConfig spiConfig; + spiConfig.clockDivider = SPI::ClockDivider::DIV_256; + spiConfig.mode = SPI::Mode::MODE_3; + spiConfig.byteOrder = SPI::Order::LSB_FIRST; + return spiConfig; +} + bool LIS2MDL::init() { if (isInitialized) @@ -187,10 +196,7 @@ LIS2MDLData LIS2MDL::sampleImpl() if (configuration.temperatureDivider != 0 && tempCounter % configuration.temperatureDivider == 0) { - uint8_t values[2]; - spi.readRegisters(TEMP_OUT_L_REG, values, sizeof(values)); - - int16_t outTemp = values[1] << 8 | values[0]; + int16_t outTemp = spi.readRegister16(TEMP_OUT_L_REG); newData.temperatureTimestamp = TimestampTimer::getTimestamp(); newData.temperature = DEG_PER_LSB * outTemp; newData.temperature += REFERENCE_TEMPERATURE; diff --git a/src/shared/sensors/LIS2MDL/LIS2MDL.h b/src/shared/sensors/LIS2MDL/LIS2MDL.h index 7e82c8fd4..3fdaf0887 100644 --- a/src/shared/sensors/LIS2MDL/LIS2MDL.h +++ b/src/shared/sensors/LIS2MDL/LIS2MDL.h @@ -79,6 +79,8 @@ public: LIS2MDL(SPIBusInterface& bus, miosix::GpioPin pin, SPIBusConfig spiConfig = {}, Config config = {}); + static SPIBusConfig getDefaultSPIConfig(); + bool init() override; bool selfTest() override; diff --git a/src/tests/sensors/test-lis2mdl.cpp b/src/tests/sensors/test-lis2mdl.cpp index bcab4bc63..a0060c76e 100644 --- a/src/tests/sensors/test-lis2mdl.cpp +++ b/src/tests/sensors/test-lis2mdl.cpp @@ -48,9 +48,7 @@ int main() SPIBus bus(SPI1); - SPIBusConfig busConfig; - busConfig.clockDivider = SPI::ClockDivider::DIV_256; - busConfig.mode = SPI::Mode::MODE_3; + SPIBusConfig busConfig = LIS2MDL::getDefaultSPIConfig(); LIS2MDL::Config config; config.odr = LIS2MDL::ODR_10_HZ; -- GitLab