Arduino: библиотеки для работы с RTC DS1307,DS3231

разделы: Arduino, STM32duino, RTC, дата: 18 сентября 2017г.

В завершении прошлой статьи я приводил ссылку для проверки I2C модуля RTC DS3231. Для этого не надо устанавливать никакие библиотеки, достаточно скопировать текст программы в Arduino IDE и кликнуть на загрузку скетча в микроконтроллер. Это одинаково работает как в Arduino IDE, так и в MSP430 Energia и STM32duino.

Однако, больше чем для проверки этот пример не годится, и рано или поздно перед каждым встает вопрос написания своей библиотеки для полноценной работы с RTC. Отчет времени, с календарем или без, довольно распространенная штука, и этот код вы скорее всего будете тащить из проекта в проект. Т.е. это вещь которую проще один раз хорошо сделать, что бы потом к этому не возвращаться.

Сам я уже прошел по этому пути, но т.к. написанный код уже не умещался под спойлерами, поэтому пришлось написать полноценную Arduino - библиотеку. В заключение будет несколько примеров с использованием этой библиотеки, с тем, как на мой взгляд нужно правильно работать с DS1307/DS3231.

Но прежде чем "городить огород", предлагаю взглянуть на готовые решения, одобренные "патриархами" arduino.cc, а именно: библиотеки Time, DS1307RTC, а также DS3232RTC которая работает совместно с библиотекой Time.

    Для начала решим, что нам нужно от RTC типа DS1307/DS3231:
  • Автономный отчет времени, т.е. когда микроконтроллер при старте получает текущее время, а затем он уже считает время самостоятельно и не забивает I2C шину трафиком с RTC.
  • Отчет времени по SQW-выводу, когда RTC тактирует счетчик часов микроконтроллера через внешнее прерывание, и микроконтроллер самостоятельно рассчитывает календарные данные и текущее время.
  • Поддержка будильников.
  • Поддержка внесения поправок к ходу часов.
  • Периодическая синхронизация.

Вроде бы немного, и вроде бы несложно.

Весь код я буду тестировать на Arduino Nano, MSP430 Launchpad - Energia и на STM32duino - Blue Pill.

Общая концепция библиотек для работы со временем такая. Имеется базовая библиотека TIME которая ведет через функцию millis() расчет времени при запросе такого через функции библиотеки hour(), minute(), second() и т.д. Библиотека абстрагируется от аппаратной части того или иного хронометра. Она рассчитана на ведение календаря и отчет времени средствами самого микроконтроллера, без подключения RTC. Соответственно библиотеки DS3232RTC и DS1307RTC добавляют функции синхронизации микроконтроллера с RTC.

Читать дальше

STM32F103C8T6 aka Blue Pill + STM32duino + IAR ARM: быстрый старт

разделы: STM32, STM32duino, дата: 08 сентября 2017г.

Отладочная плата на микроконтроллере stm32f103c8t6, является одной из самых популярных в любительской среде "электронщиков". Это одна из самых удачных плат в соотношении "цена/функционал", а сам stm32f103xxxx, который выпускается уже 10 лет, является ветераном и первопроходцем микроконтроллеров на ядрах ARM Cortex M3.

    Для быстрого знакомства с платой я предлагаю пройтись по следующим пунктам:
  • Краткий обзор платы;
  • Исправление аппаратного бага с помощью термофена и паяльника;
  • Прошивка загрузчика STM32duino;
  • "Подъем" виртуального COM порта на USB-модуле микроконтроллера stm32f103c8t6 с помощью STM32Cube MX и IAR ARM. Подключение микроконтроллера к планшету на Android.
  • Подключение и написание программы опроса I2C модуля RTC DS3231 с помощью STM32duino.

