Msp430 подключение к компьютеру

Обновлено: 02.07.2024

Поразительно, но для работы с микроконтроллерами необходимо лишь несколько компонентов. Для использования MSP430 потребуется: отладочная плата с чипом, программатор, компилятор, и источник питания. Питание может браться от пары пальчиковых батареек, или поступать напрямую от компьютера. Есть несколько компиляторов(некоторые из которых бесплатны), и отладочная плата может быть изготовлена вручную(при необходимости). Однако вплоть до недавнего времени было мало программаторов, лучшие из которых были довольно дорогими. Но недавний выпуск TI LaunchPad изменил эту ситуацию. Давайте рассмотрим подробнее каждый из перечисленных выше компонентов необходимый для работы с MSP430.

Отладочная плата

MSP430 может быть запрограммирована как внутри окончательной схемы, так и за её пределами при помощи его подключения к отладочной плате. Данный вид плат сделан таким образом: что бы можно было временно поместить в неё микроконтроллер, затем запрограммировать, и потом использовать его в конечном устройстве. Хорошо изготовленная отладочная плата делает возможным конструирование прототипов, или подключение к внешней схеме, в то время как микроконтроллер будет установлен в своей отладочной плате. TI делает хорошие отладочные платы нескольких форм-факторов, для работы со своими MSP430, например MSP-TS430PW28. Не смотря на то что немного дороговата, на самом деле большая часть цены уходит на примочки вроде ZIF разъёма для установки чипа. Отладочные платы не слишком сложны для разработки(потом мы рассмотрим как это сделать).

LaunchPad

Любительским типом плат являются экспериментальные платы(также называемые платами разработки). Эта плата может быть похожа на отладочную плату и использовать разъём, что бы временно размещать чип, или же микроконтроллер может быть припаян. В комплект платы разработки входят и другие компоненты такие как: светодиоды, кнопки, динамик, последовательный или Ethernet-порты и другие приспособления. TI делает некоторые из них, такие как MSP-EXP430F5438. Также изготавливаются и другими производителями, например Olimex кстати по более низкой цене, а иногда и со старшими микроконтроллерами из семейства MSP430.

Если вы переходили по ссылкам указанным выше то наверняка решили что цена слишком завышена, тогда давайте обратим внимание на LaunchPad! Эта отладочная плата для 14 и 20 контактных DIP компонентов со встроенным программатором(см. ниже). Лучшей её особенностью является её цена, которая составляет 4.30$! Хоть это и новый продукт, сообщество уже начало развиваться вокруг этой платформы, и LaunchPad может оказаться самым простым способом начала работы с MSP430, особенно для не имеющих опыта работы микроконтроллерами. В статьях руководства будет использоваться LaunchPad, что бы научить вас основным понятиям и особеннстям MSP430.

Программаторы

Отладчик/программатор MSP430 официально называется Flash Emulation Tool(FET). Отладчик/программатор служит двум целям: он записывает программу в MSP430, а также может использоваться для ручного контролирования чипа, необходимого для отладки программы(см. описание отладки в разделе Компилятор).

У TI есть два вида подключения программаторов. Вы можете использовать 4-х проводной JTAG, которому необходимо четыре контакта MSP430 для записи программ в память чипа, или же можно использовать 2-проводной (Spy-bi-wire, или SBW), которому необходимо 2 контакта. 4-проводной JTAG совместим с любыми MSP430, но SBW подходит только к некоторым из них. Возможно вы подумали что SBW подходит только некоторым маленьким и слабеньким чипам, на самом деле TI встраивает поддержку SBW в новые и мощные чипы, например MSP430x5xx. (Список поддерживаемых чипов можно найти в slau157s. Загляните в Table 2-1.) Реальным недостатком использования SBW является только скорость программирования; SBW работает примерно в десять раз медленней чем JTAG. Тем не менее, программы для MSP430 как правило очень маленькие, зачастую меньше 2кб в размере. Если вам действительно важно время то скорость программирования и отладки не должны сильно повлиять на процесс разработки.

Стандартный TI FET подключается посредством USB, также доступен и старенький последовательный порт. Этот программатор/отладчик может программировать посредством JTAG или SBW используя 14 (2x7) контактный разъём. Другие компании иногда делают клоны программатора от TI, частенько по более низкой цене.

Если вас устраивает SBW, тогда есть более дешёвые вариант. Система TI eZ430 имеет FET интерфейс в форм-факторе USB-стик USB-стик (фото здесь). К сожалению контакты подключения очень близки к компьютеру, так что отлаживаемая плата должна находится поблизости или же вы может придумать удлинитель. (На заметку, SBW подкючается по 2 проводам, но MSP430 помимо этого нужно питание, и главное программатор/отладчик может давать энергию. Таким образом необходимо ещё два контакта для питания. Вот мы и емеем минимум, который для JTAG составляет 6 контактов.)

