Режимы LPM у MSP430
MSP430 построен вокруг сна: ядро большую часть времени выключено, а будят его прерывания. Основных режимов сна пять, LPM0–LPM4, и выбирают их не регистром управления питанием, а четырьмя битами прямо в регистре состояния ядра; у MSP430 с FRAM добавляются «глубокие» LPMx.5.
Обновлено Редакция GAW
LPM (low-power mode) — режимы пониженного потребления микроконтроллеров MSP430. Их особенность в том, что режим задают четыре бита прямо в регистре состояния ядра SR: CPUOFF, OSCOFF, SCG0 и SCG1. Режим включается сразу после записи битов, порты и ОЗУ при этом не меняются, а разбудить ядро может любое разрешённое прерывание (SLAU144K, разд. 2.3). Поскольку SR сохраняется в стеке при входе в обработчик, после RETI микроконтроллер возвращается в тот режим сна, из которого его разбудили.
Режимы LPM0–LPM4
| Режим | Что выключено | Ток MSP430F21x1, 1 МГц, 3 В | Ток MSP430FR6989, 25 °C |
|---|---|---|---|
| Активный | ничего | 300 мкА | 103 мкА/МГц |
| LPM0 | CPU, MCLK | 55 мкА | 75 мкА при 1 МГц |
| LPM1 | ещё DCO, если он не тактирует SMCLK | — | 40 мкА при 1 МГц |
| LPM2 | CPU, MCLK, SMCLK, DCO | 17 мкА | 0,9 мкА |
| LPM3 | то же и генератор постоянного тока для DCO; работает только ACLK | 0,9 мкА | 0,4 мкА |
| LPM4 | CPU и все тактовые сигналы | 0,1 мкА | 0,3 мкА |
Состав режимов — по табл. 2-2 SLAU144K, токи MSP430F21x1 — по рис. 2-8 там же (типичные значения), токи MSP430FR6989 — по табл. 6-1 SLAS789D. Числа двух семейств сравнивать напрямую нельзя: это разные технологии, а у FR-серии ток активного режима указан на мегагерц.
Главный режим для приборов на батарейке — LPM3. В нём работает только ACLK от часового кварца 32 кГц, на нём идут таймеры и часы, а ядро тактируется от DCO, который просыпается за 1 мкс. TI оценивает ток в LPM3 с часами и всеми прерываниями меньше чем в 2 мкА (SLAU144K, разд. 2.4). Как устроены тактовые сигналы MCLK, SMCLK и ACLK, разобрано в статье «Тактовая система MSP430».
Вход и выход
BIS #GIE+CPUOFF+SCG1+SCG0,SR ; enter LPM3
...
; in the interrupt service routine:
BIC #CPUOFF+SCG1+SCG0,0(SP) ; leave LPM3 on RETI
RETI
По разд. 2.3.1 SLAU144K. При входе в обработчик аппаратура кладёт PC и SR в стек и сбрасывает биты CPUOFF, SCG1 и OSCOFF, так что сам обработчик работает с тактовой частотой. Если он не трогает сохранённый SR, RETI возвращает прежний режим сна; если сбрасывает биты в копии на стеке, основная программа продолжается после команды входа в сон.
LPM3.5 и LPM4.5
У MSP430 с FRAM есть ещё два режима, LPMx.5. Для входа в них кроме битов SR нужно выставить PMMREGOFF = 1 в модуле управления питанием (условия измерения LPMx.5 в SLAS789D: PMMREGOFF = 1, CPUOFF = 1, SCG0 = 1, SCG1 = 1, OSCOFF = 1). В них выключено питание самого ядра: в LPM3.5 работают только часы реального времени, LPM4.5 — почти полное отключение (SLAS789D, табл. 6-1). Ток MSP430FR6989 — 0,35 мкА в LPM3.5 и 0,02 мкА в LPM4.5 без супервизора питания SVS. Цена — время и способ выхода: 250 мкс, а для LPM4.5 без SVS — 1 мс, и пробуждение проходит как сброс BOR с отдельной причиной «LPMx.5 wakeup» в регистре SYSRSTIV. Состояние процессора и периферии не сохраняется, программа стартует сначала и восстанавливает данные сама — например, из FRAM. Сторожевой таймер в режиме watchdog не даёт войти в LPMx.5, потому что иначе он бы отключился. О семействах MSP430 с FRAM — в статье «MSP430 с FRAM», общие принципы сна микроконтроллеров — в термине «Режимы сна».
Частые вопросы
Какой режим LPM выбрать для устройства на батарейке с часами?
Обычно LPM3: в нём работает только ACLK от часового кварца 32 кГц, и TI оценивает ток меньше чем в 2 мкА с часами и всеми разрешёнными прерываниями (SLAU144K, разд. 2.4). Ядро тактируется от DCO, который просыпается за 1 мкс, поэтому короткая работа по прерыванию почти не добавляет потребления.
Почему после выхода из LPM4.5 программа начинается сначала?
В режимах LPM3.5 и LPM4.5 у MSP430FR выключено питание ядра, и регистры процессора и периферии не сохраняются. Пробуждение проходит как сброс BOR с отдельным кодом причины LPMx.5 wakeup в регистре SYSRSTIV (SLAS789D). Программа проверяет этот код и восстанавливает состояние из FRAM или резервных регистров.
Как выйти из LPM в основную программу, а не обратно в сон?
Биты режима лежат в регистре SR, который сохраняется в стеке при входе в прерывание. Если обработчик ничего не меняет, команда RETI возвращает тот же режим сна. Чтобы основная программа продолжила работу, обработчик сбрасывает биты в сохранённой копии: на ассемблере BIC #CPUOFF,0(SP) для LPM0 (SLAU144K, разд. 2.3.1), в C — встроенной функцией компилятора для изменения SR при выходе.
Источники
- Texas Instruments. MSP430F2xx, MSP430G2xx Family User's Guide (SLAU144K, December 2004, revised August 2022) — разд. 2.3: режимы LPM0–LPM4 задают биты CPUOFF, OSCOFF, SCG0 и SCG1 в регистре состояния SR; режим сохраняется в стеке при входе в прерывание и восстанавливается при возврате, если сохранённый SR не изменён; режим включается сразу после записи битов, порты и ОЗУ не меняются, разбудить может любое разрешённое прерывание; рис. 2-8: типичный ток MSP430F21x1 при 1 МГц — активный 300 / 200 мкА, LPM0 55 / 32 мкА, LPM2 17 / 11 мкА, LPM3 0,9 / 0,7 мкА, LPM4 0,1 / 0,1 мкА при 3 / 2,2 В; табл. 2-2: LPM0 — выключены CPU и MCLK; LPM1 — ещё DCO и генератор постоянного тока, если DCO не тактирует SMCLK; LPM2 — выключены CPU, MCLK, SMCLK и DCO, генератор постоянного тока работает; LPM3 — то же и выключен генератор постоянного тока, ACLK работает; LPM4 — выключены CPU и все тактовые сигналы; разд. 2.3.1: при входе в обработчик PC и SR в стеке, биты CPUOFF, SCG1 и OSCOFF сбрасываются; выход из режима при RETI — изменением SR в стеке (BIC #CPUOFF,0(SP)); примеры BIS #GIE+CPUOFF,SR и BIS #GIE+CPUOFF+SCG1+SCG0,SR; разд. 2.4: ток LPM3 меньше 2 мкА с часами реального времени и всеми прерываниями, ACLK от часового кварца 32 кГц, DCO просыпается за 1 мкс
- Texas Instruments. MSP430FR698x(1), MSP430FR598x(1) Mixed-Signal Microcontrollers (SLAS789D, June 2014, revised August 2018) — разд. 6.3, табл. 6-1: один активный режим и семь программно выбираемых режимов пониженного потребления; LPM3.5 и LPM4.5 отключают питание ядра; типичный ток при 25 °C: AM 103 мкА/МГц (65 мкА/МГц без FRAM), LPM0 75 мкА при 1 МГц, LPM1 40 мкА при 1 МГц, LPM2 0,9 мкА, LPM3 0,4 мкА, LPM4 0,3 мкА, LPM3.5 0,35 мкА, LPM4.5 0,2 мкА с SVS и 0,02 мкА без SVS; время пробуждения: LPM0 — мгновенно, LPM1 и LPM2 — 6 мкс, LPM3 и LPM4 — 7 мкс, LPM3.5 и LPM4.5 — 250 мкс, LPM4.5 без SVS — 1000 мкс; в LPMx.5 CPU и периферия — reset; разд. 6.11.7, таблица SYSRSTIV: LPMx.5 wakeup (BOR) — 08h; разд. 6.11.6: в режиме сторожевого таймера WDT не даёт войти в LPM3.5 и LPM4.5; разд. 5.9: условия LPMx.5 — PMMREGOFF = 1 вместе с CPUOFF, SCG0, SCG1 и OSCOFF
Нашли ошибку?
Смотрите также
- Архитектура MSP430Регистры, память, режимы LPM, тактирование, прерывания, WDT, порты
- Тактирование MSP430DCO, FLL, кварцы и делители: Basic Clock+ у G2xx, CS у FR2xx и FR5xx
- MSP430 с FRAMFR2xx, FR4xx, FR5xx, FR6xx: память, частота, токи, режимы LPMx.5, выбор
- Режимы снаSleep mode: Idle, Power-down, пробуждение и ток
- Часовой кварц 32 768 ГцКамертонный кварц для RTC: 2¹⁵ Гц, малая нагрузка