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

Архитектура MSP430

MSP430 — 16-битные микроконтроллеры TI с фон-неймановской архитектурой и упором на сверхмалое потребление: процессор работает короткими вспышками, а остальное время спит в одном из пяти режимов пониженного потребления. Разбираем устройство ядра, памяти, тактирования и прерываний по руководству семейства 2xx и даташиту MSP430G2553.

Обновлено Редакция GAW

MSP430 — семейство 16-битных микроконтроллеров Texas Instruments со сверхмалым потреблением. По руководству TI SLAU144K ядро — 16-битный RISC-процессор с 27 командами и семью режимами адресации, а процессор, память и периферия связаны общими шинами адреса и данных по фон-неймановской схеме: команды и данные лежат в одном адресном пространстве. Система команд разобрана отдельно — в статье «Система команд MSP430».

Регистры процессора

Шестнадцать 16-битных регистров: R0 — счётчик команд PC, R1 — указатель стека SP, R2 — регистр состояния SR, R3 — генератор констант, R4–R15 — общего назначения. PC и SP всегда чётные: команды занимают 2, 4 или 6 байтов, а стек работает словами.

Бит SRИмяНазначение
0Cперенос
1Zноль
2Nзнак результата
3GIEразрешение маскируемых прерываний
4CPUOFFвыключить процессор
5OSCOFFвыключить генератор LFXT1, если он не тактирует MCLK и SMCLK
6SCG0выключить генератор постоянного тока DCO, если DCO не тактирует MCLK и SMCLK
7SCG1выключить SMCLK
8Vпереполнение

Биты режимов пониженного потребления лежат прямо в SR, поэтому при входе в прерывание режим сохраняется в стеке вместе с регистром состояния.

Карта памяти

Адресное пространство общее для всех областей; код всегда выбирается с чётных адресов. Пример — MSP430G2553 по таблице 8 даташита:

АдресаОбласть
0x0000–0x000Fспециальные регистры SFR: разрешения и флаги прерываний
0x0010–0x00FF8-битная периферия — обращаться байтовыми командами
0x0100–0x01FF16-битная периферия — обращаться словными командами
0x0200–0x03FFОЗУ 512 байтов
0x1000–0x10FFинформационная флеш-память 256 байтов
0xC000–0xFFFFфлеш-память программ 16 КБ
0xFFC0–0xFFFFвекторы прерываний (часть флеш-памяти)

ОЗУ у всех MSP430 серии 2xx начинается с 0x0200, а флеш-память заканчивается на 0xFFFF — начало зависит от объёма. Если по адресу вектора сброса 0xFFFE записано 0xFFFF (флеш-память не запрограммирована), процессор после включения сразу уходит в LPM4.

Режимы работы

Пять режимов пониженного потребления задаются битами SR:

РежимSCG1SCG0OSCOFFCPUOFFЧто выключено
Активный0000ничего
LPM00001процессор и MCLK; SMCLK и ACLK работают
LPM10101процессор, MCLK, DCO, если он не нужен SMCLK
LPM21001процессор, MCLK, SMCLK, DCO; ACLK работает
LPM31101процессор, MCLK, SMCLK, DCO и его генератор постоянного тока; ACLK работает
LPM41111процессор и все тактовые сигналы

Разрешённое прерывание будит процессор из любого режима: при входе в обработчик SR и PC сохраняются в стеке, а биты CPUOFF, SCG1 и OSCOFF сбрасываются. По RETI восстанавливается сохранённый SR — и процессор снова засыпает. Чтобы после прерывания продолжить основную программу, обработчик сбрасывает биты режима в сохранённой копии SR, например BIC #CPUOFF,0(SP).

Токи MSP430G2553 по даташиту при 2,2 В и 25 °C:

РежимТок, типично
Активный, 1 МГц230 мкА
LPM0, 1 МГц56 мкА
LPM222 мкА
LPM3 с часовым кварцем 32768 Гц0,7 мкА
LPM3 с генератором VLO0,5 мкА
LPM40,1 мкА

TI советует строить программу так, чтобы микроконтроллер как можно больше времени проводил в LPM3, а просыпался по прерываниям: DCO запускается примерно за микросекунду — у G2553 по даташиту не дольше 1,5 мкс из LPM3 и LPM4 при 3 В.

Тактирование

Модуль Basic Clock+ серии 2xx имеет до четырёх источников и три выходных сигнала:

ИсточникЧто это
DCOCLKвнутренний генератор с цифровым управлением
LFXT1CLKгенератор для часового кварца 32768 Гц, а у части микросхем — и для кварцев 0,4–16 МГц
XT2CLKвторой кварцевый генератор, есть не у всех микросхем
VLOCLKвнутренний маломощный генератор около 12 кГц; у G2553 по даташиту 4–20 кГц
СигналКто используетИсточники
MCLKпроцессорлюбой из четырёх, делитель 1–8
SMCLKбыстрая перифериялюбой из четырёх, делитель 1–8
ACLKмедленная периферия и часыLFXT1CLK или VLOCLK, делитель 1–8