LaunchPad поставляется с встроенным Spy-bi-wire программатором. Также данная плата может быть использована для внешнего программирования MSP430, имеется 6 контактов необходимых для этого — это питание, SBW и ещё 2 дополнительных контакта для подключения USB.

Компилятор

Два профессиональных компилятора для MSP430 также доступны их бесплатные версии;IAR Systems и Code Composer Studio. В бесплатных версиях ограничивается только максимально возможный размер кода(4кб для IAR, 16кб для CCS), но для большинства микроконтроллеров и этого будет достаточно. Для программ побольше можно приобрести полную версию или же воспользоваться mspgcc компилятором с открытым исходным кодом. Но для целей урока мы будем использовать Code Composer Studio. Те кто предпочитают компилятор IAR могут пользоваться им без особых трудностей.

Одним из наиболее важных инструментов для разработки является интерфейс работы с отладчиком. IAR и CSS поставляются со встроенным отладчиком, но пользователям mspgcc понадобится для отладки mspdbg. Функция отладки позволит вам постепенно выполнять код и посмотреть какие изменения происходят в настройках и конфигурации MSP430 в конкретный момент времени, а также отладчик подскажет правильно ли работает устройство и покажет содержимое памяти и регистров. Вскоре мы рассмотрим подробнее эффективное использование отладчика.

Питание

LaunchPad питается через USB; это же питание доступно при использовании внутрисхемного отладчика/программатора(FET). Если вы захотите что бы ваше устройство работало автономно, тогда вам нужно задуматься над самостоятельным источником питания.

MSP430 устройство с ультра-низким энергопотреблением, и поэтому его можно запитать от обычных батареек. MSP430 будет хорошо работать в диапазоне напряжений от 1.8V до 3.6V, однако для выполнения перепрограммирования необходимо напряжении выше 2.2V. Помните, что скорость работы чипа также зависит от напряжения питания: несмотря на то что предельная частота составляет 16 MHz, но при напряжении в 1.8V — MSP430F2001 не сможет работать быстрее 6MHz. Следующий рисунок выдержка из даташита на MSP430F2001, показывает влияние напряжения питания на частоту работы.

power-vs-freq


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

Помимо использования батареек, существует возможность в получении энергии вашим устройством от бытовой сети через трансформатор и стабилизатор (о стабилизаторе будет сказано далее). Возможно, вас заинтересует питание устройств от солнечных батарей или других нестандартных источников.

Вернёмся к Руководству

Это руководство будет использовать TI LaunchPad совместно со встроенным в него SBW, для того что бы объяснить особенности работы с MSP430 и его эффективное использование. Примеры будут запускаться при помощи среды разработки CCS v4. Если у вас есть эти два компонента(общей ценой в 4.30$!), тогда вы уже имеете все необходимое для начала. Если вы счастливый обладатель другого инструмента программирования или отладочной/экспериментальной платы, не стесняйтесь использовать и его, всё что будет в руководстве будет легко модифицироваться под любую платформу основанную на MSP430. Когда же мы вылезем за пределы LaunchPad, мы несколько неплохих идей как это осуществить дёшево и чисто. Зная основы, вы должны быть в состоянии спроектировать любые системы, в которые вы сможете поместить и запрограммировать микроконтроллер MSP430.

Данный текст является моим переводом Tutorial 01: Getting Started. Пишите коментарии и замечания по переводу, а также замеченные ошибки. Спасибо _YS_



Сегодня, уважаемый хабрапользователь, я постараюсь заполнить некоторый пробел, образовавшийся в статьях об MSP430, а именно азы и подход к программированию устройств на данном микроконтроллере.
Эта статья прежде всего направлена на новичков, поскольку я буду рассматривать ряд достаточно простых задач, таких как работа с SPI, мигание лампочкой и отладка в proteus.

Введение


В данной статье будет рассмотрено устройство, в основу которого легла отладочная плата eZ430-RF2500. На плате находится микроконтроллер MSP430F2274 и беспроводной модуль CC2500, который, надо заметить, не будет рассмотрен далее.
Моим коллегой, Соколовым С. А., была изготовлена небольшая надстройка для этого отладочного комплекта, она присоединена ко всем выводам. На надстройке расположен акселерометр LIS331DLH, с которым мы и будем взаимодействовать по SPI.

Должен заметить, что устройства STMicroelectronics, работающие по SPI, очень похожи и, соответственно, работа с ними будет выглядеть примерно также.

Что нам потребуется

Среда разработки

Для начала нужно скачать и установить среду разработки и компилятор. На сегодняшний день существует три варианта — Code Composer Studio, IAR Embedded Workbench for TI MSP430 и mspgcc.
Я буду использовать Workbench KickStart Edition. KickStart бесплатный, он имеет ограничение по количеству кода, но для изучения этого более чем достаточно.

