Драйвер i2c для oled ssd1306
Микроконтроллер 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
Драйвер i2c oled пытался использовать несколько раз. Простые реализации драйвера работали ненадёжно.
Требования к драйверу i2c:
- выполнения кода без блокирования основой программы;
- в фоне необходимо выполнять другие задачи;
- выявление ошибок на линиях scl,sda;
- воcстановление обмена информации после ошибок i2c.
Конфигурация stm8s
Компания ST- рекомендует использовать конигуратор Stm8CubeMx [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.
- 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)