Чем настройка OLED 128×32 на SSD1306 отличается от 128×64?
Обновлено Редакция GAW
Контроллер SSD1306 рассчитан на панель 128 × 64 точки, а модули 128 × 32 используют только часть его выходов. Если инициализировать такой модуль кодом для 128 × 64, изображение выходит растянутым, через строку или только наполовину. Общее описание контроллера и команд — на странице OLED-дисплей на SSD1306.
Что меняется
| Параметр | 128 × 64 | 128 × 32 |
|---|---|---|
| A8h, мультиплексирование | 3Fh (64 строки, значение после сброса) | 1Fh (32 строки) |
| DAh, конфигурация COM | 12h — альтернативная (после сброса) | под разводку панели: 02h или 12h |
| Страницы памяти | 0–7 | 0–3 |
| Буфер кадра | 128 × 64 / 8 = 1024 байт | 128 × 32 / 8 = 512 байт |
| Команда 22h (диапазон страниц) | 0, 7 | 0, 3 |
Размеры буфера — наш расчёт: в памяти GDDRAM каждая страница — 8 строк по 128 столбцов, по байту на столбец. Значение для DAh зависит от того, как выводы COM разведены на шлейфе конкретной панели: по даташиту это настройка под панель, а не под размер. Если изображение идёт через строку или растянуто, переключите 02h на 12h или обратно.
// SSD1306 128x32 differences from a 128x64 init (SSD1306 Rev 1.1, 10.1.5, 10.1.11, 10.1.18)
static const uint8_t init_128x32[] = {
0xA8, 0x1F, // multiplex ratio: 32 rows
0xDA, 0x02, // COM pins: sequential, no left/right remap (panel dependent)
0x22, 0x00, 0x03, // page range 0..3 for horizontal addressing
};
Остальное — как у 128×64
Адрес I2C, включение умножителя напряжения и команда включения дисплея те же, что у модулей 128 × 64, — они описаны на странице SSD1306; про адреса на шине — термин «Адрес I2C». Почему одни и те же модули бывают с разными контроллерами и разводкой, объясняет термин «Контроллер дисплея». Если нужен монохромный экран крупнее при том же числе выводов, сравните с Nokia 5110 на PCD8544 и другими моделями в разделе «Дисплеи».
Похожие вопросы
Какой адрес I2C у OLED 128×32?
Такой же, как у 128×64: 0x3C или 0x3D в 7-битной записи, в зависимости от уровня на выводе выбора адреса модуля. Если сканер шины находит устройство, а изображения нет, адрес уже ни при чём — проверяйте настройку A8h и DAh.
Почему на экране 128×32 видна только верхняя половина картинки?
Скорее всего, программа рисует для 128×64 и выводит все 8 страниц, а панель показывает только 32 строки. Нужно выводить страницы 0–3 и рисовать в буфере размером 128 × 32: так изображение займёт весь экран.
Можно ли развернуть изображение на 180 градусов?
Да, без перерисовки буфера: команда A1h переставляет столбцы, а C8h меняет направление обхода строк COM. Вместе они дают поворот на 180 градусов.
Источники
- Solomon Systech. SSD1306: 128 x 64 Dot Matrix OLED/PLED Segment/Common Driver with Controller, Rev 1.1, апрель 2008 (копия Adafruit) — разд. 8.7: GDDRAM 128 × 64 бит, восемь страниц PAGE0–PAGE7 по 8 строк COM; табл. 9-1 и разд. 10.1.11: A8h — коэффициент мультиплексирования N + 1 от 16 до 64, значения 0–14 недопустимы, после сброса 3Fh (64); разд. 10.1.18 и табл. 10-3: DAh — A[4] = 0 последовательная, 1 альтернативная конфигурация COM (после сброса), A[5] — перестановка COM слева и справа, конфигурацию выбирают под разводку панели; разд. 10.1.5: 22h — начальная и конечная страница для горизонтальной и вертикальной адресации; разд. 10.1.14: C0h/C8h — направление обхода COM; разд. 10.1.15: D3h — вертикальный сдвиг
- Solomon Systech. SSD1306 Rev 1.1 (копия из библиотеки контроллеров Crystalfontz) — та же редакция даташита; источник страницы SSD1306 на сайте
Нашли ошибку?
Смотрите также
- OLED на SSD1306Питание, I²C и SPI, адрес, память по страницам, команды, инициализация
- ЖК-дисплеиHD44780, KS0108, ST7920, TFT и OLED: типы модулей и выбор
- Контроллер и драйвер дисплеяМикросхема, которая хранит изображение и управляет строками и столбцами панели
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Nokia 5110 на PCD8544Питание 3,3 В, шина до 4 МГц, память 504 байта, команды, VOP и смещение