LPTIM (low-power timer)
Обычные таймеры STM32 останавливаются вместе с тактированием шин в режиме Stop. Чтобы отсчитывать время, считать импульсы и будить микроконтроллер в глубоком сне, у семейств L0, L4, G0, F7 и H7 есть отдельный таймер малого потребления — LPTIM.
Обновлено Редакция GAW
LPTIM (low-power timer) — таймер малого потребления в микроконтроллерах STM32. По RM0377 это 16-битный таймер, который благодаря разным источникам такта работает во всех режимах питания, кроме Standby, может считать вообще без внутреннего генератора и будить систему из сна. Основное применение — таймауты и счёт импульсов в режиме Stop при минимальном потреблении.
Возможности (RM0377, разд. 19.2)
- 16-битный счётчик вверх, 16-битные регистры автоперезагрузки ARR и сравнения;
- 3-битный предделитель: 1, 2, 4, 8, 16, 32, 64, 128;
- такт — внутренний (у STM32L0 это HSI16, LSE, LSI или APB) или внешний вход LPTIM, работающий без генератора;
- непрерывный и однократный режимы, программный или аппаратный запуск;
- цифровой фильтр помех на входах;
- выход — импульс или ШИМ с настраиваемой полярностью;
- режим энкодера.
Где он есть
У STM32L0 — LPTIM1, у STM32H743 — пять, LPTIM1–LPTIM5 (CMSIS). В STM32H7 выходы LPTIM2 и LPTIM3 служат входами запуска мультиплексора DMAMUX2 домена D3, так что таймер может запускать передачи BDMA во сне (RM0433, табл. 129). У STM32L1 блока LPTIM нет. Регистры — на страницах LPTIM STM32G0 и LPTIM STM32L4.
Типичные применения
- Счётчик импульсов счётчика воды, газа или электроэнергии, пока ядро спит.
- Таймаут с пробуждением из Stop: такт от LSE 32,768 кГц (генераторы LSE и LSI), прерывание по совпадению с ARR.
- ШИМ с низкой частотой во сне — например, для индикации.
Как устроены обычные таймеры STM32 и чем от них отличается LPTIM — в статье «Таймеры STM32».
Частые вопросы
Чем LPTIM отличается от обычного таймера TIM?
LPTIM рассчитан на работу во сне: его можно тактировать от LSE 32,768 кГц, LSI или прямо от внешнего входа, и он продолжает считать в режиме Stop, когда тактирование шин выключено. Возможностей у него меньше: один 16-битный счётчик вверх, один регистр сравнения, предделитель до 128. Зато он может разбудить микроконтроллер по совпадению или переполнению.
Как считать импульсы в режиме Stop?
Подать их на внешний вход LPTIM и выбрать его источником такта. По RM0377 LPTIM работает вообще без внутреннего генератора и тогда служит счётчиком импульсов. Прерывание по совпадению с ARR разбудит микроконтроллер, например, после заданного числа импульсов счётчика воды или газа.
Работает ли LPTIM в режиме Standby?
Нет: по RM0377 LPTIM работает во всех режимах питания, кроме Standby. Для пробуждения из Standby по времени используют RTC: по RM0377 он может тактироваться от LSI или LSE и будить микроконтроллер из Stop и Standby.
Источники
- STMicroelectronics. RM0377: Ultra-low-power STM32L0x1 advanced Arm-based 32-bit MCUs. Reference manual, Rev 10 — разд. 19.1: LPTIM — 16-битный таймер с минимальным потреблением; благодаря разным источникам такта работает во всех режимах питания, кроме Standby; может работать вообще без внутреннего такта — как счётчик импульсов; может будить систему из режимов малого потребления — для функций таймаута; разд. 19.2: 16-битный счётчик вверх, 3-битный предделитель 1, 2, 4, 8, 16, 32, 64, 128, внутренний такт (по RCC) или внешний через вход LPTIM — без работающего генератора, 16-битные ARR и регистр сравнения, непрерывный и однократный режимы, программный или аппаратный запуск, цифровой фильтр помех, выход — импульс или ШИМ, настраиваемая полярность, режим энкодера; разд. 7.2 — такт LPTIM от HSI16, LSE, LSI или APB
- STMicroelectronics. CMSIS device headers stm32h743xx.h (cmsis-device-h7 v1.10.7) и stm32l073xx.h (cmsis-device-l0 v1.9.4), GitHub, Apache-2.0 — у STM32H743 — LPTIM1 … LPTIM5, у STM32L073 — LPTIM1; в RM0038 (STM32L1) главы LPTIM нет
- STMicroelectronics. RM0433: STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm-based 32-bit MCUs. Reference manual, Rev 9 — гл. 43 Low-power timer (LPTIM); табл. 129 — выходы LPTIM2 и LPTIM3 служат входами запуска DMAMUX2 домена D3
Нашли ошибку?
Смотрите также
- Таймеры STM32Тактирование, PSC/ARR, ШИМ, мёртвое время, захват, энкодер, OPM, синхронизация
- STM32L0Cortex-M0+, до 32 МГц, малое потребление: L010, L0x1, L0x2 с USB, L0x3 с ЖКИ — линейки и распиновки
- STM32H7Cortex-M7 от 280 до 600 МГц, двухъядерные H745/H747 — линейки, память, загрузка и распиновки
- BDMA (basic DMA)8-канальный DMA домена D3 STM32H7 для SRAM4 и периферии D3
- Режим StopРежим низкого потребления STM32: такты остановлены, ОЗУ и регистры сохранены
- HSE, HSI, LSE и LSIЧетыре тактовых генератора STM32: какой для чего
- Режим энкодера таймераАппаратный счёт сигналов A и B инкрементального энкодера