MSP430FR2433 Launchpad: быcтрый старт

разделы: MSP430, дата: 6 февраля 2018г.

Под новый год компания Texas Instruments удачно напомнила о себе устроив распродажу своих новых Launchpad'ов по символической цене в 4.30$. В сочетании с бесплатной доставкой занявшей, в моем случае, всего девять дней со склада в США, получился вполне себе такой приятный подарок. Для сравнения, на "Мышаке" Launchpad MSP430FR2433 стоит сейчас 18$ со сроком доставки в три недели. Так что, как говорится, приобретайте у производителя.

Launchpad MSP430FR2433 занял меня на пару дней, но вот только сейчас дошли руки написать об этой новинке. Я хотел бы рассказать, что это вообще за плата такая, для чего ее можно использовать(как оказалось не только для программирования), и как ее программировать. Я буду говорить в основном об Linux, так как именно здесь кроется большинство проблем. О Windows буду говорить по необходимости, там все делается по аналогии, т.к. весь используемый софт является кроссплатформенным. Так же, я иногда буду сравнивать этот Launchpad с более ранним MSP-EXP430G2.

    Содержание статьи:
  1. Краткий обзор оценочного модуля MSP430FR2433 Lanchpad;
  2. Energia IDE & Linux, или как убить Launchpad за 5 секунд;
  3. Работа с Energia IDE и MSP430FR2433 из под виртуальной машины с Windows 7;
  4. Компиляция тестовой прошивки;
  5. Флешер MSPFlasher;
  6. Использование MSPDebug в качестве флешера;
  7. Отладка Launchpad MSP430FR2433 через MSPDebug;
  8. Code Composer Studio и инструмент EnergyTrace;
  9. CCS Cloud - среда программирования на облаке;

1) Краткий обзор оценочного модуля MSP430FR2433 Lanchpad

Launchpad MSP430FR2433 можно мысленно разделить на три отдельных модуля: модуль программатора eZ-FET, модуль подсчета энергопотребления EnergyTrace, модуль с микроконтроллером MSP430FR2433.

    Микроконтроллер, MSP430FR2433 относится к семейству свехдешевых чипов Value Line Sensing MSP430FR2xxx/MSP430FR4xxx, и имеет следующие характеристики:
  1. 16-битная RISC архитектура;
  2. Рабочая частота до 16 МГц включительно;
  3. Диапазон напряжений питания от 1.8 до 3.6 Вольт;
  4. 8-канальный 10-битный АЦП;
  5. Внутренний источник опорного напряжения на 1.5 Вольт;
  6. Максимальная частота преобразований АЦП - 200 kSPS;
  7. Два расширенных USCI модуля: eUSCI_A c поддержкой режимов UART, IrDA и SPI и один eUSCI_B с поддержкой режимов: SPI, I2C;
  8. Всего четыре таймера:
  9. Два 16-битных трех-канальных таймера Timer_A3;
  10. Два 16-битных двух-канальных таймеров Timer_A2;
  11. Так же имеется еще один 16-битный таймер для RTC;
  12. Аппаратное вычисление 16-битного циклического избыточного кода CRC;
  13. Оперативной памяти - 4 КБайта;
  14. Энергонезависимой FRAM памяти с побайтовым и побитным доступом - 15.5 кБайта
  15. Защита от записи энергонезависимой FRAM памяти;
  16. Коэффициент пропорциональности скорости доступа к FRAM относительно SRAM-памяти составляет 4:1;
  17. Сенсор температуры FRAM памяти;
  18. Чип MSP430FR2433 поддерживает аппаратное умножение реализованное в 32-битном умножителе MPY32;
  19. Дополнительные режимы сбережения LPM 3.5 и LPM 4.5;
  20. Корпус микросхемы - VQFN-24.

На мой взгляд, чип MSP430FR2433 является прямым конкурентом семейству STM8, по перечню периферии и характеристикам они примерно на одном уровне.

Посмотрим более внимательно на дизайн платы Launchpad'а:

Читать дальше

