aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/St7789.cpp14
-rw-r--r--src/drivers/St7789.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp
index 035d61c9..48b65acb 100644
--- a/src/drivers/St7789.cpp
+++ b/src/drivers/St7789.cpp
@@ -27,6 +27,7 @@ void St7789::Init() {
#endif
NormalModeOn();
SetVdv();
+ PowerControl();
DisplayOn();
}
@@ -176,6 +177,19 @@ void St7789::DisplayOn() {
WriteCommand(static_cast<uint8_t>(Commands::DisplayOn));
}
+void St7789::PowerControl() {
+ WriteCommand(static_cast<uint8_t>(Commands::PowerControl1));
+ constexpr uint8_t args[] = {
+ 0xa4, // Constant
+ 0x00, // Lowest possible voltages
+ };
+ WriteData(args, sizeof(args));
+
+ WriteCommand(static_cast<uint8_t>(Commands::PowerControl2));
+ // Lowest possible boost circuit clocks
+ WriteData(0xb3);
+}
+
void St7789::SetAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
WriteCommand(static_cast<uint8_t>(Commands::ColumnAddressSet));
uint8_t colArgs[] = {
diff --git a/src/drivers/St7789.h b/src/drivers/St7789.h
index e249e0b0..68e9f058 100644
--- a/src/drivers/St7789.h
+++ b/src/drivers/St7789.h
@@ -54,6 +54,7 @@ namespace Pinetime {
void FrameRateLow();
void DisplayOn();
void DisplayOff();
+ void PowerControl();
void SetAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
void SetVdv();
@@ -81,6 +82,8 @@ namespace Pinetime {
FrameRate = 0xb3,
VdvSet = 0xc4,
Command2Enable = 0xdf,
+ PowerControl1 = 0xd0,
+ PowerControl2 = 0xe8,
};
void WriteData(uint8_t data);
void WriteData(const uint8_t* data, size_t size);