STM32
Модуль часов реального времени STM32F2xx
Одной из самых полезных функций, включенных в состав микроконтроллеров STM32 стали часы реального времени (RTC). Данный модуль обладает всеми классическими возможностями подобных часов и может иметь отдельное автономное питание от батареи. Такой подход позволяет использовать область памяти часов для резервного хранения данных, а также реализовывать различные схемы энергосбережения.
В процессорах серии STM32F2xx часы реального времени существенно отличаются от предыдущих моделей. Появились дополнительные функции и настройки работы. Отсутствуют регистры долей секунд и режим формирования сигнала 1Гц. Следует отметить, что последние функции реализованы в процессорах STM32F4xx, модуль RTC в которых схож с вариантом F2xx.
Основу модуля часов реального времени составляет двоично-десятичный таймер/счетчик. Результат счета отображается в двух 32-разрядных регистрах. Первый из них RTC_TR содержит информацию о времени, второй – RTC_DR представляет собой календарь, включающий год, месяц, неделю и день. Все данные представлены в BCD формате, что позволяет их сразу же использовать для отображения на различных индикаторах. Модуль календаря поддерживает автоматическое определение високосных лет, а также количества дней в текущем месяце. Кроме этого доступны функции перевода на зимнее и летнее время, вызываемые программно.
В процессорах STM32 предусмотрено три источника тактового сигнала для часов. LSI представляет собой внутренний RC-генератор на 32 кГц, HSE_RTC позволяет использовать тактовую частоту от основного внешнего кварцевого резонатора. Но самым эффективным можно считать вариант LSE, который есть, не что иное, как внешний генератор часовой частоты 32768Гц. Выбор нужного источника частоты производится в регистре RCC_BDCR. Входная частота RTCCLK поступает на два последовательных предделителя, задачей которых становится формирование сигнала ck_spre частотой 1Гц. Для точной настройки хода часов, в модуле RTC предусмотрена возможность калибровки частоты счетчика.
Среди функций модуля RTC следует отметить два отдельных регистра событий (ALARM_x), с помощью которых можно реализовать будильники, таймеры и т.п. Формат регистров событий аналогичен счетным регистрам, что несколько упрощает их программирование. Еще одним событием, формируемым RTC, может стать сигнал выхода из спящего режима (WakeUP). Данный сигнал формируется периодически, что позволяет легко реализовывать различные системы, критичные к энергопотреблению. Счетчик выхода из спящего режима работает независимо от часов/календаря. Максимальное значение периода сна составляет примерно 48 суток. Все описанные внутренние события можно подать на вывод RTC_AF1 микроконтроллера, для использования совместно с периферийными элементами.
Модуль часов расположен в отдельной области памяти, имеющей возможность внешнего питания от батареи. Регистры RTC оснащены дополнительной защитой от записи, что обеспечивает невозможность случайного повреждения информации в них. Кроме часовых регистров в модуле выполнены 12 регистров резервирования пользовательских данных с разрядностью 32. Эти регистры не обнуляются по сигналу «Сброс» при наличии внешнего источника напряжения, что позволяет хранить в них важную информацию. С резервными регистрами связана функция обнаружения несанкционированного доступа к устройству(Tamper). Она подразумевает наличие внешнего контакта, подключенного к линии RTC_AF1 или RTC_AF2. Срабатывание этого контакта должно сигнализировать о вскрытии корпуса устройства, и одновременно к сбросу информации в регистрах резервного хранения.
Еще одной полезной функцией может оказаться функция Time Stamp, предназначенная для определения точного времени наступления внешнего события. Для ее активации также требуется наличие внешнего сигнала, по фронту которого, значения счетных регистров сохраняются в регистрах RTC_TSTR и RTC_TSDR.
Как и другие модули STM32, часы реального времени могут формировать сигналы прерывания, но для их использования дополнительно потребуется настройка модуля EXTI.
Подробную информацию о работе с модулем RTC можно найти в фирменной документации RM0033 Reference manual. STM32F205xx, STM32F207xx, STM32F215xx and STM32F217xx advanced ARM-based 32-bit MCUs, а также в AN3371 Application note. Using the hardware real-time clock (RTC) in STM32 F0, F2, F3, F4 and L1 series of MCUs. Некоторые моменты, касающиеся работы с часами будут освящены в следующих статьях.
Еще по теме:
Регистры часов реального времени в микроконтроллерах STM32F2xx