MSP430G2452: USI модуль в режиме I2C как конечный автомат

разделы: MSP430, I2C, дата: 10 декабря 2017г.

USI модуль в MSP430x2xx описывается как простое устройство основанное на управляемом сдвиговом регистре. Однако простота этого модуля оборачивается сложностью в его использовании. То, что в полноценном I2C модуле будет "спрятано под капотом" в виде незримой автоматики, здесь придется делать вручную.

В официальной библиотеке Texas Instruments для использования USI модуля в I2C режиме: slaa368.zip и документации к ней: slaa368.pdf алгоритм работы с USI представлен как конечный автомат. Мне показалось это интересным и я решил разобрать его работу в этой статье. Сама библиотека написана на ассемблере для IAR компилятора, и в так виде лично для меня она была бесполезна. Поэтому в процессе изучения библиотеки я портировал ее на mspgcc, правда не всю, а только работу в режиме мастера.

Статью условно можно разделить на три части. Вначале идет программная реализация I2C для MSP430, которая в дальнейшем будет использоваться как эталонная, т.е. с ней будут сравниваться остальные варианты. Затем будет рассмотрена аппаратная реализация I2C для USI MSP430, и закончим мы конечным автоматом(Finite-State Machine). В итоге у нас будет три драйвера I2C шины: один программный и два аппаратных.

В качестве микроконтроллера я буду использовать MSP430G2452 который шел в комплекте c MSP-EXP430G2 Launchpad. Данный микроконтроллер имеет два порта GPIO, один "А"-таймер, один USI-модуль, 8Кб флеш-памяти и 128 байт оперативной памяти. Т.е. это что-то вроде ATtiny84 по возможностям. Для обкатки драйверов I2C шины, в качестве целевого устройства я буду использовать RTC DS3231, для которого я портировал на Си свою Arduino-библиотеку DS3231SQW.

Так как программного кода в статье много, полные исходники и скомпилированные прошивки я выложил на gitlab.com https://gitlab.com/flank1er/msp430_usi_i2c

Для простоты будем считать, что вы работаете в Linux или в CYGWIN под Windows, используете компилятор mspgcc из комплекта Energia IDE, а в качестве программатора используется MSP-EXP430G2 Launchpad.

    Содержание статьи:
  1. Основные характеристики USI модуля в режиме I2C;
  2. Создание базового проекта для Sublime Text 3: "Программный UART передатчик для MSP430G2452";
  3. Добавление в проект программной реализации I2C и библиотеки DS3231;
  4. Аппаратный драйвер I2C шины для USI модуля;
  5. USI модуль в I2C режиме как конечный автомат;
  6. Работа USI модуля в режиме I2C.

Читать дальше

MSP-EXP430G2 Launchpad: быстрый старт в Linux

разделы: MSP430, дата: 17 августа 2017г.

Я все-таки не удержался, и приобрел MSP430 LaunchPad. Это может показаться довольно странным решением, учитывая, что для прошивки чипов я активно использовал BSL, и вроде как LaunchPad был не очень-то необходим.

Кроме того, LaunchPad уже лет пять стоит в несколько раз больше чем 4.3USD да и цена за доставку может неприятно удивить.

Ok, мои аргументы:

  • SBW(spy-bi-wire). На плате распаян программатор MSP430UIF использующий протокол SBW. В первую очередь, я брал LaunchPad ради него. Прошивка через SBW - поддерживается всеми чипами серии MSP430x2xxx, чего не скажешь о BSL.
  • Работать с программатором MSP430UIF можно из Linux(ну наконец-то!).
  • Через SBW можно, не только прошивать, но и отлаживать прошивку. Как можно было убедиться, в Proteus почти ничего не работает, здесь же можно разобраться в работе того или иного алгоритма на конкретном чипе, а не на абстрактной симуляции. Да, и естественно, что отладка работает в том числе и в Linux.