Средство отладки

Если у вас нет под рукой осциллографа или логического анализатора, то часто возникают сложности, связанные с непониманием того, что же на самом деле происходит в вашем устройстве. Понять причины того, почему же устройство отказывается работать часто помогает Proteus.
В нём можно найти очень многие микроконтроллеры MSP430. К сожалению MSP430F2274 в Proteus не оказалось, но имеется аналог — MSP430F2272, его и будем использовать.

Приступим к написанию кода

Создание проекта
Работа с портами

Первое, что стоит освоить в микроконтроллере — это работа с портами. Давайте рассмотрим небольшой пример.

void main ( void )
<
WDTCTL = WDTPW + WDTHOLD ;

BIT2 ;
P1REN | = BIT2 ;

P1DIR | = BIT1 + BIT0 ;

while ( true )
<
if ( P1IN & BIT2 )
<
P1OUT | = BIT1 ;
P1OUT & =

PxDIR отвечает за направление порта 1. Когда конкретный бит данного регистра установлен в 0, соответствующий пин работает на вход. И наоборот, если соответствующий бит установлена в 1, то пин работает на выход. В примере фигурируют 3 пина: P1.2 — кнопка, P1.0 — красный светодиод, P1.1 — зеленый светодиод.

PxREN включает внутренний резистор подтяжки. Кнопка замыкает пин на землю, и, соответственно, переводит его в состояние нуля. Когда кнопка не нажата пин ни к чему не подключен и для обеспечения логической единицы на нём требуется подключить его через резистор к питанию, что и делает регистр P1REN.

PxIN и PxOUT содержат в себе состояние пинов порта. Устанавливая ноль или единицу в регистр PxOUT мы меняем напряжение на лапке микроконтроллера, тем самым включая и выключая светодиод. Читая конкретный бит из регистра PxIN мы получаем логический сигнал, который сейчас подан на пин.


PxSEL выбирает функцию пина. В datasheet на изображении микроконтроллера функции обычно указывают через знак «/».

Например на рисунке P2.7 работает как обычный пин в случае, если P2SEL имеет 0 в соответствующем разряде. По умолчанию, в данном случае, там установлена единица, что означает, что эта лапка предназначена для подключения внешнего часового кварцевого резонатора.

Константы BIT0..BITF содержатся в файле msp430f2274.h и представляют собой 16-ти разрядные слова в заданном разряде которых содержится 1, все остальные разряды содержат 0.

Надо заметить, что файл msp430f2274.h содержит много полезной информации. Там находятся все константы контроллера с комментариями на английском.

В примере используются побитовые операции Си, «|=» установит соответствующий значению справа бит в регистре слева в единицу, а «&=

» напротив установит его в 0.

Работа с SPI

unsigned char spi ( unsigned char data, unsigned char dataEx = 0x00 ) ;

void main ( void )
<
WDTCTL = WDTPW + WDTHOLD ;

P1DIR | = BIT0 + BIT1 ;
P1OUT & =

P3SEL = BIT1 + BIT2 + BIT3 ;
P3DIR | = BIT0 ;
P3OUT | = BIT0 ; // Отключаем CC2500 (устанавливаем 1 на CS)

BIT7 ;
P2DIR | = BIT6 + BIT7 ;
P2OUT | = BIT6 ; // Отключаем датчик температуры (тоже подключен к SPI)
P2OUT | = BIT7 ; // Отключаем акселерометр


// Конфигурируем SPI
UCB0CTL0 | = UCMSB + UCMST + UCSYNC ;
UCB0CTL1 | = UCSSEL_2 ;
UCB0BR0 = 0x02 ;
UCB0BR1 = 0 ;
UCB0CTL1 & =

if ( spi ( 0x8F ) == 0x32 )
<
P1OUT | = BIT1 ; // Красный светодиод
>
P1OUT | = BIT0 ; // Зеленый светодиод
>

unsigned char spi ( unsigned char data, unsigned char dataEx )
<
unsigned char RX ;

BIT7 ; // Включаем акселерометр

while ( ! ( IFG2 & UCB0TXIFG ) ) ; // Ожидаем готовность буфера отправки
UCB0TXBUF = data ;
while ( ! ( IFG2 & UCB0RXIFG ) ) ; // Ожидаем готовность буфера приёма
RX = UCB0RXBUF ;

while ( ! ( IFG2 & UCB0TXIFG ) ) ;
UCB0TXBUF = dataEx ;
while ( ! ( IFG2 & UCB0RXIFG ) ) ;
RX = UCB0RXBUF ;

В примере запрашивается значение регистра по адресу 0x8F, там содержится код, который идентифицирует устройство. Этот код указан в datasheet. Это позволяет убедиться в том, что обмен данными произошел. В случае успеха включаем красный светодиод.
Соответственно все остальные устройства подключенные к SPI необходимо отключить от интерфейса. Для этого CS на них устанавливается в единицу.

