В завершении прошлой статьи я приводил ссылку для проверки I2C модуля RTC DS3231. Для этого не надо устанавливать никакие библиотеки, достаточно скопировать текст программы в Arduino IDE и кликнуть на загрузку скетча в микроконтроллер. Это одинаково работает как в Arduino IDE, так и в MSP430 Energia и STM32duino.
Однако, больше чем для проверки этот пример не годится, и рано или поздно перед каждым встает вопрос написания своей библиотеки для полноценной работы с RTC. Отчет времени, с календарем или без, довольно распространенная штука, и этот код вы скорее всего будете тащить из проекта в проект. Т.е. это вещь которую проще один раз хорошо сделать, что бы потом к этому не возвращаться.
Сам я уже прошел по этому пути, но т.к. написанный код уже не умещался под спойлерами, поэтому пришлось написать полноценную Arduino - библиотеку. В заключение будет несколько примеров с использованием этой библиотеки, с тем, как на мой взгляд нужно правильно работать с DS1307/DS3231.
Но прежде чем "городить огород", предлагаю взглянуть на готовые решения, одобренные "патриархами" arduino.cc, а именно: библиотеки Time, DS1307RTC, а также DS3232RTC которая работает совместно с библиотекой Time.
Вроде бы немного, и вроде бы несложно.
Весь код я буду тестировать на Arduino Nano, MSP430 Launchpad - Energia и на STM32duino - Blue Pill.
Общая концепция библиотек для работы со временем такая. Имеется базовая библиотека TIME которая ведет через функцию millis() расчет времени при запросе такого через функции библиотеки hour(), minute(), second() и т.д. Библиотека абстрагируется от аппаратной части того или иного хронометра. Она рассчитана на ведение календаря и отчет времени средствами самого микроконтроллера, без подключения RTC. Соответственно библиотеки DS3232RTC и DS1307RTC добавляют функции синхронизации микроконтроллера с RTC.
Отладочная плата на микроконтроллере stm32f103c8t6, является одной из самых популярных в любительской среде "электронщиков". Это одна из самых удачных плат в соотношении "цена/функционал", а сам stm32f103xxxx, который выпускается уже 10 лет, является ветераном и первопроходцем микроконтроллеров на ядрах ARM Cortex M3.
Вроде не много.
Полезная информация о плате собрана на страничке проекта STM32duino.
Для начала взглянем на раcпиновку платы:
Как я уже упоминал, проект LeafMaple после нескольких лет простоя свернулся, а его поддержку и развитие передали на сайт http://stm32duino.com/ который выполнен в виде форума. Впрочем, имеется там и Вики http://wiki.stm32duino.com.
Первым преимуществом STM32duino является то, что он поддерживает не только платы LeafMaple и их клоны, STM32duino можно установить на целый набор плат на stm32f103 а так же на stm32f4. Списки поддерживаемых плат, а также уровень их поддержки можно посмотреть в Вики.
Второй "плюс" проекта, то что там сделали таки драйвера для систем Windows 7 и выше. Т.е. то, что не могли сделать на leafmaple.com несколько лет.
Как следует из названия, в качестве IDE проект использует Arduino IDE, что упрощает жизнь, т.к. он поддерживает внешние IDE.
Первым делом нужно будет прошить загрузчик. Напомню, что я работаю c клоном Maple Mini и в качестве программатора использую опять же клон ST-Link v2. Для тех кто использует Blue Pill и прошивает микроконтроллер через встроенный загрузчик, возможно будет полезна следующая статья: Дешевая STM32 плата + Arduino IDE UPD 15.07.2016.
Загрузчик для своей платы можно скачать здесь: https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/STM32F1/binaries. В случае с Maple Mini это - maple_mini_boot20.bin
Архитектуру STM32 можно мысленно разделить на две части. Первая часть, это ядро Cortex-M3, которое спроектировали в ARM и которое примерно одинаковое для всех. "Примерно", потому что, содержит опциональные модули которые могут быть у одного производителя и отсутствовать у другого. Вторая часть, это периферия знакомая по STM8, с тем отличием, что был добавлен USB2.0 интерфейс, хотя точнее было бы сказать, что этот интерфейс был "откручен" от STM8(такая у STM политика: хочешь аппаратный USB, используй STM32).
Проект Leaf Maple призван стать аналогом Arduino для микроконтроллеров STM32. Пока нельзя сказать, что проект "выстрелил", но на мой взгляд достоин внимания. Заказать китайский клон Maple Mini можно всего за 4USD.
Полную спецификацию можно посмотреть на официальном сайте фирмы STMicroelectronics: STM32F103x8 STM32F103xB datasheet