Несмотря на то, что далее речь пойдет преимущественно о работе в среде Linux, к Windows все описанное тоже будет применимо, при условии использования Energia в версии для Windows и чего-то вроде CYGWIN. Для программирования MSP430 в Windows имеются следующие IDE: 1) Code Composer Studio aka CCStudio; 2) IAR Workbench for MSP430. На первый я даже смотреть не стал, т.к. это Eclipse который все ненавидят, а второй отказался работать с LaunchPad'ом. Нет там поддержки MSP430UIF оказывается.

    Так же в двух словах хочется пробежаться по преимуществам платформы MSP430 перед AVR:
  • Единая карта регистров. Не нужно каждый раз лезть в datasheet переписывая программу c ATtiny13 на ATtiny45 к примеру. Адреса и наименования для регистров всех моделей одной линейки одинаковы.
  • Цена. Обычно в розницу "младший" MSP430F2001, в корпусе DIP-14, стоит раза в два дешевле ATtiny13.
  • 3.3-вольтовая логика. Разрабатываемую схему легко можно будет адаптировать для stm32 при необходимости, если схема "разрастётся".
  • Простота. Для написания программы под MSP430 не требуется SPL, написанный на Си алгоритм легко перенести как на AVR, так и на STM8/STM32.
  • 16-битность. Арифметические операции с двухбайтовыми целыми числами выполняются одной инструкцией, что экономит место на flash-памяти и делает алгоритм быстрее.
  • Отсутствие фьюзов.
    Что касается самого LaunchPad, здесь нужно отметить:
  • Т.к. на плате распаян программатор MSP430UIF, то для прошивки чипам не нужен загрузчик Arduino. Можно купить чип в магазине, вставить его в панельку, запустить Energia(версия Arduino для MSP430) и сразу начать программировать. Это как если бы USBASP был распаян на плате Arduino.
  • На плате два светодиода: зеленый и красный, вместо одного красного в Arduino.
  • Светодиоды можно отключить от микроконтроллера сняв расположенные рядом джампики.
  • Кроме кнопки RESET, имеется еще одна кнопка на P1.3.
  • На плате имеется датчик температуры.
  • Кроме программатора, на плате распаян чип USB-TTL конвертера.
  • Часть программатора соединяется с частью чипа через джампики. Их можно вообще снять, и подключить шлейф для прошивки или отладки микроконтроллера распаяного на другой плате. Вообще же, это называется eZ430 разъем.
  • На оборотной стороне платы имеются резиночки, предотвращающие соприкосновение контактов платы с поверхностью стола.

Часто можно встретить комментарии, что MSP430 чипы бедны на периферию. Мощные чипы конечно у TI конечно же есть, но здесь в цене начинает сильно выигрывать продукция фирмы STM. Однако STM не делает чипы в DIP корпусе, и STM8 не имеет поддержки в Linux, поэтому "младшие" MPS430 для замены ATtiny13/ATtiny2313 мне кажутся наиболее интересными. Кроме того они более "прокачены" чем ATtiny. Например MSP430F2002 имеет на борту аппаратный SPI и I2C, а MSP430F2003 имеет 16-битный сигма-дельта АЦП(!). Такого вообще нет ни у AVR ни у STM.

Ок, пора за дело.

Содержание:

  1. Energia (Arduino для MSP430)
  2. MSP430F2001
  3. MSPDEBUG
  4. Отладка с помощью GDB

Читать дальше

Proteus8.x + MSP430x2xx: программная реализация I2C интерфейса, подключение устройств: RTC DS1307/DS3231, EEPROM AT24C512/AT24C32

разделы: MSP430, Proteus, I2C, RTC, дата: 5 апреля 2017г.

Полтора года назад я уже бегло рассматривал протокол I2C, теперь же настало время изучить его более подробно.

Попробуем написать программную реализацию протокола, рассмотрим "подводные камни" такой реализации, а также способы отладки шины I2C. Для обкатки алгоритма попробуем подключить следующие устройства на шине I2C: RTC DS1307/DS3231 и EEPROM AT24C512/AT24C32.

Для проектирования будет использована CAD Proteus_8.5. Для проверки на реальном железе будет использован чип MSP430G2453.

Часы реального времени на микросхеме DS1307