Заключение

В следующий раз постараюсь рассказать подробнее про работу с LIS331DLH, добраться до прерываний, поработать со встроенным в программатор мостом USB-UART и рассказать немного про watchdog.

Целью данной статьи является помощь в начале освоения микроконтроллеров MSP430 фирмы Texas Instruments.

Была сделана попытка систематизировать действия, которые позволят минимальными усилиями сделать первые шаги в освоении данного типа микроконтроллеров, не перегружая при этом специфичными и иногда трудными (если не сказать отталкивающими) сведениями. Статья не претендует на полноту обзора указанных микроконтроллеров, а лишь позволяет сделать первые шаги на пути их освоения.

Преимущества MSP430:

1. Очень широкая линейка для практически любых задач.

2. Очень широкий ряд корпусов, от DIP до очень мелких типа pqfp.

Весь доступный ряд можно посмотреть с помощью удобной странички от TI:

mc165-1.jpg

Перейдя по ссылкам слева и выбирая нужную серию попадаем в каталог:

Каталог микроконтроллеров MSP430

Где можно выбрать нужный себе кристалл по объему Flash-памяти, ОЗУ, наличию USART, АЦП, корпуса и т.д. Сразу скажу, что я не использовал корпуса типа DIP. Корпус типа SOIC легко распаивается на самодельную плату изготовленную по технологии ЛУТ. Достаточно стабильно у меня получаются платы и для корпусов типа PW (расстояние между ногами 0,65мм).

3. Сверхнизкое потребление питания (бывает ну крайне важно). На этом остановимся поподробнее ниже с примерами и цифрами.

4. Мне также например нравиться то, что для одного и того же типа корпуса расположение ног для разных серий и типов в пределах серии одинаково. Это дает возможность легко заменить один тип на другой без изменения печатной платы.

5. Немаловажно, что все типы микроконтроллеров можно бесплатно заказать у TI для освоения.

В качестве примера два разных MSP430 в одинаковом корпусе, MSP430f2619 и MSP430f149:

MSP430f2619 и MSP430f149

Для начала освоения выберем msp430f1232 или msp430f1222, они отличаются только объемом flash памяти и абсолютно идентичны по расположению ног. Я считаю этот микроконтроллер самым ходовым в радиолюбительской практике. Его плюсом можно также назвать наличие модели его младшего брата msp430f1121 (без usart) в Proteus.

На этой странице есть даташит, а по этой ссылке прочие документы.

Документация от TI имеет особенность (для тех кто уже знаком с микроконтроллерами от, например AVR ATMEL). В даташите указываются специфичные именно для этого камня особенности (количество памяти, наличие USART, электрические характеристики и т.д.). А описание регистров находятся в документе MSP430x1xx Family User's Guide (Rev. F) для серии msp430f1xx. Этот документ общий для всей серии.

Есть также настольные книги "руководство пользователя" и "рекомендации по применению".

А также примеры исходных кодов для семейства msp430f1x по ссылке.

Минимальная обвязка для включения микроконтроллера:

Минимальная обвязка для включения микроконтроллера

Сперва нам понадобятся макетка и программатор.

Пример моей макетки в файле к статье.

Печатная плата

Теперь небольшое отступление на предмет программатора.

Микроконтроллеры msp430 могут быть запрограммированы следующим образом:
4-х проводной JTAG (прошивка и отладка (очень удобно)) бывает LPT и USB.
2-х проводной JTAG, так называемый Spyi-Bi-wire (прошивка и отладка) только USB.
BSL - последовательный интерфейс (только прошивка). COM или USB-COM.

Не все микроконтроллеры могут быть зашиты всеми указанными программаторами. Смотреть надо в даташите на каждый камень. (Так рекомендуемые для начала работы MSP430F1232 можно шить только по 4-х проводному JTAGу или по BSL) .

Где взять программатор? Естественно можно купить. Есть дорого фирменные от TI или от Olimex, а также море китайских клонов.

Например BSL (хотя bsl можно сделать из любого шнурка от сотового в котором есть линии RTS и DTR) можно найти на AliExpress.
JTAG через USB
JTAG через LPT

Также на сайте TI можно почти за даром заказать LaunchPad:

LaunchPad

Который в своем составе имеет 2-х проводной JTAG Spy-Bi-Ware USB, но к сожаленью этот Spy-Bi-Wire есть не во всех камнях. Я поигрался. Мне не пригодилось (у меня практически не было камней с поддержкой spy-bi-wire) и я его отдал другу для освоения.

Также программатор можно сделать и самостоятельно. Где взять детали, смотрите в конце статьи.

В архиве программатор bsl.rar схема BSL программатора на переходнике USB-COM

