TI LaunchPad MSP430

TI LaunchPad MSP430
Микроконтроллерные платформы TI LaunchPad представляют собой вполне удачную попытку крупной компании разработать свой собственный аналог Arduino. Всего линейка Texas Instruments LaunchPad насчитывает три устройства:
  • MSP430 - на базе 16-битных микроконтроллеров семейства MSP430G2x с тактовой частотой 16МГц;
  • C2000 - использует 32-битные микроконтроллеры C2000 Piccolo 28x с тактовой частотой 60МГц;
  • Stellaris - на основе 32-битных Stellaris LM4F с архитектурой ARM Cortex MF4 и частотой 80МГц.
Данная статья посвящена самой младшей модели MSP430, которая была мной успешно приобретена и опробована некоторое время назад.

Характеристики

Макетная плата TI LaunchPad MSP430 снабжена сокетом DIP-20 и поставляется в наборе с двумя микроконтроллерами серии MSP430G2x. Чипы отличаются друг от друга количеством памяти, числом выводов и набором последовательных портов. Ниже представлена сравнительная таблица этих двух устройств:

  MSP430G2553 MSP430G2452
 Тактовая частота 16МГц  16МГц
 Flash 16Кб 8Кб
 SRAM 512б 256б
 Цифровые входы/выходы 24 16
 Таймеры 2 1
 Последовательный порт USCI -- I2C, SPI, HW UART USI -- I2C, SPI
 АЦП 8 x 10бит 8 x 10бит

Помимо перечисленного в таблице, контроллер имеет в своем составе датчик температуры, сторожевой таймер и компаратор. Встроенные 16-битные таймеры имеют поддержку ШИМ. На плате также размещаются два светодиода на контактах P1.0 и P1.6, кнопка сброса и кнопка в разрыв вывода P1.3.

Покупка

Приобрести данное устройство можно в собственном интернет-магазине TI (estore.ti.com) по чрезвычайно низкой цене - $4.30. Доставка включена в стоимость товара, что достаточно необычно для "неазиатского" магазина. А что самое удивительное, два устройства были доставлены мне всего за одну неделю посредством весьма недешевой почтовой службы FedEx. Подозреваю что стоимость доставки раз в пять превысила стоимость товара. Такое транжирство американцев можно объяснить либо засилием внутрикорпоративной бюрократии в TI, либо попыткой посодействовать популяризации своей платформы. И если это было последнее, то оно сработало - мы заказали еще 4 подобных контроллера, а также два устройства из серии Stellars.

Распаковка TI LaunchPad MSP430   Распаковка TI LaunchPad MSP430   Распаковка TI LaunchPad MSP430

Как можно заметить, упаковка от TI разительно отличается от формата поставки китайских компонентов. Подобное, кстати, наблюдалось и при покупке контроллера mbed.

Стандартная комплектация LaunchPad MSP430 включает в себя следующие элементы.
  1. Макетную плату с установленным MSP430G2553.
  2. Микроконтроллер MSP430G2452.
  3. Внешний кварцевый резонатор на 32КГц.
  4. Два 10-контактных переходника мама-папа.
  5. Провод USB-miniUSB.
  6. Инструкцию.
  7. Два стикера с логотипом LaunchPad.
Размеры устройства - 66мм x 51мм. Расстояние между выводами как и положено 2.54мм (0.1''). Расстояние между рядами - 45мм.

Распиновка


Программирование LaunchPad

TI CCS
Для составления программ TI рекомендует использовать свой родной IDE Code Composer Studio, либо сторонний платный IAR и систему с открытыми исходным кодом MSPGCC. При этом, дабы не открывать платный функционал IDE каждому встречному, CCS имеет особый тип лицензии для MSP430 устройств, имеющий ограничение по размеру программы - 16Кб. Также имеется особая Free лицензия для контроллеров на базе Stellaris (и ряда других).

TI Code Composer Studio

Поскольку разбираться с установкой MSPGCC совсем не хотелось, я решил установить CCS 5.1. К тому же, как уже говорилось, никаких ограничений по работе с MSP430 данный продукт не имеет. 

На wiki-сайте TI имеется подробная инструкция по установке IDE и по созданию первого проекта для MSP430. Вкратце,  алгоритм программирования устройства выглядит следующим образом.

1. Запускаем CCS и указываем папку для хранения проектов.
2. Создаем новый проект через пункт меню "File / New / CCS Project".
2.1. В появившемся окне заполняем поле "Project name".
2.2. В поле "Family" указываем семейство микроконтроллеров - MSP430.
2.3. В поле "Variant" - "MSP430Gxxx" Family и "MSP430G2553".
2.4. И наконец, в разделе "Project templates and examples" указываем "Empty projects / Empty project".
3. В папке созданного проекта создаем новый файл "File / New / Source File".
4. Пишем в этом файле программу для мигания светодиодом и сохраняем проект.
5. Подключаем LaunchPad к компьютеру через USB.
6. В панели инструментов жмем кнопку "Debug".
7. Если при компиляции программы не возникнет никаких проблем, откроется окно отладчика, где нажмем кнопку "Run".
8. Смотрим как LaunchPad весело мигает светодиодом.

