Архитектура микроконтроллера MSP430F2013
На рисунке Б.1 приведена общая структурная схема микроконтроллеров семейства MSP430 [4]. Отдельные устройства подчиняются общим архитектурным принципам и отличаются лишь составом встроенной периферии. Структурно-функциональная схема MSP430F2013 представлена на рисунке Б.2 [3].
Краткий перечень основных характеристик микроконтроллера MSP430F2013:
- напряжение питания от 1,8 до 3,6 В;
- сверхнизкое энергопотребление (в активном режиме (Active Mode) – 220 мкА, при частоте 1 МГц и напряжении 2,2 В, в режиме ожидания (Standby Mode) – 0,5 мкА, в режиме отключения с сохранением содержимого ОЗУ (режим сна) – 0,1 мкА);
- пять режимов экономии энергии;
- пробуждение из режима ожидания менее 1 мкс;
- 16-разрядная RISC-архитектура, время машинного цикла - 62,5 нс;
- 16-битный Таймер А с 2-мя регистрами захвата/сравнения;
- 16-битный сигма-дельта АЦП;
- универсальный последовательный интерфейс (USI) с поддержкой SPI и I2C;
- защита от падения напряжения;
- возможность программирования в целевой системе через последовательный интерфейс;
- встроенная схема эмуляции доступна через интерфейс Spy-Bi-Wire;
- объем памяти: 2кБ+256Б флэш, 128Б ОЗУ;
- диапазон рабочих температур от –40 до +85 °С.
В основу микроконтроллеров положена архитектура RISC. Регистровая организация и система команд очень близки к широко известной и, в прошлом, весьма популярной архитектуре PDP11 (СМ ЭВМ, ДВК, «Электроника-60», «БК-0010», микропроцессор К1801ВМ2 и т.п.). Центральный процессор (ЦП) имеет 16 встроенных регистров, четыре из которых зарезервированы под счетчик команд (PC), указатель стека (SP), регистр состояния (SR) и генераторы констант (CG).
Генератор констант служит для получения наиболее часто используемых констант (-1, 0, 1, 2, 4, 8) и позволяет, в дополнение к 27 основным командам, эмулировать еще 24 дополнительных инструкции. То, что инструкции эмулируются, не означает снижения производительности.
Эмулируемые инструкции столь же эффективны, как и встроенные, и представляют собой лишь более наглядную нотацию частных случаев использования встроенных команд. Например, типичная однооперандная инструкция (CLR dst) эмулируется двухоперандной инструкцией той же длины (MOV R3,dst) или, что то же самое, (MOV #0,dst), где 0 заменяется ассемблером. В результате имеем однословную инструкцию, отсутствие дополнительных управляющих операций или оборудования в ЦП, регистровый режим адресации для операнда-источника без дополнительного цикла для выборки константы.
Рисунок Б.1 – Структурная схема микроконтроллеров семейства MSP430
Рисунок Б.2 – Структурная схема MSP430F2013
Для доступа к данным применяются семь способов адресации для операнда-источника, и четыре – для операнда-приемника. Большинство инструкций могут работать как с байтами, так и с двухбайтовыми словами. Команды условных переходов и вызовы подпрограмм используют те же самые способы адресации, что и другие инструкции. Скорость работы ЦП зависит от используемых форматов команд и режимов адресации и может составлять от 1 до 6 периодов MCLK на инструкцию.
Микроконтроллеры MSP430 организованы в соответствие с фон-неймановской архитектурой. Память программ, данных и периферия расположены в едином адресном пространстве. В результате для доступа к коду, данным и периферии могут использоваться одни и те же инструкции. Еще одним эффектом применения этой архитектуры является возможность выполнения кода из оперативной памяти.
Модуль синхронизации Basic Clock Module+ позволяет снизить стоимость конечной системы и обеспечивает сверхнизкое потребление устройства. Используя один из трёх тактовых сигналов, формируемых модулем, пользователь может добиться оптимального соотношения производительности и энергопотребления. Модуль синхронизации может быть программно сконфигурирован для работы без использования дополнительных внешних элементов, с одним внешним резистором, с одним или двумя внешними кварцевыми или керамическими резонаторами.
Модуль синхронизации MSP 430F2013, показанный на рисунке Б.3 содержит три источника тактового сигнала [5]:
- LFXT1CLK – низкочастотный/высокочастотный генератор, который может работать с «часовым» кварцевым резонатором или внешним сигналом частотой 32768Гц или же с обычными кварцевыми/керамическими резонаторами или внешним сигналом синхронизации частотой от 400 кГц до 16 МГц;
- DCOCLK – встроенный генератор с цифровым управлением (DCO);
- VLOCLK – встроенный низкочастотный генератор с очень низким потреблением, работающий на частоте 12 кГц.
Модуль синхронизации MSP 430F2013 формирует три тактовых сигнала:
- ACLK—вспомогательный тактовый сигнал. Источник выбирается программно: LFXT1CLK или VLOCLK. Посредством делителя частота сигнала от выбранного источника уменьшается в 1, 2, 4 или 8 раз. Сигнал ACLK может программно назначаться для отдельных периферийных модулей.
- MCLK—основной тактовый сигнал. Источник выбирается программно: LFXT1CLK, VLOCLK, XT2CLK (отсутствует в MSP 430F2013) или DCOCLK. Посредством делителя частота сигнала от выбранного источника уменьшается в 1, 2, 4 или 8 раз. Сигнал MCLK используется для тактирования ЦПУ и системы.
- SMCLK—дополнительный тактовый сигнал. Источник выбирается программно: LFXT1CLK, VLOCLK, XT2CLK (отсутствует в MSP 430F2013) или DCOCLK. Посредством делителя частота сигнала от выбранного источника уменьшается в 1, 2, 4 или 8 раз. Сигнал SMCLK может программно назначаться для отдельных периферийных модулей.
Рисунок Б.3 – Структурно-функциональная схема модуля синхронизации Basic Clock Module+
Помимо активного режима (АМ), когда все внутренние синхросигналы активны, поддерживаются также пять режимов, позволяющих в той или иной степени снизить потребляемую микроконтроллером мощность. Эти режимы обозначаются от LPM0 (Low Power Mode 0) до LPM4, и различаются комбинациями включения и отключения синхросигналов MCLK, SMCLK, ACLK и генератора DCO. Во всех пяти режимах центральный процессор выключен. Режим LPM4 (режим сна) является самым радикальным – приостанавливается любая активность микроконтроллера, включая системный генератор, лишь сохраняется содержимое оперативной памяти, регистров и установки портов ввода-вывода. При этом типовая величина потребляемого тока снижается до 0,1 мкА.
Возврат к активному режиму после любого из этих состояний ожидания может быть осуществлен по прерываниям от работающей периферии или от RST/NMI. Выход из режима LPM4 возможен только по разрешенным внешним прерываниям.
В дополнение к энергосберегающим режимам, отключением тех или иных периферийных устройств можно достичь еще большего снижения тока потребления.
Микроконтроллеры семейства MSP430 содержат различные объемы оперативной и флэш-памяти, причем оба типа памяти могут использоваться для хранения как кода, так и данных.
Флэш-память предоставляет дополнительную гибкость внутрисистемного программирования и хранения данных без значительного увеличения потребляемого устройством тока. Напряжение программирования генерируется на кристалле микроконтроллера, таким образом, снимая потребность в дополнительном питании и даже допуская перепрограммирование в системах с батарейным питанием.
Модуль флэш-памяти состоит из нескольких сегментов. Каждый сегмент может стираться и программироваться независимо от других сегментов. Различают области основной и информационной памяти. Основная память содержит сегменты по 512 байт, а информационная – один или два сегмента размером 128 байт. При выполнении операций очистки и программирования весь модуль недоступен, а соответствующий программный код должен выполняться из ОЗУ.
Помимо названных типов памяти, микроконтроллеры имеют в своем составе загрузочное ПЗУ, содержащий код начальной загрузки флэш-памяти, который позволяет программировать и перепрограммировать микроконтроллеры в системе с помощью программно эмулируемого последовательного интерфейса.
Рассматриваемый микроконтроллер MSP430F2013 имеет 2 кБ флэш-памяти и 128 Б оперативной памяти.
В состав модуля 16-битногоАЦПSD16_A входит сигма-дельта АЦП, имеющий буфер с высоким входным сопротивлением, и внутренний источник опорного напряжения. Модуль имеет до восьми мультиплексированных полностью дифференциальных аналоговых каналов, включая каналы для измерения сигнала от встроенного датчика температуры и напряжения питания, АЦП реализовано на базе сигма-дельта модулятора второго порядка и децимирующего цифрового фильтра. Для децимации используется гребенчатый фильтр с программируемым коэффициентом передискретизации (до 1024). Дополнительная фильтрация может осуществляться программно.
Порты ввода-вывода общего назначения микроконтроллеров MSP430 обеспечивают максимальную гибкость их использования. Каждый из выводов порта индивидуально конфигурируется в качестве входа или выхода. Запись и чтение ввода/вывода также может осуществляться в индивидуальном порядке.
Порты Р1 и Р2 поддерживают внешние прерывания. Для каждого из выводов портов Р1 и Р2 можно индивидуально разрешить прерывание и сконфигурировать его так, чтобы оно генерировалось по нарастающему или спадающему фронту входного сигнала. Все линии ввода/вывода порта Р1 назначены одному вектору прерываний, а все линии порта Р2 – другому вектору.
Цифровые порты ввода/вывода обладают следующими возможностями:
- независимые индивидуально программируемые линии ввода/вывода;
- любые комбинации входов или выходов;
- индивидуально конфигурируемые прерывания от выводов портов Р1 и Р2;
- раздельные регистры данных для входов и выходов;
- индивидуально конфигурируемые внутренние подтягивающие резисторы.
Микроконтроллеры MSP430F2013 имеют порты P1(8 выводов) и P2(2 вывода).
Модуль универсального последовательного интерфейса USI обеспечивает базовые функции для поддержки синхронного обмена по последовательному каналу. В наиболее упрощенном виде этот модуль представляет собой 8- или 16-битный сдвиговый регистр, который может использоваться для передачи потока битов. В сочетании с незначительным по объему программным кодом данный регистр позволяет реализовать обмен по последовательному каналу. Кроме того, в составе модуля USI имеются функциональные узлы, облегчающие организацию обмена по интерфейсам SPI и I2C. Также в модуле USI предусмотрена поддержка прерываний, что позволяет еще больше уменьшить программные издержки, необходимые для реализации последовательного обмена и, таким образом, уменьшить потребление микроконтроллера в соответствии с идеологией семейства MSP430.
Основная функция модуля сторожевого таймераWDT+ заключается в выполнении управляемого перезапуска системы при некорректном функционировании программы. При «зависании» программы на время, превышающее заданный интервал, модуль генерирует сигнал системного сброса. Если сторожевой таймер в приложении не требуется, то модуль может использоваться в качестве обычного интервального таймера, генерирующего прерывания с заданной периодичностью.
После появления сигнала PUC модуль WDT+ автоматически запускается в режиме сторожевого таймера с интервалом сброса, равным 32 768 тактам сигнала DCOCLK. Пользователь должен сконфигурировать или остановить сторожевой таймер до истечения этого интервала.
Микроконтроллеры MSP430F содержат один или два универсальных таймера (Timer_A и Timer_B) и, возможно, таймер-счетчик общего назначения, называемый в документации базовым таймером.
Timer_A – универсальный таймер, состоящий из 16-разрядного счетчика с четырьмя рабочими режимами и трех или двух регистров захвата/сравнения. Timer_A может осуществлять множественный одновременный счет, множественные операции захвата/сравнения, формирование выходных сигналов специальной формы, в частности ШИМ-сигналы, а также любые комбинации названных операций. Прерывания от таймера А могут генерироваться счетчиком по условиям переполнения, а также каждым из регистров захвата/сравнения по захвату или достижению условия сравнения. Каждый блок захвата/сравнения конфигурируется индивидуально и может производить прерывания по достижению условия сравнения, по положительному, отрицательному или обоим фронтам внешнего сигнала захвата.
В дополнение к таймеру А, микроконтроллеры F13x, F14x, F2x, F43x и F44x содержат еще один таймер аналогичного назначения, называемый Timer_B, содержащий три или семь модулей захвата/сравнения. В зависимости от числа этих модулей, таймер обозначается Timer_B3 или Timer_B7. Таймер В в основном аналогичен таймеру А, однако, по сравнению с последним, имеет некоторые усовершенствования. В частности разрядность таймера можно программно установить на 8, 10, 12 или 16 бит (таймер А всегда 16-разрядный), а использование двойной буферизации данных сравнения позволяет одновременно обновлять периоды ШИМ.
Микроконтроллеры F4xx имеют еще один таймер, называемый Basic Timer (базовый таймер). Основное назначение базового таймера заключается в предоставлении другим периферийным модулям или программному обеспечению низкочастотных управляющих сигналов. Его можно программно сконфигурировать как два независимых 8-разрядных или как один 16-разрядный таймер/счетчик. В частности базовый таймер можно использовать в качестве часов реального времени, для устранения дребезга клавиатур или формирования временных интервалов в прикладных программах.
Микроконтроллер MSP430F2013 имеет один универсальный таймер – Таймер А. Поскольку таймер имеет 2 регистра захвата/сравнения, в документации он обозначается Timer_A2.
Приложение В
(справочное)
Интегрированная среда разработки IAR Embedded Workbench for MSP430
IAR Embedded Workbench for MSP430 - представляет собой мощную интегрированную среду фирмы IAR SYSTEMS для разработки и отладки программ для микроконтроллеров MSP430 на языках программирования Си, Си++ и ассемблер. Она обеспечивает расширенную поддержку устройств MSP430 и создает очень компактный и эффективный код. В неё входят компилятор языка Си и Си++, ассемблера, компоновщик и отладчик, при этом возможно взаимодействие с внешними программами. Встроенный редактор специально настроен на синтаксис языка С, а дополнительные утилиты и хорошая встроенная система помощи дополнительно облегчают написание программ.
В комплекте с отладочным набором eZ430-F2013 идет бесплатная версия IAR Embedded Workbench KickStart for MSP430. Данная версия имеет ограничение по объему кода программы на языках Си и Си++ (4 кБ), в комплект поставки не входят RTL-библиотеки.
Приложение Г
(справочное)
Исходный текст программы управления светодиодом на ассемблере
Исходный текст программы управления светодиодом на ассемблере приведен на рисунке Г.1.
![]() |
Рисунок Г.1 – Исходный текст программы управления светодиодом на ассемблере
Приложение Д
(справочное)
Исходный текст программы управления светодиодом на языке С
//******************************************************************************
//
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430x2xx
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.0|-->red LED
// | P1.6|-->green LED
//
// ISTU
// Mart 2013
// НАСТЯ
//******************************************************************************
#include "msp430.h"
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= 0xff; // Set P1 to output direction
unsigned int i,j; // volatile to prevent optimization
// Н
// тире
P1OUT = 0x1;
i = 60000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// точка
P1OUT = 0x1;
i = 60000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// pause
P1OUT = 0;
i = 60000; // SW Delay
do i--;
while (i != 0);
// А
// точка
P1OUT = 0x40;
i = 20000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// тире
P1OUT = 0x40;
i = 60000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// pause
P1OUT = 0;
i = 60000; // SW Delay
do i--;
while (i != 0);
// С
// точка
for (j=0;j<3;j++)
{
// точка
P1OUT = 0x1;
i = 20000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
}
// pause
P1OUT = 0;
i = 60000; // SW Delay
do i--;
while (i != 0);
// Т
// тире
P1OUT = 0x40;
i = 60000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// pause
P1OUT = 0;
i = 60000; // SW Delay
do i--;
while (i != 0);
// Я
for (j=0;j<2;j++)
// точка
P1OUT = 0x1;
i = 20000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
// тире
P1OUT = 0x1;
i = 60000; // SW Delay
do i--;
while (i != 0);
P1OUT = 0;
i = 20000; // SW Delay
do i--;
while (i != 0);
}
}
Приложение Е
(справочное)
Кодирование символов в азбуке Морзе
В азбуке Морзе (код Морзе) каждой букве соответствует комбинация из длинных посылок (тире) и коротких посылок (точек). За единицу длительности в телеграфной азбуке принимается длительность точки. Длительность тире равняется длительности трех точек. Пауза между знаками в букве - одна точка, а между буквами в слове 3 точки. Пауза между словами 7 точек.
Код Морзе используется для передачи сигналов в радиосвязи, гидроакустической, световой и звуковой сигнализациях. Буквенные сигналы приведены на рисунке Е.1. Цифровые сигналы приведены на рисунке Е.2. Сигналы знаков препинания приведены на рисунке Е.3. Специальные сигналы приведены на рисунке Е.4
.- А, A | -... B, Б | -.-. C, Ц | -.. D, Д | . E, Е | ..-. F, Ф |
--. G, Г | .... H, Х | .. I, И | .--- J, Й | -.- K, К | .-.. L, Л |
-- M, М | -. N, Н | --- O, О | .--. P, П | --.- Q, Щ | .-. R, Р |
... S, С | - T, Т | ..- U, У | ...- V, Ж | .-- W, В | -..- X, ь |
-.-- Y, Ы | --.. Z, З | ||||
---. *, Ч | ---- *, Ш | ..-. *, Э | ..-- *, Ю | .-.- *, Я |
Рисунок Е.1 – Буквенные сигналы
----- 0 | .---- 1 | ..--- 2 | ...-- 3 | ....- 4 |
..... 5 | -.... 6 | --... 7 | ---.. 8 | ----. 9 |
Рисунок Е.2 – Цифровые сигналы
...... . | .-.-.- , | --..-- ! | ..--.. ? |
-.-.- ; | ---... : | -.--.- () | -....- - |
.-..-. " | .----. ' | -..-. № | -..-. / |
Рисунок Е.3 – Сигналы знаков препинания
-...- (знак раздела) | ........ Перебой (исправление) | -..--. Начало передачи |
.--.--- Готовность к приему | .-.-.-.-.- Начало действия | .-.-. Окончание передачи |
Рисунок Е.4 – Специальные сигналы
Практическое занятие № 2