В архиве программатор JTAG LPT-FET.rar схема и печатка для программатора LPT-FET. Необходимо отметить, что это упрощенная мной схема LPT-FET от Olimex

Схема LPT-FET программатора от Olimex

mc165-8.jpg

И ей требуется внешнее питание 3.3В от платы микроконтроллера. Плата получилась компактная и умещается в корпус DB-25.

Плата программатора

Для BSL программатора корпуса еще нет, но скорее всего это будет кусок кабель-канала нужного сечения.

Схема BSL программатора

mc165-11.jpg

BSL программатор

Выходные сигналы BSL программатора выведены на разъемы типа PLS. И отдельно выведено питание 3.3В (бонусом так сказать)

Оба типа мной собраны и работают.

Программировать через JTAG можно из среды разработки. А для программирования через BSL используется бесплатная и удобная программа от Kurt-а MSPFET. (Приложена в архиве или может быть скачана по ссылке)

Разработка кода может вестись в различных средах

Итак, допустим макетка сделана (нам в первую очередь нужно запаять стабилизатор на 3.3Вольта, светодиод на ножку P1.0 и разъем для LPT-FET. Кварц и прочее можно допаять позже). Программатор LPT-FET тоже.

Устанавливаем и запускаем IAR. Нажимаем create new project:

mc165-13.jpg

mc165-14.jpg

Даем свое название и вот окно проекта с типовым шаблоном.

Перво наперво правой кнопкой мыши кликаем по: название - debug -> option

mc165-15.jpg

Выбираем наш микроконтроллер

mc165-16.jpg

Меняем тип отладчика

mc165-17.jpg

Задаем, что у нас программатор lpt от olimex на lpt1

mc165-18.jpg

В окне сишного кода меняем весь на код из файла demo led.c, нажимаем F7 и видим:

mc165-19.jpg

Нажимаем зеленый треугольник и происходит заливка кода в микроконтроллер:

mc165-20.jpg

В открывшемся окне нажимаем "GO" старт программы:

mc165-21.jpg

В итоге, видим мигающий светодиод на плате.

Если у вас программатор типа BSL, то порядок действий следующий: в IAR выбираем нужный контроллер. Пишем код (например demo led.с).

Правой кнопкой по debug, option и ставим настройки в пункте linker как на рисунке:

mc165-22.jpg

Жмем F7. Запускаем MSPFET от Kurta. Открывается окно. Нажимаем Setup. Выбираем программатор BSL.

mc165-23.jpg

Ставим настройки для выходных ног, патча бутлодера (есть фишка, но нам сейчас не надо), скорости (тоже пока не надо) и т.д.

Для программатора сделанного из TUSB3410 настройки выглядят так.

mc165-24.jpg

В выпадающем списке выбираем нужный микроконтроллер.

Меню, открыть, и идем в каталог где лежит наш тестовый проект. В нем ищем каталог Debug. В нем ищем каталог EXE:

mc165-25.jpg

И там выбираем файл прошивки с расширением .a43:

mc165-26.jpg

Открываем. Нажимаем кнопку auto. Все процесс пошел. В случае удачных действий получаем картинку

mc165-27.jpg

И мигающий светодиод. (Если в настройках msp-fet от Kurta поставить галочку перегружать файл, то в дальнейшем нет необходимости повторять все действия. Изменил прошивку в IAR. Нажал F7. Зашел в MSPFET. Нажал auto.)

Теперь вкратце об особенностях микрконтроллеров msp430.

Супер гибкая система тактирования. В примере мы использовали внутренний генератор на 750кГц. Можно изменять его частоту регистрами настройки DCO (смотри руководство пользователя). Можно на ноги XIN XOUT повесить кварц часовой или высокочастотный (причем для часового кварца конденсаторы уже есть внутри камня и их номинал можно выбирать). В программе можно легко переключаться с одного источника тактирования на другой. В купе с разными режимами спячки можно обеспечить беспрецедентное снижение энергопотребления. Например, затактировать таймер от ACKL настроенный на 32768Гц от часового кварца. Разрешить прерывание от таймера. В прерывании разбудить ядро и настроить тактирование ядра на максимальную частоту, быстро сделать необходимые вычисления и уйти опять в глубокий сон. Подробное описание систем тактирования и режимов питания смотрите в руководстве пользователя.

Вот простой пример для повторения.

Зашьем код из файла norma.c

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

Зашьем код из файла LPM0.c

Включаем через миллиамперметр и видим, что ток потребления 50мкА. (Данные замеры проводились тестером на пределе 20мА, но в качестве иллюстрации сойдет). Особенно целесообразно применение данных микроконтроллеров в паре с ЖК экранами, где столь малое энергопотребление проявляется в полной мере.

