OLED SSD1306 (SSD1309) STM32F1 в качестве SPI видеокарты для STM32F0

Пример приема и индикации чисел Фибоначчи, посчитанных на stm32f0 (Slave). Этюд, в представленном виде, не имеет отношения к драйверу двигателя.

Аппаратный SPI:    STM32F1 — master, STM32F0 — slave.  Сам OLED SSD1309 подключен в проекте к STM32F103C8 по интерфейсу I2C. Работает при одновременно включенных мастере и слейве. В режиме отладки не забываем, что другой камень продолжает работать!

 Архив проекта STM32F1 — master (IAR.Embedded.Workbench.for.ARM.v7.70.1.11486)

 Архив проекта STM32F0 — slave (IAR.Embedded.Workbench.for.ARM.v7.70.1.11486)

При создании драйвера асинхронного трехфазного двигателя переменного тока на базе микроконтроллера stm32f051x8 возникла идея передачи «несвойственных функций» на другой микроконтроллер. В нашем случае на STM32F103C8.

В процессе разработки я нашел достаточно много материала, в котором описано, как связать по SPI два микроконтроллера. Однако, в большинстве случаев, эти микроконтроллеры только этим и занимались. Один передавал, другой ждал, когда ему передадут. В предложенном проекте STM32F0 — slave целиком загружен для решения собственной задачи и отвлекается только на внешнее прерывание STM32F1 — master. После установления связи, обмен осуществляется на аппаратном уровне, не мешая STM32F0. Недостатком работы было отмечено, что STM32F1 такой гибкостью в проекте не обладает.

В общем случае интерфейсу SPI не принципиальна платформа изготовителя. Это дает нам возможность применять готовые шильды вместе с программами на открытой платформе и своим программным обеспечением.

Конструктивно решение может быть выполнено в виде отдельного устройства, приобретаемого потребителем дополнительно и существенно расширяющего функционал, в моем случае, драйвера двигателя. (Индикация, настройки, внешнее управление по интерфейсам недоступным stm32f0).

В приведенном примере использован не дорогой шильд с описанием с сайта https://vcc-gnd.world.taobao.com (stm32f103c8t6) для управления (индикацией) OLED дисплеем http://www.solomon-systech.com с контроллером SSD1309.
В сети удалось найти готовый проект совместного использования этих устройств и применить его в качестве библиотеки. Проект Руслана Надыршина написан для OLED SSD1306. Как выяснилось, прекрасно работает с SSD1309. Кроме того в тексте проекта задается величина буфера данных дисплея. Что наводит на мысль его использования с другими драйверами.

// This is Open source software. You can place this code on your site, but don’t forget a link to my YouTube-channel: https://www.youtube.com/channel/UChButpZaL5kUUl_zTyIDFkQ
// Это программное обеспечение распространяется свободно. Вы можете размещать его на вашем сайте, но не забудьте указать ссылку на мой YouTube-канал
// «Электроника в объектике» https://www.youtube.com/channel/UChButpZaL5kUUl_zTyIDFkQ
// Автор: Надыршин Руслан / Nadyrshin Ruslan

Настройка аппаратного SPI сделана на примере сайта http://chipspace.ru/stm32-spi/
При использовании материалов http://radiokot.ru/forum/viewtopic.php?t=119263
Дополнительную шину внешнего прерывания можно убрать http://radiokot.ru/forum/viewtopic.php?f=59&t=109456

Ваши комментарии к статье:

Wordpress

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

ВКонтакте
Google+