From 0ab22283645c819dc6228356ed1b608904a6ba9a Mon Sep 17 00:00:00 2001 From: inmarket Date: Fri, 18 Sep 2015 11:17:19 +1000 Subject: [PATCH] Add support for SH1106 in the SSD1306 driver --- drivers/gdisp/SSD1306/SSD1306.h | 3 +++ drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/drivers/gdisp/SSD1306/SSD1306.h b/drivers/gdisp/SSD1306/SSD1306.h index 7d7010e8..8ec8b3ad 100644 --- a/drivers/gdisp/SSD1306/SSD1306.h +++ b/drivers/gdisp/SSD1306/SSD1306.h @@ -44,6 +44,9 @@ #define SSD1306_EXTERNALVCC 0x1 #define SSD1306_SWITCHCAPVCC 0x2 +#define SSD1306_SETLOWCOLUMN 0x00 +#define SSD1306_SETHIGHCOLUMN 0x10 + // Scrolling #defines #define SSD1306_SCROLL_ACTIVATE 0x2F #define SSD1306_SCROLL_DEACTIVATE 0x2E diff --git a/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c b/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c index 2313e765..5a950b0d 100644 --- a/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c +++ b/drivers/gdisp/SSD1306/gdisp_lld_SSD1306.c @@ -150,6 +150,12 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { write_cmd(g, SSD1306_SETSTARTLINE | 0); while (pages--) { + #if SSD1306_SH1106 + write_cmd(g, SSD1306_PAM_PAGE_START + (7 - pages)); + write_cmd(g, SSD1306_SETLOWCOLUMN + 2); + write_cmd(g, SSD1306_SETHIGHCOLUMN); + #endif + write_data(g, ram, SSD1306_PAGE_WIDTH); ram += SSD1306_PAGE_WIDTH; }