Кстати такое низкое потребление порождает и соответствующие проблемы, связанные с паразитным питанием. Особенно если учесть, что для питания достаточно 1.8В. При довольно насыщенной схеме, контроллер стартует от всего подряд, вплоть до usart. Поэтому будьте внимательны. Часто, микроконтроллер не выходит на связь с JTAG, пока не отключишь внешние схемы (если не приняты меры по исключению паразитного питания и согласования уровней).

Что не очень понравилось в MSP430 0- так это неудобно реализованная работа с Flash памятью для хранения каких либо переменных пользователя. Так называемая память info разбита на сегменты по 128 байт и беда в том, что записать можно в каждую ячейку отдельно, но только один раз. Для изменения ранее записанной ячейки необходимо стереть весь сегмент и заново записать в нужную ячейку. Это приводит к тому, что перед изменением любой ячейки необходимо сначала прочитать в ОЗУ все используемые ячейки, изменить необходимую, стереть весь сегмент и записать из ОЗУ все во info flash.

Итак, первый проект Вы удачно сделали и зашили в контроллер. Что дальше?

Для освоения периферии мне очень помогли примеры использования MSP430 от TI, ранее упомянутые в статье. Много примеров и проектов есть в книге "рекомендации по применению" от КОМПЭЛ.

Если вы решили сами собрать программатор для MSP430, то я рекомендую зарегистрироваться на сайте TI с указанием своего реального номера телефона и может быть даже выдуманным местом работы.

Заказать в качестве бесплатных образцов следующие компоненты:
- MSP430F1222IDW корпус soic
- MSP430F1232IDW корпус soic
- преобразователь COM-usb tusb3410 (для bsl программатора)
- стабилизатор reg104-3.3 в корпусе SOT223-5

Привезут в течении недели, возможно перед этим позвонят и спросят на русском языке зачем Вам это необходимо. Тут уж каждый сам за себя. Придумывайте что хотите. Как привезут, позвонят еще раз из службы доставки. Именно поэтому должен быть правильный телефон и адрес.

Микроконтроллеры MSP430

Идем на официальный сайт Texas Instruments и качаем IDE (я остановил свой выбор на IAR Embedded Workbench for MSP430). Архив скачан, распаковываем и идем в диспетчер устройств. Там находим наш девайс и указываем вручную пути к файлам драйвера, которые находятся в скачанном архиве в папке Drivers. В случае успеха отладочная плата будет определяться в диспетчере устройств следующим образом:

Установка драйвера.

Первый этап позади, теперь необходимо установить IAR Embedded Workbench. Запускаем IAR и создаем новый проект. Для этого идем в Project->Create New Project. В появившемся окне выбираем следующее:

Создание нового проекта для MSP430.

Регистр PxDIR.

Регистр PxREN.

А этот регистр отвечает за включение/отключение подтяжки вверх/вниз. Тут больше и сказать то нечего.

Регистр PxOUT.

А вот здесь поинтереснее 🙂 Если вывод у нас работает в режиме выхода, то биты этого регистра отвечают за уровень сигнала на ножке контроллера. Пусть у нас P1.3 работает как выход. Если мы выставим четвертый бит регистра P1OUT в 1, то на выводе P1.3 появится сигнал высокого уровня (логическая единица), если 4-ый бит P1OUT равен 0, то и сигнал на ножке контроллера низкого уровня.

Регистр PxIN.

Регистры PxSEL и PxSEL2 отвечают за альтернативные функции выводов при использовании какой-либо периферии микроконтроллера.

Кроме всего вышеперечисленного, каждый пин портов 1 и 2 может работать в режиме внешнего прерывания. То есть при изменении сигнала на каком-либо выводе программа ускачет на обработку прерывания. Но мы пока не будем на этом останавливаться, а перейдем уже наконец-то к написанию кода программы. Осталось лишь разобраться, что и как подключено на нашей отладочной плате:

Схема отладочной платы MSP430 LaunchPad.

Видим, что кнопка висит на ножке P1.3, а светодиоды на P1.0 и P1.6.

Настройка проекта в IAR.

В этом же окне идем во вкладку Debugger и выбираем FET Debugger вместо Simulator. Теперь мы готовы прошивать контроллер!

Программирование MSP430.

В итоге при нажатии на кнопку мы должны увидеть горящий зеленый светодиод, а если кнопка не нажата, то горит красный. На этом, собственно, и все, с нашим первый проектом для MSP430 мы разобрались!


Фирма производитель MSP430 - Texas Instruments - (прародитель легендарной TMS32010), разложена в Cеверной Америке, и там микроконтроллеры MSP430 чрезвычайно популярны. Кроме того им удалось портировать на свою архитектуру фреймворк Arduino и дав ему название Energia.

Справедливости ради, должен сказать, что есть у TI как вполне "взрослые" DSP, например TMS320C5535, так и микроконтроллеры серии MSP432 на ядре ARM Cortex-M4, который как известно имеет блок DSP.

