Files
uC_libs/oled/ssd1306/ssd1306.c
bartool 55f54a2d4a Complete init sh1106
update cmkae file for test
2022-06-18 11:22:32 +02:00

48 lines
1.2 KiB
C

#include "ssd1306.h"
#include "connection.h"
void SSD1306_Init(OLED_HandleTypeDef *hOled)
{
uint8_t comPins = 0x02;
uint8_t contrast = 0x8F;
if ((hOled->Width == 128) && (hOled->Height == 32)) {
comPins = 0x02;
contrast = 0x0F;
} else if ((hOled->Width == 128) && (hOled->Height == 64)) {
comPins = 0x12;
contrast = 0xCF;
} else if ((hOled->Width == 96) && (hOled->Height == 16)) {
comPins = 0x02; // ada x12
contrast = 0xAF;
}
uint8_t display = SSD1306_DISPLAYOFF;
oled_SendCommand(hOled, &display, 1);
uint8_t config[] = {
SSD1306_SETMULTIPLEX, hOled->Height -1,
SSD1306_SETDISPLAYOFFSET, 0x00,
SSD1306_SETSTARTLINE | 0x00,
SSD1306_SEGREMAP | 0x01,
SSD1306_COMSCANDEC,
SSD1306_SETCOMPINS, comPins,
SSD1306_SETCONTRAST, contrast,
SSD1306_DISPLAYALLON_RESUME,
SSD1306_NORMALDISPLAY,
SSD1306_SETDISPLAYCLOCKDIV, 0x80,
SSD1306_CHARGEPUMP, 0x14,
SSD1306_MEMORYMODE, 0x00,
SSD1306_DEACTIVATE_SCROLL,
SSD1306_SETPRECHARGE, 0xF1,
SSD1306_SETVCOMDETECT, 0x40
};
oled_SendCommand(hOled, config, sizeof(config));
display = SSD1306_DISPLAYOFF;
oled_SendCommand(hOled, &display, 1);
}