В общем то все достаточно легко и просто, без привлечения программаторов.

Energia

Energia IDE
Energia по своей сути является модифицированной версией Arduino IDE, разработанной специально для программирования LaunchPad MSP430. Интерфейс IDE полностью совпадает с прародителем, за исключением цвета. Таким образом, с помощью Energia вы можете легко использовать Arduino-вские скетчи для LaunchPad.

Перед использованием Energia, потребуется установить драйвера для LaunchPad. Драйвера можно скачать со странички Energia на git-hub. Если у вас уже установлен TI CCS, то этот шаг можно опустить.

Затем необходимо скачать сам IDE, который также как и Arduino IDE поставляется в виде zip-архива. В распакованном архиве имеется исполняемый файл energia.exe, который и запускает Energia.

В меню "File / Examples" имеется практически такой же как в Arduino набор примеров простых программ. Готовая программа загружается на LaunchPad также с помощью кнопки "Upload" на панели инструментов. 

Единственным недостатком данного IDE является тот факт, что программировать с помощью него можно только младшую версию LaunchPad - MSP430. Если же возникнет необходимость  работы с LaunchPad C2000 или Stellaris, то потребуется использовать родной TI CCS, в котором кодирование представляется куда более сложным.

Особенности программирования на TI CCS

Как уже говорилось выше, на сайте TI имеется подробная инструкция по программированию LaunchPad для мигания встроенным светодиодом. Программа, разработанная в среде CCS, выглядит следующим образом:

LaunchPad Blink Led

#include <msp430g2553.h>

unsigned int i = 0;

void main( void ) {
    WDTCTL = WDTPW + WDTHOLD;
 
    P1DIR |= 0x01;

    while( 1 ) {
        P1OUT ^= 0x01;
        for( i=0; i<20000; i++);
    }
}

Разберем подробнее код, который поначалу может показаться немного "диким" по сравнению с Arduino или Energia. Итак, первая строчка в функции "main" имеет вид:

WDTCTL = WDTPW + WDTHOLD;

И означает всего на всего отключение встроенного сторожевого таймера. Эта команда предотвратит его срабатывание, которое влечет за собой регулярный рестарт системы. Эта строка должна быть всегда, просто пишем ее и не думаем лишнего. Затем указывается режим работы порта ввода/вывода:

P1DIR |= 0x01;

Регистр P1DIR содержит 8 бит, каждый из которых соответствует тому или иному каналу. Чтобы канал порта работал на ввод, нужно записать в соответствующий бит регистра ноль. Для режима вывода, напротив, требуется установить единицу. Располагаются биты в следующем порядке:

P1DIR = <PIN7><PIN6><PIN5><PIN4><PIN3><PIN2><PIN1><PIN0>

Таким образом, чтобы установить режим вывода для канала P1.0 следует записать в нулевой бит регистра P1DIR значение 1, что и было сделано в исходной команде. В Arduino, аналогом данной процедуры является функция pinMode.

В отличие от регистра P1DIR задающего режим ввода/вывода, P1OUT содержит значения, выводимые в соответствующие каналы порта №1. Следовательно, чтобы зажечь встроенный светодиод на ноге P1.0 мы записываем в P1OUT значение 00000001. Чтобы отключить ногу от питания, записываем в указанный регистр значение 00000000. В коде это будет выглядеть так:

P1OUT = 0x01; 

Здесь 0x01 - шестнадцатиричное представление числа 00000001. В Arduino, аналогом этого выражения является функция digitalWrite.

В указанной тестовой программе для реализации последовательного включения и выключения светодиода применяется оператор "исключающее или". Данную строку можно бы было заменить на более громоздкий код:

if( P1OUT == 0x01 )
    P1OUT = 0x00;
else
    P1OUT = 0x01;

Ну и наконец для обеспечения временной задержки запускается пустой цикл из 20000 итераций.

Гуманизация кода TI CCS

Для человека привычного к Arduino или mbed, работать с таким ненаглядным кодом может быть достаточно неудобно. Именно поэтому добрые люди попробовали упростить разработку программ MSP430 на TI CCS с помощью определения знакомых функций pinMode, digitalWrite и delay. Примером такой гуманизации является вспомогательный файл-заголовок friendly_launchpad.h, от Криса Гилберта (Chris Hulbert).

Итог

В заключении хочется еще раз повторить, что Texas Instruments, в лице LaunchPad MSP430, создали очень удачный в техническом плане аналог Arduino. А благодаря Energia IDE разработка программ для LaunchPad стала такой же простой и понятной как и для Arduino.

Учитывая, что стоимость LaunchPad ниже самой дешевой китайской Ardiuno Nano ($12) почти в 3 раза, я рекомендую внимательно рассмотреть данную платформу как основу небольших проектов в робототехнике и домашней автоматике.

Ресурсы


Comments