Author: Jean-François Milants <jf@codingfield.com>
Power optimization - Improve SPI sleep mode ST7789 driver : replace the constant '26' with a named constant to specify the pin number of the reset pin of the LCD controller.
src/drivers/PinMap.h | 1 + src/drivers/St7789.cpp | 12 ++++++------ src/drivers/St7789.h | 3 ++- src/main.cpp | 2 +-
diff --git a/src/drivers/PinMap.h b/src/drivers/PinMap.h index a70cfc414fa5dc5932eec5e7e7a2499dcb81bbc9..238b965d4a22be75f9202dee020a93af9eb11b45 100644 --- a/src/drivers/PinMap.h +++ b/src/drivers/PinMap.h @@ -34,6 +34,7 @@ static constexpr uint8_t SpiFlashCsn = 5; static constexpr uint8_t SpiLcdCsn = 25; static constexpr uint8_t LcdDataCommand = 18; + static constexpr uint8_t LcdReset = 26; static constexpr uint8_t TwiScl = 7; static constexpr uint8_t TwiSda = 6; diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp index e18c43a38fd5e3b51a68db419bc2f34164275fb7..7855bc317359b4a300ec3b69218485d73ce1ebde 100644 --- a/src/drivers/St7789.cpp +++ b/src/drivers/St7789.cpp @@ -6,13 +6,13 @@ #include "drivers/Spi.h" using namespace Pinetime::Drivers; -St7789::St7789(Spi& spi, uint8_t pinDataCommand) : spi {spi}, pinDataCommand {pinDataCommand} { +St7789::St7789(Spi& spi, uint8_t pinDataCommand, uint8_t pinReset) : spi {spi}, pinDataCommand {pinDataCommand}, pinReset{pinReset} { } void St7789::Init() { nrf_gpio_cfg_output(pinDataCommand); - nrf_gpio_cfg_output(26); - nrf_gpio_pin_set(26); + nrf_gpio_cfg_output(pinReset); + nrf_gpio_pin_set(pinReset); HardwareReset(); SoftwareReset(); SleepOut(); @@ -178,15 +178,15 @@ WriteSpi(data, size); } void St7789::HardwareReset() { - nrf_gpio_pin_clear(26); + nrf_gpio_pin_clear(pinReset); nrf_delay_ms(10); - nrf_gpio_pin_set(26); + nrf_gpio_pin_set(pinReset); } void St7789::Sleep() { SleepIn(); nrf_gpio_cfg_default(pinDataCommand); - nrf_gpio_cfg_default(26); + nrf_gpio_cfg_default(pinReset); NRF_LOG_INFO("[LCD] Sleep"); } diff --git a/src/drivers/St7789.h b/src/drivers/St7789.h index 8a1bdfca98231b5e3db7b761e41d981dfb8aba3e..68e1da444ab59ce07b8dc7026a3dc20269bb1eaf 100644 --- a/src/drivers/St7789.h +++ b/src/drivers/St7789.h @@ -8,7 +8,7 @@ class Spi; class St7789 { public: - explicit St7789(Spi& spi, uint8_t pinDataCommand); + explicit St7789(Spi& spi, uint8_t pinDataCommand, uint8_t pinReset); St7789(const St7789&) = delete; St7789& operator=(const St7789&) = delete; St7789(St7789&&) = delete; @@ -29,6 +29,7 @@ private: Spi& spi; uint8_t pinDataCommand; + uint8_t pinReset; uint8_t verticalScrollingStartAddress = 0; void HardwareReset(); diff --git a/src/main.cpp b/src/main.cpp index 9c13a169e03d51005c3866e03a3d03c543b81915..ee6a6d3de5c600b8bab5ba846a30893d2edd0e0c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -68,7 +68,7 @@ Pinetime::PinMap::SpiMosi, Pinetime::PinMap::SpiMiso}}; Pinetime::Drivers::Spi lcdSpi {spi, Pinetime::PinMap::SpiLcdCsn}; -Pinetime::Drivers::St7789 lcd {lcdSpi, Pinetime::PinMap::LcdDataCommand}; +Pinetime::Drivers::St7789 lcd {lcdSpi, Pinetime::PinMap::LcdDataCommand, Pinetime::PinMap::LcdReset}; Pinetime::Drivers::Spi flashSpi {spi, Pinetime::PinMap::SpiFlashCsn}; Pinetime::Drivers::SpiNorFlash spiNorFlash {flashSpi};