Драйвер i2c для oled ssd1306

N|Радиомодуль ESP14 с stm8s и esp8266.

Микроконтроллер stm8s был создан для сложных условий эксплуатации. Я бы не стал его использовать для создания проектов. Однако в радомодуле ESP14 есть этот базовый микронконтроллер stm8s003 с 8 Кбайт памяти flash, 1 Кбайт ram, 128 байт eeprom.

Из презентаций, документации, форумов выясноил, что серия stm8s/a/f были разработаны для промышленных и автомобильных применений. "На борту" имеется несколько охранных таймеров. Имеется автоматическое переключение на внутренний hsi генератор в случаях сбоя внешненего кварцевого резонатора. Имеется уникальная аппаратная реализация провреки состояния внутренних регистов. Каждый регистор имеет "теневой", в который запсаны инверстные биты. При сбоях микроконтроллер формирует внутренний сброс и восстанавливает алгоритм после сбоя. На рынке стоимость микроконтроллеров stm8s очень низкая. Можно создавать сенсоры, датчики с низкой себестоимостью. Микроконтроллер включает в себя периферию: UART,IrDA,LIN,SPI,I2C,ADC-10 bit,TIM,PWM,GPIO.

Интерфейс i2c

N|Сигналы линий scl,sda.

Драйвер i2c oled пытался использовать несколько раз. Простые реализции не работали надёжно.

Требования к драйверу i2c:

  • выполнения кода без блокирования;
  • в фоне необходимо выполнять другие задачи;
  • выявление ошибок на линиях scl,sda;
  • воcстановления обмена информации после ошибок.

Конфигурация stm8s

N|Конфигурация stm8s.

Компания ST- рекомендует использовать конигуратор Stm8CubeMx [1] для настройки тактирования, пинов микроконтроллера. Удобный визуальный редактор. На выходе получаются файлы документации и очень удобно иметь под рукой справочную информацию по проекту.

  1. STM8Cube configuration and report tool. //[электронный ресурс] .- (http://www.st.com/en/development-tools/stm8cubemx.html)

Рекомендации производителя. Примеры i2c для stm8s.

По сслыки можно скачать описание как правильно использовать драйвер i2c для stm8s. Производетель в документе "STM8S003/103/903 Errata sheet" описал проблемы работы i2c и возможные варианта обхода ошибок.

В AN3281 [2] имеется каталоги с примерами проектов использования i2c с учётом ошибок микроконтроллера:

  • STM8S_I2C_Master_interrupt (обработка передачи и приёма данных по шине i2c в прерывании i2c_irq)
  • STM8S_I2C_Master_poll (обработка передачи и приёма с использованием таймаутов таймера)
  • STM8S_I2C_Slave (пример использования микроконтроллера как slave-устройство)

Все проекты собрал и проверил. Успешно заработал проект STM8S_I2C_Master_poll!

Удалось научиться восстанавливать управление oled ssd1306 после отсоединения питания VDD, сигнала SCL, SDA.

  1. STM8 optimized I2C examples (AN3281) //[электронный ресурс] .- (http:// www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm8-embedded-software/stsw-stm8004.html)

N|Запуск oled ssd1306 на микроконтроллере .


Комментарии

comments powered by Disqus