diff options
author | Tim Keller <geekboy1011@gmail.com> | 2021-10-18 04:20:11 +0000 |
---|---|---|
committer | Tim Keller <geekboy1011@gmail.com> | 2021-12-10 01:18:57 +0000 |
commit | 1b4b422ab6d7588e21e58fcf1d2ba04470abc611 (patch) | |
tree | 5409c821ba670c3161529e01a327ee1711fce021 /src/drivers | |
parent | 3a8e66a52fcc6317a7dffa15cb161f37a645d36c (diff) |
More attempted SPI fixes
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/Spi.cpp | 14 | ||||
-rw-r--r-- | src/drivers/Spi.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/drivers/Spi.cpp b/src/drivers/Spi.cpp index e477622b..46552437 100644 --- a/src/drivers/Spi.cpp +++ b/src/drivers/Spi.cpp @@ -10,14 +10,24 @@ Spi::Spi(SpiMaster& spiMaster, uint8_t pinCsn) : spiMaster {spiMaster}, pinCsn { } bool Spi::Write(const uint8_t* data, size_t size) { + if(!active){ + Wakeup(); + } return spiMaster.Write(pinCsn, data, size); } bool Spi::Read(uint8_t* cmd, size_t cmdSize, uint8_t* data, size_t dataSize) { + if(!active){ + Wakeup(); + } return spiMaster.Read(pinCsn, cmd, cmdSize, data, dataSize); } void Spi::Sleep() { + if(!active){ + return; + } + active = false; nrf_gpio_cfg_default(pinCsn); NRF_LOG_INFO("[SPI] Sleep") } @@ -32,7 +42,11 @@ bool Spi::Init() { } void Spi::Wakeup() { + if(active){ + return; + } nrf_gpio_cfg_output(pinCsn); nrf_gpio_pin_set(pinCsn); + active=true; NRF_LOG_INFO("[SPI] Wakeup") } diff --git a/src/drivers/Spi.h b/src/drivers/Spi.h index 9b6a30f4..51de2b34 100644 --- a/src/drivers/Spi.h +++ b/src/drivers/Spi.h @@ -23,6 +23,7 @@ namespace Pinetime { private: SpiMaster& spiMaster; uint8_t pinCsn; + bool active; }; } } |