diff options
Diffstat (limited to 'src/drivers/St7789.cpp')
-rw-r--r-- | src/drivers/St7789.cpp | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp index 7c52f179..0bb7b7c9 100644 --- a/src/drivers/St7789.cpp +++ b/src/drivers/St7789.cpp @@ -48,7 +48,10 @@ void St7789::SoftwareReset() { void St7789::SleepOut() { WriteCommand(static_cast<uint8_t>(Commands::SleepOut)); - nrf_delay_ms(500); +} + +void St7789::SleepIn() { + WriteCommand(static_cast<uint8_t>(Commands::SleepIn)); } void St7789::ColMod() { @@ -90,7 +93,6 @@ void St7789::NormalModeOn() { void St7789::DisplayOn() { WriteCommand(static_cast<uint8_t>(Commands::DisplayOn)); - nrf_delay_ms(500); } void St7789::FillRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) { @@ -163,9 +165,30 @@ void St7789::NextDrawBuffer(const uint8_t *data, size_t size) { void St7789::HardwareReset() { nrf_gpio_pin_clear(26); - nrf_delay_ms(200); + nrf_delay_ms(10); nrf_gpio_pin_set(26); +} + +void St7789::Sleep() { + SleepIn(); + nrf_gpio_cfg_default(pinDataCommand); + spi.Sleep(); +} +void St7789::Wakeup() { + spi.Wakeup(); + + nrf_gpio_cfg_output(pinDataCommand); + // TODO why do we need to reset the controller? + SoftwareReset(); + SleepOut(); + ColMod(); + MemoryDataAccessControl(); + ColumnAddressSet(); + RowAddressSet(); + DisplayInversionOn(); + NormalModeOn(); + DisplayOn(); } |