diff --git a/src/shared/sensors/LIS2MDL/LIS2MDL.cpp b/src/shared/sensors/LIS2MDL/LIS2MDL.cpp
index ae2bb907a9087b2476481dbf54b4b5971f66ab19..9d8ab34794b58844f20bc56470b017d1b7ec98ef 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 7e82c8fd4b16b35f1a8743a72caeb02ab00b9b05..3fdaf088700edde9513c1da38354c8a42cf0f4a1 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 bcab4bc630b9bd214ab011a830344cf23c4df33b..a0060c76e9b1f44d551ad27c3088b48d8f8ab6d5 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;