Микроконтроллеры MSP430х11х1: рояли в кустах

№ 6’2003
Среди моих разработок есть одна, реализация которой застряла из-за невозможности подобрать необходимую элементную базу. Опуская подробности, скажу, по сути, это матрица светоидов 5×7, размером 5,5×4,2×3,5 мм (размер имеет значение!), к которой должно подходить не более 3 проводов (питание и данные).

Среди моих разработок есть одна, реализация которой застряла из-за невозможности подобрать необходимую элементную базу. Опуская подробности, скажу, по сути, это матрица светоидов 5×7, размером 5,5×4,2×3,5 мм (размер имеет значение!), к которой должно подходить не более 3 проводов (питание и данные). Все застопорилось на выборе управляющей схемы. Малые объемы производства не позволяли применять бескорпусные микросхемы. Решение пришло неожиданно, во время посещения выставки «Экспо-Электроника 2003». Подбирая свежую техническую литературу, я поинтерисовался наличием компакт-дисков с описанием продукции Texas Instruments. Пока мне искали диски, я разговорился с менеджером фирмы. Среди прочих вопросов был и тот самый, «больной».

Мне показали буклет TI по микроконтроллерам MSP430, где на развороте скромно, в верхнем углу, разместился рисунок 24-выводного корпуса размером 4×4 мм! Оказалось, что на третий квартал 2003 года запланирован выпуск младших представителей семейства — MSP430x11x1 в новых корпусах (рис. 1). Потом, в спокойной обстановке изучая литературу по этим микроконтроллерам, я пришел к выводу, что контроллеры MSP430 — настоящая находка. Судите сами.

Семейство MSP430

Все представители семейства были разработаны в основном для применения в системах с батарейным питанием. Но это не означает, что эти контроллеры нельзя использовать в других сферах. Наличие интегрированной периферии, в частности АЦП, ШИМ и компараторов, а также сверхнизкое потребление мощности делает их пригодными для использования в преобразователях, сетевых блоках питания, интеллектуальных датчиках, в качестве управляющих контроллеров, контроллеров клавиатур, драйверов матричных ЖКИ и контроллеров светодиодных индикаторов. Правда, из-за небольшого выходного тока портов (12 мA), в последнем случае их применение ограничено. Потребление мощности этими контроллерами очень невелико: 0,1 мкА — в «спящем» режиме с удержанием содержимого ОЗУ; 0,8 мкА — в режиме работы часов реального времени; 250 мкА — при выполнении инструкций в активном режиме. Максимальный ток, потребляемый этими контроллерами при максимальной тактовой частоте 8 МГц, напряжении питания 3,3 В и всей включенной периферии составляет не более 4,5 мА для самых архитектурно сложных устройств, для остальных же членов семейства этот ток не превышает 2,8 мА. Для приложений с повышенными требованиями к потреблению энергии и некритичных к производительности, потребляемый ток может быть снижен вплоть до 1 мкА и ниже. Причем использование «спящих» и других режимов экономии энергии позволяет достичь еще более впечатляющих результатов.

Все контроллеры семейства имеют 16-разрядный процессор с RISC-подобной архитектурой, позволяющей выполнять регистровые операции за 1 машинный цикл. Фон-неймановская архитектура (с раздельной шиной адреса и данных) в сочетании с гибкой системой распределения тактовых импульсов от нескольких генераторов позволяет разработчикам использовать периферию с ресурсами ядра при различных скоростях работы. Еще одним эффектом применения этой архитектуры является то, что память программ, данных и периферия расположены в едином адресном пространстве. В результате для доступа к кодам операций, данным и к периферии могут использоваться одни и те же инструкции, даже имеется возможность выполнения команд из оперативной памяти.

Контроллеры выпускаются с несколькими типами памяти программ: Flash, масочной, с УФ-стиранием и однократно программируемой, емкостью от 1 до 60 кбайт. Одна и та же версия контроллера выпускается с несколькими типами ПЗУ программ под разными обозначениями.

Те самые

Теперь, после краткого представления семейства, следует подробно рассказать о контроллерах — обладателях новых корпусов. Те разработчики, кому необходим встроенный многоканальный АЦП или «фирменный» последовательный порт, могут успокоиться — в этой группе такая периферия не предусмотрена. Правда, тут есть свой «рояль в кустах». Во всех контроллерах есть встроенный компаратор А и таймер-счетчик А, позволяющие реализовать АЦП приемлемой точности. Программное обеспечение для измерения напряжения, тока, сопротивления, а также емкости с помощью этих устройств уже создано. А последовательный порт со скоростью передачи данных от 75 до 115200 бод создается на выводах Р1.1 и Р2.2 с помощью таймера А и готового программного модуля, предлагаемого TI. Ведь все регистры захвата-сравнения таймера А имеют аппаратную поддержку для реализации последовательного порта (см. таблицу).

Таблица. Фрагмент сводной таблицы по MSP430 (лишние колонки не убирались, чтобы показать, что есть у других представителей этого семейства)

Корпуса представлены на рис. 3