Вроде не много.

    Краткое описание

  • В отличии от Maple Mini, данная плата имеет штыревой разъем для подключения китайского клона ST-Link. Что на мой взгляд является большим плюсом, т.к. на проверку, загрузчик Leafmaple/STM32duino из-за постоянного переключения между DFU-загрузчиком и виртуальным COM-портом, оказался довольно проблемным.
  • Плата имеет на борту два кварца: на 8 MHz для тактирования HSE и на 32768 Hz для LSE. Для сравнения, на Maple Mini установлен только кварц на 8 MHz.
  • Сам микроконтроллер stm32f103c8t6, несмотря на то что по документации поставляется с флешпамятью на 64KБайта, фактически поставляется с флеш-памятью на 128КБайт(!) Хотя, гарантии на это никто не дает конечно.
  • Также имеется два джампика для прошивки микроконтроллера через USB-TTL конвертер, кнопка сброса Reset, два светодиода: красный для индикации питания и зеленый подключенный к выводу PC13. Причем загорается он при логическом нуле.
  • Цифровые выводы имеют маркировку в соответствии с даташитом, за тем исключением, что из их обозначения отброшена литера "P".
  • Довершает "обвес" микро-USB разъем, который мы сегодня попытаемся задействовать.
  • Сфера применения микроконтроллера, на мой взгляд- это коммутация по USB-интерфейсу с традиционными компьютерами, одноплатными компьютерами, устройствам на Android которые возможно использовать как дисплеи(вторая жизнь для устаревших телефонов и планшетов) и т.д. Также думаю, что будет неплохая связка микроконтроллеров STM32 с SPI-дисплеями.

Полезная информация о плате собрана на страничке проекта STM32duino.

Для начала взглянем на раcпиновку платы:

Читать дальше

STM32duino - наследник проекта LeafMaple

разделы: STM32, Arduino, STM32duino, дата: 6 февраля 2017г.

Как я уже упоминал, проект LeafMaple после нескольких лет простоя свернулся, а его поддержку и развитие передали на сайт http://stm32duino.com/ который выполнен в виде форума. Впрочем, имеется там и Вики http://wiki.stm32duino.com.

Первым преимуществом STM32duino является то, что он поддерживает не только платы LeafMaple и их клоны, STM32duino можно установить на целый набор плат на stm32f103 а так же на stm32f4. Списки поддерживаемых плат, а также уровень их поддержки можно посмотреть в Вики.

Второй "плюс" проекта, то что там сделали таки драйвера для систем Windows 7 и выше. Т.е. то, что не могли сделать на leafmaple.com несколько лет.

Как следует из названия, в качестве IDE проект использует Arduino IDE, что упрощает жизнь, т.к. он поддерживает внешние IDE.

1) Установка загрузчика

Первым делом нужно будет прошить загрузчик. Напомню, что я работаю 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

Читать дальше

STM32F103 + SPL: Программирование, прошивка, отладка микроконтроллеров STM32 в средах Windows/IAR и Linux/Eclipse используя программатор ST-Link v2

разделы: STM32, STM32duino, среда разработки, дата: 14 октября 2016г.

Архитектуру STM32 можно мысленно разделить на две части. Первая часть, это ядро Cortex-M3, которое спроектировали в ARM и которое примерно одинаковое для всех. "Примерно", потому что, содержит опциональные модули которые могут быть у одного производителя и отсутствовать у другого. Вторая часть, это периферия знакомая по STM8, с тем отличием, что был добавлен USB2.0 интерфейс, хотя точнее было бы сказать, что этот интерфейс был "откручен" от STM8(такая у STM политика: хочешь аппаратный USB, используй STM32).

    Справочники и руководства которые нужны для работы c STM32F103x8/STM32F103xB:
  1. Справочное руководство по 32-битным микроконтроллерам серий STM32F10x Reference Manual. STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM®-based 32-bit MCUs или RM 0008
  2. Руководство на чипы STM32F103x8/STM32F103xB STM32F103x8 STM32F103xB Medium-density performance line ARM®-based 32-bit MCU with 64 or 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces
  3. Ядро Cortex - МЗ компании ARM. Полное руководство. Книга не обязательная, но на мой взгляд очень полезная.

Читать дальше

Leaf Maple: введение в STM32

разделы: STM32, STM32duino, дата: 17 сентября 2015г.

Проект Leaf Maple призван стать аналогом Arduino для микроконтроллеров STM32. Пока нельзя сказать, что проект "выстрелил", но на мой взгляд достоин внимания. Заказать китайский клон Maple Mini можно всего за 4USD.

 

    На борту чип STM32F103CBT6, содержащий множество интересных штук:
  1. ядро ARM CortexM3;
  2. 32-разрядность;
  3. частота 72 МГц;
  4. 128 кБайт встроенной флеш памяти;
  5. 20 кБайт оперативки;
  6. 12-битный АЦП;
  7. семь DMA каналов;
  8. аппаратные USB2.0, CAN, USART, I2C, SPI интерфейсы.

Полную спецификацию можно посмотреть на официальном сайте фирмы STMicroelectronics: STM32F103x8 STM32F103xB datasheet

Читать дальше