Кстати, MSP430 примечателен своей архитектурой PDP-11, которая была чрезвычайно популярной в 70-80 года, в том числе и в СССР. В нашей стране был большой модельный ряд вычислительной техники на этой архитектуре, в том числе и вполне приличные модели, например "Электроника МС 0585".

Если касаться технической стороны, то архитектура PDP-11 было популярна своей ортогональностью. В TI попытались максимально воссоздать оригинальную PDP-11 архитектуру на RISC ядре с гарвардской архитектурой. И желание "пощупать" возрожденную легенду было одной из двух причин подтолкнувших меня к MSP430. Второй причиной было низкое энергопотребление. Мне нужен был эталонный чип, сравнивая с которым можно было бы сказать, что тот или иной чип такой то фирмы лучше или хуже, или допустим "на уровне". STM например, тоже предлагает энергоэффективные чипы, и далеко не факт, что они хуже MSP430. Посмотрим - узнаем.


Итак заскочив в ближайший радио-магазин, я приобрел чип MSP430G2453IPW28 в TSSOP28 корпусе за 150 рублей. Здесь возможно следует провести небольшой ликбез по модельному ряду. Хорошая классификация по семействам есть в англоязычной википедии. Я же немного расскажу своими словами как я понял положение дел.

В рунете есть много публикаций по серии MSP430x1xxx. Как понимаю это первая основная линейка запущенная еще в 1999-м году. Это хорошие микроконтроллеры, среди которых есть и такие популярные как msp430f149, они выпускаются, продаются, но. они устарели. Актуальная сейчас линейка, это MSP430x2xxx. Хороший материал по различиям между линейками MSP430F1xxx и MSP430F2xxx можно почитать здесь:

Кроме основной линейки MSP430F2xx, в 2010 году TI выпустила "оптимизированную по цене" Value Line, линейку с бувкеным индексом G. Для продвижения новой линейки на рынке, TI запустила рекламную компанию по продаже отладочного комплекта начального уровня Launchpad по бросовым ценам 4.3USD c доставкой(!). При том, что доллар тогда стоил 28р. получился такой реальный "Arduino Killer". И большое число публикаций касательно Launchpad'а относится именно к тому периоду. Вскоре халява закончилась, ценник подскочил в три раза, и тема пошла резко на спад.

Предлагаю взглянуть на характеристики этого чипа:


На мой взгляд, выглядит как ATmega8, разве что питание 3.3Вольта. Однако замечу, что в отличии от ATmega8 чип содержит модуль jtag, загрузчик, а так же GPIO можно сконфигурировать как входы touch-сенсоров. Кроме того, система команд поддерживает аппаратное умножение, правда отсутсвует деление.

Первым делом нужно взглянуть на распиновку микросхемы:



Порты I/O здесь нумеруются не буквам, а цифрами: P1, P2 и т.д. Внешнее прерывание по одному на каждый порт, правда третий порт обошелся без него. Кроме jtag микросхему можно отлаживать через SBW-интерфейс. Интерфейсы SPI/I2C/UART объедены в один интерфейсный модуль USCI.

Прошивать чип будем через BSL(загрузчик). Часто можно прочитать, что BSL имеется в каждом чипе MSP430. ЭТО не так. Если в распиновке микросхемы нет ног с функциями BSL_receive/BSL_transmit, значит загрузчика там нет и его можно шить через jtag. В MSP430F20xx например, загрузчика нет. Зато в MSP430F2003 есть 16-битный сигма дельта АЦП ;) Еще один миф - микроконтроллеры можно бесплатно заказать для освоения. Чудес не бывает, физ.лицам ничего не шлют.

Хитрые китайцы приноровились продавать BSL программаторы для неопытных людей. На самом деле сгодится любой USB-TTL конвертор с выведеными линиями RTS/DTR/TX/RX. Если вы занимались Arduino наверняка у вас такой есть:


У меня такого не было, зато со времен Arduino-мании осталась плата CraftDuino v1.0 На котором соответствующие выводы от FT232RL были выведены:


Оставалось только вытащить чип с ATmega, пропаять штыревой разъем PBS и плата превращалась в обычный USB-TTL конвертер.

FT232RL <==> MSP430G2453
TX <===> BSL_receive (P1.5)
RX <===> BSL_transmit (P1.1)
DTR <===> RST/NMI
RST <===> TEST
Vcc (3.3V) <===> DVCC
GND <===> DVSS

Выглядит все это как-то так:


Но, повторюсь можно использовать любой другой USB-TTL или COM-TTL конвертер с линиями RTS и DTR

Найти программу-прошивальщик оказалось не простым делом. После некоторого времени безрезультативного поиска, нашел таки рабочий вариант здесь:

Сложность в том, что прошивки на чипе защищены паролем, и просто так ничего "для тестирования не считаешь". Поэтому сначала следует скомпилировать программу ;) Кроме того версии загрузчиков разные, а MSP430G2453 относительно новый чип.

Ок, забегая вперед, допустим, что заветный hex файл с прошивкой у вас уже есть.Тогда:

Предупреждение! Все описанные ниже действия выполнялись из WindowsXP. Как это будет работать в более поздних Windows, я не имею представления.

Скачиваем и распаковываем архив, что в конце приведенной выше статьи. Для прошивки понадобится программа MspFet.exe



В опциях нужно выставить настройки также так указано в статье: т.е. RST invert выставить в True, выбрать тип программатора BSL, свой порт, сбросить галочку "Reload file". После чего следует открыть файл с прошивкой:


Как я понял, загрузчик не имеет функции проверки модели чипа в отличии от avrdude. Поэтому здесь выставлен первый попавшийся чип с 8Кб flash-памяти.


Если при нажатии на кнопку "AUTO" не появится красных надписей, то значит прошивка прошла успешно.


Если же такие надписи появились, то NAK это в принципе не страшно, мне думается что просто нужно скорость подобрать, а вот " Synchronization error " это уже означает что программа "не видит" чип, и значит что-то вы сделали не так.

Ок. Последний момент который нужно разобрать это: "как программировать?"

Хорошая новость заключается в том, что архитектура MSP430 поддерживается GCC. Это значит высокое качество кода, гибкая настройка оптимизации, привычный набор инструментов включая GDB.

Плохая новость заключается в том, собрать тулчейн самостоятельно для меня показалась задачей практически невозможной. В смысле у меня собиралась, но при линковке все-таки вылетала ошибка. Проблема в системной библиотеке glibc. На сайте проекта библиотеки mspgcc висит надпись : обсолит(устарело) и дальше ссылка на сайт TI. На сайте же я библиотеки не нашел, только компилятор, который при сборке требует библиотеку.

Поэтому самое простое, это взять готовый тулчейн. Он содержится в пакете Energia и к счастью имеется 64-битная версия:

После распаковки, каталог hardware/tools/msp430 нужно просто скопировать в /usr/local, после чего все заработает.

Но прежде чем начать компилировать blink, предлагаю не отворачиваться от Arduino-подобной Energia. Думаете она не сможет скомпилировать скетч под наш микроконтроллер? Не знаю как насчет программы расчета эфемерид, но Blink она мне скомпилировала)

Если заглянуть в меню "Board" там есть платы на похожих чипах: msp430g2452 и msp430g2253.


Теперь, если текстовым редактором открыть файл: hardware/msp430/boards.txt, и добавить туда секцию:

то можно будет выбрать launchpad c нужным чипом:


Остается лишь загрузить скетч и нажать "скомпилировать":


Вуоля! И прошивка готовая лежит в каталоге /tmp/бла-бал-бла.cpp.hex

Осталось узнать, что это за такой RED_LED который мы научили мигать. Открыв файл hardware/msp430/variants/launchpad/pin_energia.h видим перед собой хорошо комментированный код:

Здесь 20-пиновый корпус, но в целом все понятно. RED_LED это пин P1.0

Ок. теперь попробуем то же самое сделать на Си. Вариант Blink для MSP430 на Си:

Здесь первым делом выключается Watchdog, т.к. в MSP430 он включен по умолчанию, а уже потом идет все остальное. На первый взгляд может показаться что ничего сложного нет, регистр на вход, регистр на уровень. Однако, если в AVR GPOI регистров для каждого порта было три, в STM8 их пять, то в MSP430 их девять!


Правда третий порт здесь "полевого образца", там РВВ поменьше. Вообще, по MSP430 очень рекомендую книгу: СЕМЕЙСТВО МИКРОКОНТРОЛЛЕРОВ MSP430x2xx. Архитектура. Программирование. Разработка приложений. Это перевод выполненный фирмой "Компэл" официального User's Guide.

Ну здесь вообще красота, AVR нервно курит в сторонке ;) Запись константы в ячейку памяти одной командой, никаких промежуточных манипуляций с регистрами! BSET? Нафиг! XOR работает напрямую с РВВ! Это же ортогональная система команд! Волшебный цикл из пяти команд? Здесь он занимает всего цетыре!

Красота! Одним словом, мне здесь все нравится)

Для IAR текст программы практически не отличается:


Но там в свойствах линкера нужно указать, формат выходной прошивки Intel. После чего программу можно компилировать в hex файл и затем подхватывать его флешером.

Последняя момент, о котором осталось упомянуть: если кого-то при рассматривании распиновки микросхемы смутил знак инверсии над RST, то совершено справедливо. При подключении микроконтроллера на RST нужно подавать положительный потенциал, т.е. DVCC.

Читайте также: