Найти тему
Astro-grad

Подключение SSD1306 к STM32 подробная инструкция

Оглавление

Я столкнулся с некоторыми трудностями подключения экрана SSD1306 к микроконтроллеру STM32 в среде разработки STM32CubeIDE. Постараюсь описать как все-таки получилось подключить.

Первым делом естественно полез в Интернет искать библиотеки. И конечно же нашел. Например, вот здесь https://github.com/afiskon/stm32-ssd1306 и описание от автора вот здесь https://eax.me/stm32-ssd1306/

Ну, думаю, надо создать проект, положить в него каталог библиотеки, подключить через #include, посмотреть какие ножки нужно подключать и всё заработает. Не тут-то было. Пару дней провозился безрезультатно, потом отложил и просто изучал программирование под STM32. Потом вернулся к этой теме и только тогда все получилось.

Пошаговая инструкция

1. Создаем в STM32CubeIDE новый проект, выбираем в нем ваш микроконтроллер. В моем случае это STM32F103C8T6.

2. Как обычно включаем возможность отладки.

-2

2. Настраиваем ножки SPI или I2C.

  • Если связь будет осуществляться через SPI, тогда включаем его:
-3

При этом видим какие ножки микроконтроллера будут для этого использоваться:

-4

Еще понадобятся три ножки микроконтроллера. Пускай это будут PA1, PA2, PA3. Щелкаем по ним левой кнопкой мыши и выбираем GPIO_Output:

-5

  • Если связь будет осуществляться через I2C, то включаем его:
-6

При этом видим какие ножки для этого будут использоваться:

-7

3. Если надо, то на вкладке Clock Configuration настраиваем частоты микроконтроллера, если не надо, оставляем все как есть. Потом переходим на вкладку Project Manager и ставим следующую галку:

-8

4. Остальные настройки оставляем без изменений и сохраняем проект. При этом IDE предлагает нам сгенерировать код. Соглашаемся.

5. Скачиваем библиотеку от сюда https://github.com/afiskon/stm32-ssd1306

Или от сюда https://disk.yandex.ru/d/ATLVwRvoRW4P6w

Берем от туда каталог ssd1306 и копируем себе в проект.

Чтобы он стал виден в Project Explorer нужно нажать F5

-9

Но этого мало. Нужно добавить пути к каталогу еще и в свойствах проекта:

-10

-11

6. Добавить в проект include

-12

7. Настроить файл конфигурации библиотеки

Для начала переименовываем файл "ssd1306_conf_template.h" в "ssd1306_conf.h"

В этом файле нужно раскомментировать строчку с типом вашего микроконтроллера, остальные закомментировать:

-13

Далее выбрать тип связи:

-14

Теперь надо настроить следующую часть кода в зависимости от типа связи и того, какие ножки микроконтроллера мы включили:

-15

Обычно больше ничего настраивать не надо, но на всякий случай прочитайте комментарии в остальной части файла конфигурации и если вам что-то нужно, то поменяйте настройки.

8. Дальше для проверки можно запустить тестовые примеры:

-16

10. Так как тестовые примеры занимают много памяти, то лучше взять из них только то, что вам нужно, а остальное удалить.

На этом подключение библиотеки заканчивается. Остается только использовать процедуры и функции для вывода нужных вам изображений на экран.

Подключение ножек

С названием ножек на модулях дисплеев есть некоторая путаница.

SCK может называться D0, SCL, CLK.

SDA может называться D1, MOSI.

RES может называться RST, RESET

DC может называться A0

Конкретно в моих примерах при подключении по I2C ножки соединяются так:

G микроконтроллера к GND дисплея

3.3 микроконтроллера к VCC дисплея

B6 микроконтроллера к SCL дисплея

B7 микроконтроллера к SDA дисплея

При подключении по SPI:

G микроконтроллера к GND дисплея

3.3 микроконтроллера к VCC дисплея

A5 микроконтроллера к D0 дисплея

A7 микроконтроллера к D1 дисплея

A1 микроконтроллера к CS дисплея

A2 микроконтроллера к DC дисплея

A3 микроконтроллера к RES дисплея

Где купить модули и дисплеи

Дисплеи проверял одноцветные, работающие по I2C и SPI (купить на АлиЭкспресс, купить на RoboShop 1, 2)

Работу библиотек я проверял на микроконтроллерах STM32F103C8T6, STM32F103C6T6 и STM32F401CEU6, но должно бы работать и на других сериях (купить на АлиЭкспресс, купить на RoboShop 1, 2)