На MSP430G2553 записаны калибровочные константы DCO для 1, 8, 12 и 16 МГц: их копируют в регистры BCSCTL1 и DCOCTL. Разброс частоты 1 МГц — до ±3 % по температуре или напряжению и до ±6 % во всём диапазоне. Предельная частота процессора зависит от питания: 6 МГц при 1,8 В, 12 МГц при 2,7 В и 16 МГц при 3,3 В. Настройка DCO, кварцев и систем тактирования CS у семейств с FRAM — на странице «Тактирование MSP430».

Прерывания и сброс

Векторы прерываний занимают верхние слова флеш-памяти, и чем выше адрес вектора, тем выше приоритет. У MSP430G2553 самый старший вектор 0xFFFE — сброс: включение питания, вывод RST, сторожевой таймер, нарушение ключа флеш-памяти; ниже по убыванию приоритета — NMI и сбой генератора (0xFFFC), Timer1_A3, компаратор, сторожевой таймер в режиме интервала, Timer0_A3, приём и передача USCI, АЦП, порт P2 и порт P1 (0xFFE4).

После сброса по питанию выводы портов становятся входами, SR обнуляется, сторожевой таймер работает, а в PC загружается адрес из вектора сброса. Программа должна сама установить указатель стека — обычно на верх ОЗУ — и настроить сторожевой таймер.

Сторожевой таймер

После каждого сброса сторожевой таймер WDT+ включён в режиме watchdog с интервалом 32768 тактов DCO — около 32 мс при 1 МГц. Если программа его не обслуживает и не останавливает, микроконтроллер перезагружается. Любая запись в регистр WDTCTL должна быть словной и содержать пароль 05Ah в старшем байте; запись с другим значением сама вызывает сброс. Остановка таймера — первая строка почти любой программы:

WDTCTL = WDTPW | WDTHOLD;  /* stop the watchdog: password 0x5A00 plus the hold bit */

Порты ввода-вывода

Каждым портом управляет набор 8-битных регистров, бит регистра соответствует выводу:

РегистрНазначение
PxINчтение состояния выводов
PxOUTвыходное значение; при включённой подтяжке — её направление
PxDIRнаправление: 1 — выход
PxRENвключение подтягивающего резистора
PxSEL, PxSEL2выбор функции вывода: порт или периферия
PxIE, PxIES, PxIFGразрешение прерывания, выбор фронта, флаг (у портов P1 и P2)

У MSP430G2553 в корпусе DIP-20 — 16 линий ввода-вывода: P1.0–P1.7 и P2.0–P2.5, а выводы 18 и 19 — XOUT и XIN для кварца, которые можно переключить в линии P2.7 и P2.6. Обзор семейств и выбор микросхемы — в разделе «MSP430», о режимах сна других микроконтроллеров — в статье о режимах сна.

Частые вопросы

Чем отличаются режимы LPM0, LPM3 и LPM4?

Тем, какие тактовые сигналы остаются. В LPM0 выключены процессор и MCLK, SMCLK и ACLK работают — периферия на быстром такте продолжает работать. В LPM3 работает только ACLK от часового кварца или генератора VLO — можно просыпаться по таймеру. В LPM4 выключено всё, разбудить микроконтроллер может только внешнее прерывание. У MSP430G2553 при 2,2 В ток в LPM3 с VLO — 0,5 мкА типично.

Почему MSP430 сразу перезагружается после запуска программы?

Скорее всего, не остановлен сторожевой таймер. После сброса он включён в режиме watchdog с интервалом 32768 тактов DCO — около 32 мс на 1 МГц. Его останавливают первой командой: в WDTCTL записывают WDTPW + WDTHOLD, причём старший байт должен быть паролем 05Ah, иначе запись сама вызывает сброс.

Какая максимальная частота у MSP430G2553?

16 МГц при питании от 3,3 В. Частота ограничена напряжением: по даташиту до 6 МГц при 1,8 В и до 12 МГц при 2,7 В. На кристалле записаны калибровочные константы DCO для 1, 8, 12 и 16 МГц, у частоты 1 МГц разброс во всём диапазоне температур и напряжений — до ±6 %.

Сколько памяти у MSP430G2553?

16 КБ флеш-памяти программ по адресам 0xC000–0xFFFF, 512 байтов ОЗУ по адресам 0x0200–0x03FF и 256 байтов информационной флеш-памяти 0x1000–0x10FF для калибровок и настроек. Векторы прерываний занимают верхние слова флеш-памяти до 0xFFFF.

Источники

  1. Texas Instruments. MSP430F2xx, MSP430G2xx Family User's Guide (SLAU144K, revised August 2022) — разд. 1.1–1.4 — архитектура и карта памяти (рис. 1-2); разд. 2.1 — сброс и начальное состояние; разд. 2.3 — режимы работы (табл. 2-2), вход и выход из LPM; разд. 3.2 — регистры (рис. 3-6, табл. 3-1); гл. 5 — модуль тактирования Basic Clock+; гл. 8 — порты; гл. 10 — сторожевой таймер WDT+ (пароль 05Ah, начальный интервал 32768 тактов)
  2. Texas Instruments. MSP430G2x53, MSP430G2x13 Mixed Signal Microcontroller (SLAS735J, revised May 2013) — выводы N20/PW20; табл. 5 — векторы прерываний; табл. 8 — организация памяти; рекомендуемые условия — частота от напряжения; токи в активном режиме и LPM; калиброванные частоты DCO; VLO 4–20 кГц

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