Как видно из таблицы, обладатели самых маленьких корпусов имеют один и тот же минимальный из возможных набор устройств и отличаются только типом ПЗУ и размером ОЗУ и ПЗУ. Питаются они постоянным напряжением от 1,8 до 3,6 В, при этом потребляя в активном режиме 160 мкА на частоте 1 МГц (Uпит = 2,2 В), в режиме останова — 0,7 мкА, в «спящем» режиме с сохранением содержимого ОЗУ — 0,1 мкА. Переход из «спящего» в рабочий режим происходит за 6 мкс.

Система синхронизации контроллеров позволяет реализовать три источника синхропоследовательностей из двух независимых генераторов.

  1. Главный системный генератор (ведущий) MCLK;
  2. Вспомогательный системный генератор (ведущий) SMCLK;
  3. Внешний (ведомый) генератор АCLK.

Первый используется для синхронизации ЦПУ и системы, второй — для синхронизации периферийных модулей, третий служит источником синхропоследовательности LFXT1CLK, которая может использоваться для выработки всех синхросигналов, включая тактирование ЦП. Для его работы необходимо подключать внешние компоненты (резонаторы и т. д.), или подавать тактовые импульсы извне, через вывод XIN. Этот же генератор является источником тактовых импульсов для синхронизации внешних устройств. Система распределения тактовых импульсов позволяет использовать только один генератор, что удобно для реализации дешевых проектов с минимумом внешних компонентов или присоединения ведомых устройств. Система устроена так, что в ней при любых неполадках и сбоях присутствует синхросигнал DCOCLK, гарантирующий бесперебойное выполнение необходимых операций. После снятия сигнала сброса по питанию (POR) этот синхросигнал используется по умолчанию. Система с несколькими генераторами необходима для реализации часов реального времени, а также совместной работы процессора и периферии с разными скоростями, вплоть до остановки ЦП при работающей периферии. Для уменьшения потребляемой мощности такой вариант оказывается эффективнее, чем чисто программная реализация временных задержек, он также позволяет избегать лишней загрузки процессора и программной памяти. И, как следствие, — ничтожное потребление энергии и меньшая потребность в памяти программ.

Центральный процессор имеет RISC-ядро с шестнадцатью интегрированными регистрами. Благодаря такому построению, практически все операции оказываются межрегистровыми и исполняются за один цикл. Четыре из шестнадцати регистров зарезервированы под счетчик команд (PC), указатель стека (SP), регистр состояния (SR) и генератор констант (CG), служащий для получения наиболее часто используемых констант (–1, 0, 1, 2, 4, 8). Данная структура процессора в сочетании с очень простой системой команд, напоминающей систему команд микропроцессора К1801ВМ2, позволяет кроме основных эмулировать и дополнительные инструкции. Эти инструкции — всего лишь частные случаи использования встроенных команд, и они столь же эффективны, как и основные. Вся периферия контроллера имеет прямую адресацию и прямую связь с ЦПУ, что позволяет использовать для работы с периферией те же команды, что и для работы с памятью.

ПЗУ имеет блочную структуру. Такое строение необходимо для отключения неиспользуемых блоков с целью уменьшения потребляемой мощности. Блоки подключаются автоматически по мере переборки адресов. В ПЗУ программ все инструкции хранятся только в 16-битном формате, однако в ОЗУ инструкции могут записываться в виде 8- и 16-разрядных слов. Шестнадцать слов в нижней части ПЗУ в ячейках с адресами с 0FFFFh по 0FFE0h зарезервированы для векторов сброса и прерывания.

ОЗУ, как и ПЗУ, подключено к центральному процессору через две шины: адреса (MAB) и данных (MDB). Как было сказано выше, в ОЗУ можно размещать 16- и 8-разрядные данные. Кроме того, коды операций можно размещать и в оперативной памяти, так как для ЦПУ нет никакой разницы, откуда выбрать команду. Это свойство микроконтроллера очень ценно — увеличиваются возможности разработчика при отладке программ, а также есть возможность контекстной загрузки группы команд извне.

Вся периферия подключается к ЦПУ так же, как и память, по двум шинам — адреса и данных, и использует линии прерываний и другие линии управления. Для большинства периферийных устройств используются только 5 линий шины адреса. Шина данных для периферии используется в 8- и в 16-битовом формате. Только данные от 8-битной периферии преобразуются специальной схемой, подключаемой центральным процессором, в 16-битный формат.

Милливольтметр

Теперь настал черед «роялей в кустах». Предположим, необходимо сделать миниатюрный датчик напряжения милливольтового диапазона с последовательным каналом связи. Ни один из обычных корпусов не вписывается в заданные габариты, применение бескорпусных элементов отпадает, так как нет приспособлений для разварки выводов, да и серия слишком маленькая. Остается только этот новый корпус.

АЦП как такового в микроконтроллерах MSP430x11x1 нет. Но есть компаратор А. Из него и получается сколь угодно разрядный сигма-дельта АЦП с неплохими параметрами. Как? Об этом — ниже.

Особенностями сигма-дельта АЦП (в ранней литературе его называли АЦП с уравновешиванием или балансом зарядов) является отсутствие большого количества внешних компонентов, возможность применения более дешевых конденсаторов. Линейность у такого преобразователя выше, чем у АЦП многотактного интегрирования. Плюс ко всему этот преобразователь почти ничего не потребляет. Как раз для удаленного применения. Схема на рис. 5 демонстрирует именно этот случай.

Один из принципов, заложенных в этом преобразователе, — усреднение результатов измерения на длительном интервале. Это позволяет уменьшить погрешность, вносимую шумами. Работа преобразователя заключается в сравнении неизвестного напряжения Uвх с известным Uвых. Последнее получают следующим образом: используя один из цифровых выходов контроллера MSP430F11x1, с помощью программы и фильтра нижних частот образуется 1-разрядный ЦАП. На выходе виртуального ЦАП (вывод Р2.0) присутствуют короткие импульсы, параметры которых меняются программой обратной связи в зависимости от уровня неизвестного напряжения на входе и начальных установок. Эта программа исполняет роль интегрирующего звена, а роль суммирующего узла совместно с компаратором выполняет RC-фильтр нижних частот ЦАП. Программная модуляция и счет импульсов происходят в непрерывном цикле. Контроль совпадения напряжений Uвх и Uвых производится компаратором А. То есть параметры импульсной последовательности задаются так, чтобы сравнять по величине напряжения Uвх и Uвых. Срабатывание компаратора А определяет конец преобразования. Число импульсов, за счет которых поддерживается напряжение Uвых, пропорциональное измеряемому напряжению Uвх, и есть величина входного напряжения. Параметры контура обратной связи можно модифицировать для получения необходимой точности преобразования. Например, цикл в 256 отсчетов требует 8 бит, 4096 отсчетов — 12 бит и т. д. В нашем случае, когда в качестве опорного напряжения используется напряжение питания микроконтроллера, равное 3,3 В, выбран коэффициент пересчета 3300 (требуется 12 разрядов). То есть дискретность преобразования равна 1 мВ (3,3 В (3300 мВ)/3300 = 1 мВ). Полученное числовое значение, эквивалентное входному напряжению, будет кратно 1 мВ. А вообще размер одной ступени зависит от удобства использования результата преобразования.

Для построения последовательного асинхронного передатчика используются ресурсы таймера А, сконфигурированного для работы на вывод Р1.1 со скоростью 9600 бод.

Теперь — немного о компонентах. Для фильтра низких частот выбран один резистор и один пленочный конденсатор с полиэстеровым диэлектриком. В качестве внешнего резонатора использован кварц на частоту 3,578545 МГц, в качестве стабилизатора напряжения использована микросхема компенсационного стабилизатора с малыми потерями — TPS77033. В качестве буфера — одиночный инвертор SN74AH1GC04 в 5-выводном корпусе.

Тот, кто хочет ознакомиться с предложенным решением подробнее, может обратиться к фирменному примеру применения SLAA104 (http://focus.ti.com/lit/an/slaa104/slaa104.pdf). Там же приведен полный текст программы и примеры расчета компонентов и параметров.

В заключение хочется добавить, что компаратор А — довольно хитрое устройство, содержащее в себе собственно компаратор, программируемый источник опорного напряжения и даже подключаемый фильтр нижних частот. Устройство понятно из рисунка (рис. 6). Подключение входов компаратора к выводам производят управляющие биты регистра порта РСА0 и РСА1, включение — бит САОN. Битами САЕХ и САRSEL производится конфигурирование — коммутация полярности на входах, подключение-отключение встроенного источника опорного напряжения и обеспечение прямого или инверсного выхода. Выходной ФНЧ подключается битом САF. Сам же источник опорного напряжения управляется битами CAREF. Он способен выдавать напряжения, кратные питающему, через управляемый делитель: Uпит, 0,5 Uпит, 0,25 Uпит, подключать внутренний диод или отключаться совсем. При определенной конфигурации возможна выдача опорного напряжения на выводы СА0 и СА1. Все напряжения, подаваемые на вход компаратора, отсчитываются от потенциала общего провода и не должны превышать напряжения питания микроконтроллера. Работой компаратора А управляют два регистра — CACTL1 и CACTL2 — и, в зависимости от конфигурации, обеспечивают прерывание по фронту или спаду, запрет или разрешение прерывания, управление флагами регистра статуса.

Комбинируя разные варианты коммутации внутренних цепей, можно осуществлять измерение сопротивления, емкости, снимать показания с резисторного моста (тензодатчиков), использовать его в схеме измерения тока, в качестве контроллера небольших сенсорных экранов, в интеллектуальных датчиках с независимым питанием для пожарной или охранной сигнализации, электронных весах, портативных термометрах, датчиках перемещений, уровня шума. А в сочетании с микросхемами трансиверов, применение таких микроконтроллеров значительно упрощает монтаж и наладку очень многих систем. В примере использования SLAA071 (http://focus.ti.com/lit/an/slaa071/slaa071.pdf) описана схема управления коллекторным двигателем с контролем тока, что в сочетании с малыми размерами корпуса делает этот контроллер применимым в миниатюрных приводах, декодерах команд и других приложениях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *