diff --git a/src/shared/radio/SX1278/SX1278.cpp b/src/shared/radio/SX1278/SX1278.cpp index bed1ae549d6daf57f3b77e8f6f0787c3efa9b5d9..9accf796126559e3b56886023cbe8f94498cb654 100644 --- a/src/shared/radio/SX1278/SX1278.cpp +++ b/src/shared/radio/SX1278/SX1278.cpp @@ -156,15 +156,16 @@ SX1278::SX1278(SPIBusInterface &bus, miosix::GpioPin cs) : bus_mgr(bus, cs) {} SX1278::Error SX1278::init(Config config) { - // Lock the bus - bus_mgr.lock(Mode::MODE_STDBY); - bus_mgr.waitForIrq(RegIrqFlags::MODE_READY); - + // Do an early version check to avoid stalling on non-working device if (getVersion() != 0x12) { return Error::BAD_VERSION; } + // Lock the bus + bus_mgr.lock(Mode::MODE_STDBY); + bus_mgr.waitForIrq(RegIrqFlags::MODE_READY); + setBitrate(config.bitrate); setFreqDev(config.freq_dev); setFreqRF(config.freq_rf); diff --git a/src/shared/radio/SX1278/SX1278Defs.h b/src/shared/radio/SX1278/SX1278Defs.h index 06954099644e8a7b6d6b6566e0ad7d2ef1118f3b..e573f1bfff65211a6574c3b03c44903d8e2f0c45 100644 --- a/src/shared/radio/SX1278/SX1278Defs.h +++ b/src/shared/radio/SX1278/SX1278Defs.h @@ -60,7 +60,7 @@ inline SPIBusConfig spiConfig() // FIXME(davide.mor): This depends on the device config.clockDivider = SPI::ClockDivider::DIV_64; - config.mode = SPI::Mode::MODE_1; + config.mode = SPI::Mode::MODE_0; config.bitOrder = SPI::BitOrder::MSB_FIRST; // config.cs_setup_time_us = 30; // config.cs_hold_time_us = 100;