Семейство микроконтроллеров MSP430: опыт применения
Texas Instruments широко известна своими цифровыми сигнальными процессорами, занимающими лидирующие позиции в целом ряде отраслей. Однако фирма выпускает также и весьма примечательное семейство микроконтроллеров, малоизвестное в среде отечественных разработчиков. В то же время характеристики этих контроллеров оптимальны для создания высокопроизводительных устройств, работающих от батарейного питания. Автор приводимой ниже статьи делится своим опытом использования микроконтроллеров семейства MSP430, утверждая, что они гораздо лучше, чем это может показаться после первого поверхностного знакомства с ними.
Первое знакомство с семейством микроконтроллеров MSP430 фирмы Texas Instruments произошло у нас достаточно случайно, во время визита делегации немецкой фирмы Elster в 1995 г.
Один из ее членов был на стажировке во Фрайзинге (Германия), где расположен Европейский центр фирмы TI. Разговор, выйдя за официальные рамки, коснулся разработки перспективных электронных устройств и состояния рынка современных МК. Сначала энтузиазм, высказанный гостем по поводу возможностей нового семейства МК, был нами воспринят достаточно спокойно — к этому времени разработчики отдела успели поработать с целым рядом микроконтроллеров — сначала с К1-20 (был такой хит сезона — законченный контроллер на базе микропроцессора КР580ИК80), затем с К1816ВЕ35 и с КР1816ВЕ31. В основном к этому времени мы уже сформулировали для себя те характеристики и особенности, которые хотелось бы видеть в применяемых нами МК. К этому же времени относится и впервые появившаяся для нас возможность свободного выбора в своих разработках импортных электронных компонентов.
В какой-то степени мы уже успели воспользоваться этими возможностями, попытавшись применить в своих новых разработках МК фирмы Atmel (версия MCS51 c FLASН-памятью), а также PIC-контроллер фирмы Microchip. Но несмотря на то что к этому времени у каждого разработчика прикладного программного обеспечения накопился большой объем оттестированных и работающих программ для MCS48 и MCS51, общее мнение было таково — 8051+FLASН-память не дает ничего принципиально нового (разумеется, за исключением возможности быстрой отладки программ на плате-прототипе). Ну, а PIC-контроллер как-то сразу отпугнул от себя некоей архаикой структуры, явной слабостью языка и примитивностью (на то время) возможностей.
Действительно, все устройства, разрабатывавшиеся на нашем предприятии, имели цифровую индикацию в том или ином виде, узлы ввода/вывода и АЦП. Они должны были работать с частотными или импульсными входными сигналами, плюс (и это практически обязательно) в условиях сильных помех. Этот стандартный набор функций был нужен любому разработчику. Поэтому шлейф периферийных устройств в виде набора дополнительных дискретных компонентов для реализации данных функций являлся некоей неотъемлемой принадлежностью практически всех наших устройств. Естественно, что при этом вопрос о батарейном питании разрабатываемого устройства практически не ставился, в первую очередь из-за большого количества микросхем периферийных устройств.
Первое знакомство с MSP430 состоялось, естественно, по фирменным руководствам — а это четыре книги: архитектура, описание языка, описание отладочных средств и примеры применения процессоров данного семейства. И довольно неожиданно для нас, скептиков, выяснилось, что контроллеры этого семейства отвечают практически всем требованиям к МК и, более того, зачастую еще и превосходят их!
Действительно, как должен относиться разработчик, воспитанный на стереотипах 8-битного х51 к тому, что ему предлагается 16-битный RISC-процессор, имеющий на кристалле ОЗУ (256 или 512 байт) и ПЗУ (8 или 16 кбайт), а к ним вдобавок еще и 14-разрядный АЦП с входным мультиплексором, набором из нескольких универсальных 8- и 16-битных таймеров, встроенного аппаратного контроллера ЖК-индикатора, работающего практически с любым типом цифрового ЖКИ? Если к этому добавить еще и встроенный Watchdog Timer, а также возможность работать от внешнего кварца с частотой 32 кГц, программно устанавливать внутреннюю тактовую частоту процессора до 5 МГц, 16 векторов прерываний и 5(!!) режимов пониженного энергопотребления, позволяющих уменьшить ток потребления устройства с 10 мА до 0,2 мкА, не выключая основные функции МК, то станет понятен тот интерес, с которым мы восприняли это устройство.После этого обилия аппаратных возможностей уже как очевидное и обязательное было воспринято, что ассемблер данного устройства достаточно близок к ассемблеру Intel, но в связи с большими возможностями ядра процессор поддерживает 7 режимов адресации, причем ресурсы процессора доступны в любом режиме.Очень удобным оказался SIM-отладчик, позволяющий запускать и отслеживать программу на компьютере, причем многооконный интерфейс позволяет в процессе выполнения и отладки программ отслеживать (и корректировать при необходимости) содержание всех внутренних ячеек и регистров, а встроенный LCD-редактор позволяет создавать и подключать в разрабатываемый проект любой необходимый ЖКИ-индикатор, показания которого также отображаются в окне на экране компьютера.
Встроенный в SIM-отладчик линкер позволяет подключать в проект файлы с расширением .asm и obj, после чего генерируется загрузочный модуль, который может быть записан в кристалл.
Программирование кристалла возможно как отдельно, так и после распайки его на плату, так как процедура программирования осуществляется по полноценному каналу JTAG.
Добавьте к этому еще наличие программных средств в виде Паскаль- и С-компиляторов, библиотеки с плавающей запятой, поддерживающей 32- и 48-битовый формат данных, и станет понятно, что MSP430 представляет собой пример хорошо документированного проекта внедрения нового продукта, позволяющего потенциальному потребителю в максимально короткие сроки перейти на новый тип процессора, не теряя навыков, полученных раннее.
Причем, если разработчик привык отлаживать «железо» на макете, у него есть возможность это делать, используя перепрограммированные кристаллы с УФ-памятью. Понятно, что с позиций сегодняшнего дня можно сказать, что это не лучшее решение — более привлекает вариант со встроенной FLASН- или FRAM-памятью на кристалле.
Приведенные выше особенности МК позволяют довольно быстро и, главное, без особых затрат перейти на новый тип процессора, в особенности сейчас, когда на сайте фирмы ТI www.ti.com в директории свободного доступа находятся все указанные программные средства, за исключением C-компилятора, который разработан фирмой JAR (Швеция) и стоит порядка 4000 $. Однако для всех желающих на сайте www.caxapa.com бесплатно распространяется С-компилятор, обладающий даже большими возможностями и, что не менее важно, поддерживающий формат данных TI и позволяющий, в отличие от продукта JAR, пользоваться фирменным SIM-отладчиком.
В итоге, начиная с 1996 года нами довольно быстро (и с коммерческой точки зрения удачно) были проведены разработки целого ряда разноплановых изделий на базе нового МК. К ним следует отнести цифровой датчик давления ДДЦ, электронный блок для расходомера РСТ, теплосчетчики ТС-06 и ТС-07, электронный расходомер ИПРЭ-7, ограничитель нагрузки для кранов ОНК-120, ОНК-140, ОНК-180, системы учета алкогольной продукции АЛКО-1 и АЛКО-2, бортовая система контроля для тепловозов, система контроля параметров нефтедобычи «Ультрафлоу».
Опыт разработки и эксплуатации столь разноплановых устройств дал интересные результаты.
Во-первых, несмотря на относительно невысокую тактовую частоту МК (а некий снобизм у разработчика всегда присутствует — ну что за быстродействие на 5 МГц?), мы ни разу не столкнулись с непреодолимыми ограничениями по времени реакции системы при работе в реальном масштабе времени.
Во-вторых, однажды возникшая необходимость в энергонезависимом архиве решилась достаточно просто: внешняя FLASH-память с каналом I2С. Это же позволило практически снять ограничения на объем памяти МК — достаточно переписать во FLASH все необходимое, например, в виде таблиц, текстов, констант и др., освободив тем самым память программ МК, а быстродействие может быть сохранено при использовании быстрой FRAM-памяти.
В-третьих, схема реализации устройств становится все более очевидной, если не сказать примитивной — максимальное использование программных и аппаратных средств МК приводит к резкому сокращению внешнего обрамления: например, электронный блок расходомера ИП3, выполненный на 51-м процессоре, содержал 32 внешние микросхемы, в то время как в аналогичном блоке ИП7, реализованном на MS430P315, их было ровно вчетверо меньше.
В-четвертых, весьма приятным сюрпризом явилась очень хорошая помехозащищенность МК: при соблюдении элементарных требований к схеме и разводке печатной платы «подвесить» МК путем генерации сильных помех оказалось невозможно. В крайнем случае, если уровень помех уж совсем выходил за разумные рамки (а в их моделировании у нас был огромный опыт — мы много работали с бортовой аппаратурой, разрабатывали системы с ЧПУ, например, для Ивановского станкостроительного завода), МК просто перезапускался без потери данных. Замечу попутно, если в систему добавить простой трехвыводный супервизор, можно обеспечить дополнительно 100 %-ю защиту и внешней FLASH-памяти, которая, как правило, не очень-то переносит подобные экстремальные режимы работы и вполне может перейти в режим записи данных.
Такую высокую помехозащищенность МК нельзя объяснить только низким потреблением. Разработчики со стажем могут подтвердить, что микросхемы серии 564, выполненные по КМОП-технологии и к тому же достаточно низкочастотные, ловили практически любую помеху, портя всем кровь и создавая массу проблем в эксплуатации.
Мы с определенным нетерпением ожидали появления проанонсированной фирмой TI серии МК с FLASH-памятью, ибо любому очевидны ограничения, налагаемые ОТР-структурой памяти на возможность внесения корректив в программу, особенно в условиях серийного производства. Поэтому полученные в середине 2000 г. первые образцы МК M430F1121I и P430F149I были немедленно протестированы.
Скажу сразу, это уже не просто MSP430+ FLASH. Изменения коснулись целого ряда узлов. Так, объем ОЗУ и ППЗУ вырос до 1 и 60 кБ. При питании 3,6 В удалось «разогнать» процессор до 8 МГц, наличие аппаратного 16ґ16 битного умножителя, выполняющего эту операцию за 1 такт, стало стандартным, появилась возможность, используя внутренний делитель тактовой частоты, генерировать сетку частот для работы различных внутренних устройств. Большим доработкам подвергся АЦП. С одной стороны, он стал 12-разрядным вместо 14-разрядного, что, естественно, не доставило радости. Но оказалось, что не так уж все плохо — появилась возможность программировать Uоп АЦП каждого канала в пределах от 0 до Un. Кроме этого, допустимо инвертировать входной сигнал, тем самым получая измерение двуполярного входного напряжения (вот он, 13-й разряд). Появилась внутренняя схема выборки-хранения, а дополнительный делитель частоты позволяет выбрать оптимальную относительно входного сигнала частоту преобразования АЦП. Наличие же входного мультиплексора 1ґ8 на входе АЦП разумеется само собой. Кроме этого, появилось маленькое, но полезное дополнение в структуре АЦП — компаратор контроля Uпит, что крайне важно при батарейном питании прибора.И наконец, FLASH-память. Запись в нее производится по отработанной ранее цепи — каналу JTAG. Однако наличие во FLASH-памяти BOOT LOADER-секции позволяет заносить информацию в память по каналу RS-232 напрямую! Трудно переоценить такую возможность при серийном производстве МК- устройств.Не удалось, правда, обойтись без потерь — из структуры исчез контроллер ЖКИ, но, по информации ТI, такой вариант МК будет в дальнейшем выпущен.
В общем, фирма TI в данном случае действует в полном соответствии с руководствами по маркетингу — потребитель, получив новое устройство, должен быть приятно удивлен тем обстоятельством, что за свои деньги он получил больше, чем ожидал.
Первое же устройство — допплеровский измеритель скорости для газового расходомера, реализованный на P430F149I, позволил в максимальной степени реализовать положительные особенности новой модели МК: написание программ на С, отладка аппаратной части на плате-прототипе с перезаписью программ по каналу JTAG, быстрый расчет дисперсии для УЗ-сигналов, введение калибровочных коэффициентов при поверке прибора непосредственно в нулевую страницу FLASH-памяти с внешнего компьютера. Поэтому, оценивая новинку, можно сказать, что фирме удалось не только сохранить все то положительное, что было достигнуто при выпуске серии MSP430, но и сделать важный шаг в продвижении своей продукции на рынке электронных компонентов.
Несколько слов хотелось бы сказать о поставщиках электронных компонентов. Сейчас недостатка в поставщиках, когда только по Москве их свыше 200, естественно, нет. Однако лишь немногие из них занимаются не только поставкой компонентов, но также, используя свои прямые связи с производителями комплектующих, помогают решать потребителю технические и иные вопросы, возникающие в процессе разработки и применения новых компонентов.
Нам повезло: официальный представитель TI — фирма «Сканти-Рус» (www.scanti.ru), занимает именно такую позицию. Так, они помогли нам решить множество вопросов по применению MSP, организовав консультации фирмы-изготовителя. Они обеспечивали нас на всех этапах новейшими данными в интересующих нас областях, помогали в комплексных поставках компонентов в требуемые нам сроки и, наконец, совместно с нами рассматривали и находили приемлемые для обеих сторон возможности оплаты за поставленные нам комплектующие. Скажу сразу, немногие из фирм-поставщиков берут (а главное, хотят брать на себя) подобные функции и готовы до такой степени индивидуально работать с клиентами. Может быть, еще и поэтому мы не ограничились применением только MSP430, но постепенно во многом перешли на комплектацию фирмы ТI, и не жалеем об этом.
Итак, подведем итог.
Если вы считаете, что 8051 — это не предел возможностей, и не хотите останавливаться в своем профессиональном развитии, попробуйте применить MSP430, и вы не будете разочарованы.
Если прибор, который вы разрабатываете, должен работать в сложных и насыщенных помехами условиях, примените MSP430, он поможет решить ваши проблемы.Не мучайте себя ожиданиями чрезмерных сложностей при переходе от одного типа процессора к другому — ведь для квалифицированного программиста важен не сам текст программы, а выверенность ее алгоритма, а остальное, особенно при использовании языков высокого уровня, достаточно очевидно.Опыт общения с западными разработчиками показывает, что никто из них не исходит печалью по поводу судьбы процессора 8051 и не цепляется за него, как за последнюю надежду.
P.S. Еще раз прочел статью — очень похоже на рекламу армии времен холодной войны: «Если хочешь прожить жизнь, полную приключений, побывать в разных странах, познакомиться со многими интересными людьми и… убить их всех — поступай в армию США».
И все же попробуйте применить MSP430…