Перейти к содержанию

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.

Источники

  1. 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
  2. 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 нет
  3. 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

Нашли ошибку?