Итак, тренироваться будем на RTC DS1307, но здесь должен заметить, что данный чип относиться к 5-вольтовой логике поэтому с 3.3-вольтовым MSP430 он работать не будет. Заставить работать данную связку можно только в Proteus. Для тестирования на реальном железе я буду использовать DS3231 модуль. Однако для того чтобы понять I2C не нужен готовый модуль, он будет только мешать.

Суть проблемы

Когда не очень опытный радиолюбитель берет устройство на I2C, ему надо его как-то проверить, убедиться что оно хотя бы в принципе работает. Как это сделать? Обычно делается это на Arduino (я по крайней мере так делаю). Находится какой-нибудь скетч для проверки, и на нем проверяется.

Однако, при наличии проблем, как узнать в чем кроется загвоздка: в "косячной" библиотеке или в железке? Например, если мы загрузим этот скетч для работы с DS1307, и запустим его БЕЗ всякого модуля, то получим такую картинку:

Как видно, мы получили какие-то непонятные значения и если бы сбойная микросхема RTC была бы подключена, нам оставалось бы только гадать, где скрывается проблема: в коде или в железке.

И здесь проблема здесь не в низком качестве кода скетча. Если посмотрим API References:

Читать дальше

Proteus8.x + MSP430x2xx. Базовый курс: GPIO, прерывания, таймеры, ШИМ, аппаратный и программный UART, 10-битный модуль АЦП

разделы: MSP430, Proteus, дата: 6 февраля 2017г.

Немного максималистическая попытка сделать статью в стиле "все-в-одном", а именно: разобрать базовую периферию MSP430 и заодно использовать эту тему как ознакомительную для Proteus.

К сожалению, как выяснилось, в Proteus симуляция MSP430 не совсем полная, поэтому реального микроконтроллера Proteus заменить конечно не сможет. Однако, с некоторыми оговорками это все-таки замечательная платформа для отладки схем и различных алгоритмов. Ниже будет наглядно показано как отладить работу программного UART передатчика с помощью Proteus.

Я начинал статью с Proteus_8.3, а заканчивал ее под Proteus_8.5. И там и там имеются неточности если сравнивать с работой реального чипа, не следует забывать, что это всего лишь модель. И все-таки я бы посоветовал использовать версию 8.5 по той причине что там более-менее корректно работает таймер. У меня были сложности большими частотами, но возможно сказалось ограничение по производительности виртуальной машины.

Честно говоря, я не слишком расписывал темы: что такое Proteus, зачем он нужен, как его устанавливать и что значат все эти кнопочки. Подобных руководств достаточное количество на YouTube.

В качестве примера рассматривается чип MSP430G2453 в 28-пиновом корпусе. Но весь материал можно экстраполировать на всю линейку MSP430x2xx.

Создание и настройка проекта в Proteus на основе микроконтроллера MSP430

Читать дальше

MSP430: быстрый старт с бюджетом в 150р.

разделы: MSP430, дата: 20 апреля 2016г.


Чип MSP430g2453IPW28 распаяный на адаптере TSSOP28-DIP28

Чипы AVR заслужили хорошую репутацию отчасти тем, что содержат АЦП даже в самых младших моделях микроконтроллеров. Аббревиатура MSP430 не случайно ассоциируется с DSP, данные чипы при вполне разумной стоимости могут нести в себе 16-битные или даже 24-битные сигма-дельта АЦП, а также есть целая линейка CC430 микроконтроллеров c радиомодулем(!) на борту. MSP430 (расшифровывается как Mixed Signal Processor) имеет 16-битную архитектуру что позволяет обрабатывать данные с АЦП за один прием, не обрезая их до 8-бит как на AVR. Данные микроконтроллеры изначально разрабатывались как малопотребляющие. Причем настолько малопотребляющие, что ввелась новая концепция устройств с одной батарей для всего жизненного цикла устройства. Семейства MSP430x5xx и MSP430x6xx включают в себя модуль DMA. Одним словом, это еще одна достойная замена устаревающим AVR.

Читать дальше