Изюминки современных микроконтроллеров. Часть 1. MSP430FR23xx от Texas Instruments: все более аналоговые
Введение
Микроконтроллеры семейства MSP430 изначально позиционировались как микроконтроллеры смешанных сигналов, что было обусловлено наличием в их составе, кроме цифровых и аналоговых блоков, компараторов, ШИМ, ОУ, ЦАП и АЦП. Появление микроконтроллера MSP430F2274 корпорации Texas Instruments с двумя встроенными ОУ и АЦП оказалось действительно революционным событием, поскольку позволило создавать однокристальные малогабаритные датчики (к примеру, потенциометрический датчик положения рабочего органа шарового крана) со сверхнизким энергопотреблением. В состав новейших микроконтроллеров семейства MSP430FR23xx был включен поистине уникальный блок — комбинированный интеллектуальный аналоговый модуль (Smart Analog Combo, SAC), с помощью которого можно реализовать законченный тракт обработки аналогового сигнала с минимальным использованием внешних компонентов или совсем без них.
В состав модуля SAC входят:
- Высокопроизводительный операционный усилитель (Op Amp) с низким энергопотреблением, высоким быстродействием и сверхмалыми токами утечки по входам.
- Цепочка резисторов, позволяющая на основе встроенного ОУ создать усилитель с программируемым (в пределах 1–33) коэффициентом усиления (programmable gain amplifier, PGA. В отечественной технической литературе отсутствует аббревиатура, соответствующая английской PGA. Поскольку данный термин достаточно распространен, в статье для сокращения будет использоваться вместо термина «усилитель с программируемым коэффициентом усиления» понятие «усилитель PGA», или просто «PGA»).
- 12‑разрядный цифро-аналоговый преобразователь, ЦАП (digital-to-analog converter, DAC).
В статье будут подробно описаны особенности применения модуля SAC: концепция функционирования, режимы работы, внутренние соединения, подключение к другим блокам микроконтроллера, хранящаяся во внутреннем ПЗУ (ROM) библиотека драйверов, а также рассмотрены особенности проектирования устройств с помощью модуля SAC. Кроме того, будут отмечены преимущества использования модуля SAC в таких сценариях (use cases), как датчики дыма, устройства на токовой петле, и в ряде других, критичных к стоимости и энергопотреблению приложений.
Общее описание
Комбинированный интеллектуальный аналоговый модуль (Smart Analog Combo, SAC) предоставляет конфигурируемый тракт обработки аналогового сигнала. Пользователь имеет возможность гибко конфигурировать сигнальные блоки SAC — операционный усилитель (Op-Amp) или усилитель с программируемым коэффициентом передачи (PGA), которые можно использовать в качестве каскадов предварительной обработки сигнала для 12‑разрядного ЦАП (DAC), а также буферов для внешних источников опорного напряжения (voltage references) или модулей ШИМ (PWM).
В качестве преимуществ модуля SAC можно отметить:
- Гибкость:
- конфигурируемые входные и выходные тракты;
- адаптируемая схема аналоговой обработки сигнала;
- программируемая конфигурация;
- единый пользовательский интерфейс на всех уровнях.
- Экономические показатели:
- оптимизированная стоимость внутренних компонентов, из которых состоит модуль;
- необходимость использования всего нескольких внешних компонентов;
- уменьшение площади печатной платы (PCB) и стоимости внешних компонентов (BOM).
Архитектурные особенности
Модуль SAC может иметь в своем составе следующие функциональные блоки:
- Операционный усилитель, ОУ (operational amplifier, OA), с полным размахом входного и выходного сигнала (Rail-to rail input/output). Для повышения функциональных возможностей на входе ОУ установлен мультиплексор.
- Усилитель с программируемым коэффициентом усиления (programmable gain amplifier, PGA), имеющий конфигурируемый режим работы, начиная от повторителя (buffer mode) и заканчивая режимом усилителя с программируемым в пределах 1–33 коэффициентом усиления (PGA mode). В режиме PGA поддерживается работа как в инвертирующем (inverting mode), так и неинвертирующем включении (noninverting mode).
- Цифро-аналоговый преобразователь, ЦАП (digital-to-analog converter, DAC), с 12‑разрядным ядром (DAC core), программируемым временем установления выходного напряжения, возможностью выбора внутреннего или внешнего источника опорного напряжения, ИОН (voltage reference) и программируемой с помощью ПО загрузкой данных.
Конфигурация модуля SAC
Концептуальное описание модуля SAC
В составе модуля SAC имеются: один операционный усилитель, один усилитель с программируемым коэффициентом усиления (programmable gain amplifier, PGA) и один 12‑разрядный цифро-аналоговый преобразователь (digital-to-analog converter, DAC). Модуль может использоваться во входных каскадах предварительной обработки сигнала и в выходных каскадах генераторов сигналов специальной формы. Существует три различных уровня конфигурации модуля SAC — SAC-L1, SAC-L2 и SAC-L3:
- SAC-L1 обладает минимальным набором функций и содержит только один операционный усилитель (Op-Amp).
- SAC-L2 имеет один операционный усилитель (Op-Amp) и цепочку резисторов в цепи обратной связи, которые совместно образуют усилитель с программируемым коэффициентом усиления (PGA) с коэффициентом усиления 1–33.
- SAC-L3 обладает максимальным набором функций, которые обеспечиваются объединением в одном блоке усилителя с программируемым коэффициентом усиления (PGA), входящего в состав модуля SAC-L2, и 12‑разрядного ЦАП (DAC).
Различные микроконтроллеры MSP430 имеют разные уровни конфигурации модуля SAC. Так, в MSP430FR2311 интегрирован одиночный модуль SAC-L1, а в MSP430FR2355 — четыре модуля SAC-L3. В микросхемах с конфигурацией SAC низкого уровня функции и регистры конфигураций более высокого уровня являются зарезервированными. Например, в микросхеме, которая поддерживает конфигурацию SAC-L1, функции усилителя PGA и ЦАП (DAC), а также относящиеся к ним регистры недоступны.
На рис. 1 показана блок-схема модуля SAC-L3. Два внутренних аналоговых мультиплексора позволяют осуществить выбор источника сигнала для операционного усилителя (OA). Бит управления режимом энергопотребления ОУ (op-amp power mode, OAPM) дает возможность оптимизировать ток, потребляемый ОУ. В режиме высокого энергопотребления (high-power mode) ОУ обеспечивает широкую полосу коэффициента усиления (gain bandwidth) и высокую скорость нарастания выходного напряжения (slew rate). Если энергопотребление становится критичным для проектируемого приложения, необходимо выбирать режим пониженного энергопотребления (low-power mode), установив бит OAPM в 1. Цепочка резисторов в обратной связи (feedback resistance ladder) подключает выход ОУ (OA) к инвертирующему входу (negative input). С обратной связью ОУ (OA) поддерживает как режим инвертирующего усилителя с программируемым коэффициентом усиления (inverting PGA mode), так и неинвертирующего усилителя (noninverting PGA mode). В модуль SAC-L3 также интегрирован 12‑разрядный ЦАП (DAC). ЦАП (DAC) может быть использован для создания напряжения смещения (bias voltage) ОУ (OA) или применять ОУ (OA) в качестве буфера (driver) выходного сигнала.
Остановимся на описании составных частей модуля SAC.
Операционный усилитель (ОУ)
ОУ модуля SAC может работать в трех конфигурациях:
- ОУ общего применения (General-purpose Op-Amp), подключенный к внешним выводам, или каскадированный ОУ.
- Буфер внешнего вывода, ЦАП (DAC) или спаренный выход ОУ.
- Инвертирующий или неинвертирующий усилитель PGA.
Усилитель PGA
При использовании встроенной управляемой цепочки резисторов в цепи обратной связи внутренний ОУ модуля SAC может быть переведен в режим усилителя с программируемым коэффициентом усиления (PGA mode). В режиме PGA (PGA mode) модуль SAC поддерживает работу как в режиме повторителя (buffer mode), так и в режиме регулируемого усиления (PGA mode). В режиме PGA значение коэффициента усиления можно выбрать в пределах 1–33.
Ядро ЦАП
ЦАП (DAC) поддерживает работу только в 12‑разрядном режиме, что позволяет управлять выходным сигналом с дискретностью Vref/4096. Расчет выходного напряжения ЦАП выполняется по формуле:
Vout = (Vref×DACDAT)/4096, (1)
где Vout — напряжение на выходе ЦАП; Vref — напряжение источника опорного напряжения (ИОН); DACDAT — значение, записанное в регистр данных ЦАП.
Если выход ЦАП (DAC) разрешен (DACEN = 1b), то максимальному значению DACDAT, равному 0FFFh, соответствует выходное напряжение (4095/4096)×Vref. Минимальному значению DACDAT, равному 0000h, соответствует соединение выхода с общей шиной (ground). В регистр данных ЦАП можно записать значение, превышающее 4095, но при этом все старшие биты за пределами младших 12 значащих будут проигнорированы.
Источник опорного напряжения для ЦАП модуля SAC
Выбор источника опорного напряжения (reference) или ИОН для ЦАП (DAC) осуществляется исходя из специфичного для конкретной микросхемы набора ИОН с помощью битов DACSREF. По умолчанию DACSREF = 0. Таким образом, в качестве ИОН используется первичный ИОН (primary reference). Если DACSREF = 1, то применяется сигнал от вторичного ИОН (secondary reference). Специфичный для микросхемы тип ИОН зависит от конфигурации микросхемы и может быть либо внешним (external), либо внутренним (internal).
Обновление выходного сигнала ЦАП модуля SAC
Регистр данных ЦАП DACDAT может быть подключен к ядру ЦАП (DAC core) либо непосредственно, либо с использованием механизма двойной буферизации (double buffering). Источник запуска процедуры обновления выходного напряжения ЦАП (DAC output voltage) выбирают с помощью битов DACLSEL:
Когда DACLSEL = 00b, защелкивание данных происходит прозрачно и данные из регистра DACDAT передаются непосредственно ядру ЦАП (DAC core). При этом выход ЦАП (DAC output) обновляется немедленно после того, как в регистр DACDAT записаны новые данные для ЦАП (DAC data).
Когда DACLSEL = 10b или 11b, данные защелкиваются по нарастающему фронту одного из специфичных для микросхемы сигналов. Эти сигналы могут представлять собой синхронные или асинхронные события для запуска буфера выборки данных из DACDAT, независимо от момента обновления данных в DACDAT. Перед сигналом запуска в DACDAT должны быть загружены новые данные. Если загрузка и выгрузка данных происходят одновременно, то выходные данные будут ненадежными. Период обновления ЦАП (DAC) должен быть больше, чем время установления (setup time) выходного сигнала ЦАП (DAC). Иначе выходные данные могут исказиться за счет наложения на частоту обновления.
Прерывания от ЦАП модуля SAC
Если установлен бит DACIE, то модуль ЦАП (DAC) может генерировать прерывания. Когда данные для ЦАП (DAC) защелкиваются из регистра DACDAT в буфер данных, устанавливается бит DACIFG и генерируется запрос на прерывание (interrupt request, IR), который передается для обработки в CPU.
Бит DACIFG устанавливается, когда DACLSELx > 0 и данные ЦАП (DAC) защелкиваются из регистра DACDAT в буфер данных. Когда DACLSELx = 0, флаг DAC12IFG не устанавливается.
Установка бита DACIFG говорит о том, что ЦАП (DAC) готов к приему новых данных. Флаг DACIFG может быть очищен путем записи 1 в DACIFG или сброшен автоматически чтением регистра DACIV. Только при чтении регистра DACIV бит DACIFG сбрасывается автоматически. Если устанавливается флаг второго прерывания, то оно генерируется сразу после обработки первого.
Прямой доступ к памяти для ЦАП модуля SAC
Для микросхем со встроенным контроллером прямого доступа к памяти, ПДП (DMA), каждый экземпляр модуля ЦАП (DAC) имеет связанный с ним механизм запуска DMA. Если флаг DACDMAE установлен и данные ЦАП (DAC) обновлены при установленном флаге DACIFG, то генерируется запрос к контроллеру ПДП (DMA) на передачу новых данных в регистр DACDAT. Модуль ПДП (DMA) автоматически очищает запрос на начало передачи данных контроллером ПДП (DMA) и также очищает флаг DACIFG.
На этом рассмотрение архитектурных особенностей модуля SAC завершено. Перейдем к описанию особенностей его применения.
Особенности применения модуля SAC
Различные датчики преобразуют физические величины, свойственные явлениям реального мира, в электрические сигналы. Выходной сигнал датчика обычно имеет маленькую амплитуду и зашумлен. Соответственно, его необходимо усилить и отфильтровать. Для таких преобразований сигнала, как усиление и фильтрация, чаще всего используются ОУ. После предварительной обработки для преобразования сигнала из аналоговой формы в цифровую используется специальный блок, который называется «аналого-цифровой преобразователь», или «АЦП» (analog-to-digital converter, ADC). После преобразования цифровой сигнал может быть обработан и проанализирован с помощью микроконтроллера (MCU), микропроцессора (CPU) или сигнального процессора (DSP). Для решения задач предварительной обработки сигналов идеально подходит модуль SAC, входящий в состав микроконтроллеров MSP430FR23xx.
Особенности проектирования усилителей с одним источником питания
Поскольку модуль SAC является одним из периферийных модулей микроконтроллера MSP430, то напряжение питания для SAC берется с одного из выводов напряжения питания (power pin) микроконтроллера MSP430. Внутренний ОУ (OA) спроектирован для работы от одного источника питания и имеет широкий диапазон питающих напряжений 2–3,6 В. Входы и выходы ОУ (OA) с одним напряжением питания привязаны к общей шине устройства (referenced to ground), в то время как входы и выходы ОУ (OA) с двумя источниками питания привязаны к общей точке источников питания разной полярности. Архитектура ОУ, спроектированного для работы с одним источником питания (single-supply OA), представляется более сложной, чем архитектура ОУ, предназначенного для работы с двумя источниками питания (dual-supply OA), поскольку для ОУ с одним источником питания (single-supply OA) обычно требуются цепи смещения. Значения входного и выходного напряжения ОУ с одним источником питания должны находиться в пределах от 0 В до напряжения источника питания. Модуль SAC не поддерживает отрицательные значения входного и выходного напряжения.
Когда ОУ модуля SAC работает в режиме инвертирующего усилителя (inverting amplifier mode), для уменьшения искажений за счет ограничения входного сигнала (clipping distortion) на неинвертирующий вход необходимо подать напряжение смещения. На рис. 2 показана типовая схема включения ОУ с одним напряжением питания (single-supply amplifier) в режиме инвертирующего усилителя (inverting mode). Для генерации смещения предусмотрен источник опорного напряжения (ИОН) VREF и резисторный делитель. Для замены внешнего ИОН и резистивного делителя можно применить внутренний ИОН и ЦАП DAC12 модуля SAC. При использовании цепочки резисторов обратной связи (feedback resistance ladder) модуля SAC показанная на рис. 2 схема может быть реализована с помощью одного только SAC без каких-либо внешних компонентов.
При работе ОУ модуля SAC в режиме неинвертирующего усилителя (noninverting amplifier mode), если постоянная составляющая (DC component) входного сигнала невелика, возможно усиление как постоянной (DC component), так и переменной (AC component) составляющей входного сигнала. Если входной сигнал содержит относительно большую постоянную составляющую (DC component), в то время как переменная составляющая (AC component) мала, то для усиления переменной составляющей (AC component) необходим большой коэффициент усиления. Но усиление постоянной составляющей (DC component) с большим коэффициентом усиления приведет к большим искажениям за счет перехода усилителя в режим насыщения. Для уменьшения описанного эффекта можно добавить отрицательное напряжение смещения (biasing voltage) на вход усилителя, что приведет к уменьшению входного синфазного напряжения (common-mode voltage). На рис. 3 представлена типовая схема включения ОУ с одним напряжением питания (single-supply amplifier) для работы в режиме неинвертирующего усилителя (noninverting mode). Аналогично схеме инвертирующего усилителя (inverting amplifier) неинвертирующий усилитель (noninverting amplifier) также можно выполнить на модуле SAC без внешних компонентов. Отличие заключается в том, что для реализации неинвертирующего усилителя (noninverting amplifier) требуется два модуля SAC. Поскольку ЦАП (DAC) может быть подключен только к неинвертирующему входу (positive input) ОУ (OA), то понадобится второй модуль SAC, работающий в режиме ЦАП (DAC mode) и служащий для создания напряжения смещения (bias voltage) на инвертирующем входе (negative input) ОУ (OA). Дополнительную информацию о проектировании схем на ОУ с одним источником питания (single-supply amplifier) можно найти в документе Single-Supply Op Amp Design Techniques [9].
Библиотека драйверов для модуля SAC
Все микроконтроллеры MSP430 с ферритовой памятью (FRAM MCU) имеют встроенную библиотеку драйверов (DriverLib), предназначенную для помощи пользователям в ускорении разработки встроенного программного обеспечения (firmware). Библиотека драйверов для микроконтроллеров MSP430 является высокоуровневым, удобным для использования, абстрагированным от особенностей архитектуры программным интерфейсом, который избавляет разработчиков от необходимости изучать функциональное назначение битов и байтов аппаратных регистров микроконтроллеров MSP430, заменяя все это простейшими вызовами функций с нужными параметрами для каждого из периферийных модулей. Это позволяет тратить меньше времени на изучение архитектурных особенностей каждого из микроконтроллеров, уделяя основное внимание нововведениям при программировании MCU семейства MSP430. Некоторые из микроконтроллеров MSP430, такие как MSP430FR2355, имеют законченную библиотеку драйверов периферийных модулей (peripheral driver library), полностью размещенную во внутреннем ПЗУ (ROM). Разработчики могут использовать размещенную в ПЗУ (ROM-based) библиотеку драйверов (driver library) для получения дополнительных преимуществ, включая исполнение кода из ПЗУ за один такт (single-cycle code execution) при высокой частоте тактирования CPU и экономии пространства FRAM для дополнительного прикладного кода.
Для модуля SAC доступно более 20 вы-сокоуровневых пользовательских функций (API functions). Они обеспечивают инициализацию модуля SAC, активацию SAC, деактивацию SAC, выбор режима работы (operation mode) SAC, конфигурирование ЦАП (DAC), выбор источника опорного напряжения, ИОН (voltage reference), для ЦАП (DAC), выбор режима энергопотребления для ОУ и т. п. Каждая из функций API полностью протестирована и документирована. Хранящаяся во FRAM библиотека драйверов (driver library) имеет открытые исходные коды (open source), которые помогают разработчикам понять, что происходит за уровнем абстракции. Для получения доступа к хранящимся в ПЗУ (ROM-based) функциям API разработчикам достаточно добавить в свой проект заголовочный файл (header file) библиотеки драйверов (driver library) и скомпоновать (linking) его с библиотекой атрибутов (attribute library). Далее будут описаны принципы использования модуля SAC с библиотекой драйверов (driver library). Дополнительную информацию о функциях API модуля SAC можно получить из документа MSP430 DriverLib for MSP430FR2xx_4xx Devices User’s Guide [5].
Режимы работы ОУ модуля SAC
Режим усилителя общего назначения
На рис. 4 показана конфигурация модуля SAC для режима усилителя общего назначения (general-purpose mode). В этом режиме выводы OAx+ и OAx– являются специализированными сигнальными входами. Как показано красным цветом на рис. 4, внутренний ЦАП (DAC) и цепочка резисторов обратной связи (feedback resistance ladder) не задействованы. Не существует ограничений на обращение к модулю SAC в режиме общего назначения (general-purpose mode). Этот режим полностью аналогичен применению внешнего ОУ с одним напряжением питания (single-supply operational amplifier). Можно свободно использовать модуль SAC в этом режиме совместно с внешними компонентами для создания различных схем, таких как инвертирующий усилитель, неинвертирующий усилитель, фильтр и т. п. Обычно бывает необходимо добавить резисторы для создания обратной связи и цепи смещения. Номиналы внешних компонентов и способ их подключения, как правило, и определяют тип схемы. Без особых затруднений может быть осуществлен переход от схемы с внешним усилителем (ОУ) к схеме с интегрированным модулем SAC в режиме ОУ общего назначения (general-purpose mode). По сравнению с внешним усилителем модуль SAC может иметь тот же самый тип схемы, но уменьшить стоимость комплектующих (BOM) и размер печатной платы (PCB).
Если модуль SAC не предполагается использовать в разработке, то для экономии электроэнергии его можно отключить с помощью соответствующего бита регистра управления (control register) микроконтроллером MSP430. Модуль SAC-L1 поддерживает только режим общего назначения (general-purpose mode), и в его состав не входят ЦАП (DAC) и цепочка резисторов обратной связи (feedback resistance ladder).
Для того чтобы сконфигурировать SAC для работы в режиме общего назначения (general-purpose mode), необходимо установить биты SACEN, OAEN, PMUXEN и NMUXEN в регистре управления ОУ (OA) модуля SAC — SACxOA. В регистре SACxOA имеются также биты PSEL и NSEL, которые конфигурируют выбор внешних выводов микроконтроллера в качестве входов ОУ (OA) по умолчанию. Бит OAPM используется для выбора режима высокого быстродействия (high-speed mode) или режима низкого быстродействия (low-speed mode). Режим высокого быстродействия (high-speed mode) обеспечивает широкую полосу пропускания (gain bandwidth) и высокую скорость нарастания выходного сигнала (slew rate) ценой высокого энергопотребления. В листинге 1 показана последовательность операций конфигурирования модуля SAC для использования в режиме общего назначения (general-purpose mode) с помощью функций API библиотеки драйверов (driver library). Перед конфигурированием модуля SAC необходимо выбрать функции выводов как функции SAC, хотя пример кода не содержит функции конфигурирования выводов.
Различные микроконтроллеры семейства MSP430 MCU могут иметь разное назначение выводов, даже если они размещены в одинаковых корпусах (более подробные сведения можно найти в документации).
// Выбор внешнего источника как для неинвертирующего, // так и для инвертирующего входа SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL,SAC_NEGATIVE_INPUT_SOURCE_EXTERNAL); // Выбор режима низкого быстродействия // и малого энергопотребления SAC_OA_selectPowerMode(SAC0_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER); // Активация ОУ SAC_OA_enable(SAC0_BASE); // Активация SAC SAC_enable(SAC0_BASE);
Листинг 1. Пример конфигурирования модуля SAC для работы в режиме общего назначения (General-Purpose Mode)
Режим буфера
На рис. 5 показана конфигурация модуля SAC для режима буфера (buffer mode). Буфер имеет единичный коэффициент усиления, и его нередко называют повторителем напряжения (voltage follower). Повторитель напряжения (voltage follower) часто используется для решения задачи согласования сопротивлений, увеличения выходной мощности драйвера и изоляции прецизионных частей схемы от ее силовых частей.
Как показано красным цветом на рис. 5, входной сигнал может поступать от порта неинвертирующего входа (positive port) OAx+, внешнего вывода или ОУ (OA) модуля SAC в режиме буфера (buffer mode). Выход ОУ (OA) изолирован от резистивной цепочки (R‑ladder), и переключатель MSEL режима PGA установлен в нейтральное состояние (floating status). Выход ОУ (OA) может быть подключен к внешнему выводу или с помощью внутреннего соединения к спаренному ОУ (paired OA). Чтобы сконфигурировать модуль SAC для работы в режиме буфера (buffer mode), с помощью битов NSEL необходимо выбрать в качестве источника PGA инвертирующий вход (negative input, NSEL = 01b), а посредством битов MSEL следует указать режим буфера (buffer mode, MSEL = 01b). В листинге 2 показана последовательность операций конфигурирования модуля SAC для работы в режиме буфера (buffer mode) с помощью функций API библиотеки драйверов (driver library).
// Выбор внешнего источника для неинвертирующего входа и цепочки резисторов (PGA), так и для инвертирующего входа SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_NEGATIVE_INPUT_SOURCE_PGA); // Выбор режима буфера SAC_ PGA _setMode(SAC0_BASE, SAC_PGA_MODE_BUFFER); // Активация ОУ SAC_OA_enable(SAC0_BASE); // Активация SAC SAC_enable(SAC0_BASE);
Листинг 2. Пример конфигурирования модуля SAC для работы в режиме буфера (Buffer Mode)
Режим неинвертирующего усилителя с программируемым коэффициентом усиления
На рис. 6 представлена конфигурация модуля SAC для режима неинвертирующего усилителя с программируемым коэффициентом усиления (noninverting PGA mode). В этом режиме сигнал может быть усилен без инвертирования. Данный режим полезен для усилителя с одним источником питания (single-supply amplifier), на вход которого не может поступать отрицательное напряжение. Внешняя обратная связь для такой схемы не требуется, поскольку коэффициент усиления определяется внутренней конфигурируемой резисторной цепочкой (resistor ladder). Эта цепочка может задавать восемь различных коэффициентов усиления в пределах 1–33.
Как показано красным цветом на рис 6, входной сигнал может поступать от порта неинвертирующего входа (positive port) OAx+ или спаренного ОУ (OA). Инвертирующий вход ОУ (OA negative port) должен быть выбран в качестве входа PGA (NSEL = 01b), а переключатель MSEL режима PGA установлен в положение, соединенное с общей шиной (ground, MSEL = 10b). Коэффициент усиления модуля SAC конфигурируется битами GAIN регистра управления SACxPGA. В листинге 3 описана последовательность операций конфигурирования модуля SAC для работы в режиме неинвертирующего усилителя (noninverting PGA mode) с помощью функций API библиотеки драйверов (driver library).
// Выбор внешнего источника для неинвертирующего входа и цепочки резисторов (PGA), так и для инвертирующего входа SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_NEGATIVE_INPUT_SOURCE_PGA); // Выбор режима неинвертирующего PGA SAC_ PGA _ setMode (SAC0_BASE, SAC_PGA_MODE_NONINVERTING); // Установка коэффициента усиления неинвертирующего PGA = 3 SAC_ PGA _ setGAIN(SAC0_BASE, SAC_PGA_GAIN_BIT1); // Активация ОУ SAC_OA_enable(SAC0_BASE); // Активация SAC SAC_enable(SAC0_BASE);
Листинг 3. Пример конфигурирования модуля SAC для работы в режиме неинвертирующего усилителя (Noninverting PGA Mode)
Режим инвертирующего усилителя с программируемым коэффициентом усиления
На рис. 7 дана конфигурация модуля SAC для режима инвертирующего усилителя (Inverting PGA mode). В этом режиме сигнал может быть усилен с инвертированием. Поскольку отрицательное напряжение недопустимо для использования в модуле SAC, для нормальной работы модуля SAC в режиме инвертирующего усилителя (inverting PGA mode) необходимо использовать смещение. Напряжение смещения (bias voltage) может быть получено с помощью внешней схемы или от внутреннего 12‑разрядного ЦАП (DAC). Красным цветом на рис. 7 выделен вариант, в котором для получения напряжения смещения (bias voltage) на неинвертирующем входе ОУ (OA positive input) использован внутренний ЦАП (DAC). Обычно напряжение смещения выбирают равным половине напряжения питания. Входной сигнал может поступать от порта инвертирующего входа (negative port) OAx– или внутреннего спаренного ОУ.
Для того чтобы сконфигурировать модуль SAC для работы в режиме инвертирующего усилителя (inverting PGA mode), переключателем MSEL режима PGA в качестве источника сигнала необходимо выбрать OAx– (MSEL = 00b) или спаренный ОУ (MSEL = 11b), а инвертирующий вход ОУ (OA negative port) должен быть выбран в качестве источника PGA (NSEL = 01b). Неинвертирующим входом ОУ (OA positive port) может служить порт неинвертирующего входа (positive port) OAx+ или 12‑битный ЦАП (DAC). Коэффициент усиления модуля SAC конфигурируется с помощью битов GAIN в регистре управления SACxPGA. В листинге 4 показана последовательность операций конфигурирования модуля SAC для работы в режиме инвертирующего усилителя (inverting PGA mode) с помощью функций API библиотеки драйверов (driver library).
// Выбор VCC в качестве ИОН для ЦАП (DAC) SAC_DAC_selectRefVoltage(SAC0_BASE, SAC_DAC_PRIMARY_RERFERENCE); // Выбор источника запуска для защелкивания данных в ЦАП. // Загрузка данных при записи в DACDAT SAC_DAC_selectLoad(SAC0_BASE, SAC_DAC_LOAD_DACDAT_WRITTEN); // Установка шкалы выходного напряжения ЦАП в ½ VCC, Vout = Vref * DACDAT | 4096 SAC_DAC_setData(SAC0_BASE, 2048); // Активация ЦАП SAC_DAC_enable(SAC0_BASE); // Подключение внутреннего ЦАП к неинвертирующему входу ОУ, а цепочки резисторов PGA - к инвертирующему SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC, SAC_NEGATIVE_INPUT_SOURCE_PGA); // Выбор режима инвертирующего PGA SAC_ PGA _ setMode (SAC0_BASE, SAC_PGA_MODE_INVERTING); // Установка коэффициента усиления неинвертирующего PGA = 2 SAC_ PGA _ setGAIN(SAC0_BASE, SAC_PGA_GAIN_BIT1); // Активация ОУ SAC_OA_enable(SAC0_BASE); // Активация SAC SAC_enable(SAC0_BASE);
Листинг 4. Пример конфигурирования модуля SAC для работы в режиме инвертирующего усилителя
Режим ЦАП
В составе модуля SAC-L3 имеется 12‑разрядный ЦАП (DAC), который можно использовать как источник опорного напряжения (reference voltage), он может работать совместно с ОУ (OA) и PGA для непосредственного управления амплитудой выходного сигнала. Если для генерации сигнала и управления другими схемами применяется ЦАП (DAC), ОУ (OA) должен быть сконфигурирован для работы в режиме буфера (buffer mode), чтобы увеличить нагрузочную способность ЦАП. Красным цветом на рис. 8 показаны фрагменты схемы, относящиеся к режиму ЦАП (DAC mode) модуля SAC. В этом режиме следует совместно активировать 12‑разрядный ЦАП (DAC) и встроенный ОУ (OA), а переключатель MSEL режима PGA перевести в свободное состояние (floating status).
В листинге 5 дана последовательность операций конфигурирования модуля SAC для работы в режиме ЦАП (DAC mode) с помощью функций API библиотеки драйверов (driver library). В этом примере в качестве источника опорного напряжения ЦАП (DAC) выбран внутренний разделяемый источник опорного напряжения, и в ЦАП (DAC) всегда загружаются данные из DACDAT по нарастающему фронту выходного сигнала таймера TB2.1. При установленном бите DACIE модуль ЦАП (DAC) может генерировать прерывания. Установка бита DACIFG указывает на то, что ЦАП (DAC) готов для приема новых данных. Имеются два специфичных для микросхемы источника опорного напряжения (voltage references), выбираемых битами DACSREF. Микроконтроллер MSP430FR2355 поддерживает в качестве источников опорного напряжения ЦАП (DAC) внутренний разделяемый ИОН (shared voltage reference) и напряжение питания VCC. Сигнал запуска загрузки ЦАП (DAC) также является специфичным для микросхемы. Приведенный пример кода показывает только один вариант конфигурации, а ее пользовательские изменения производятся с помощью параметров функций API. В листинге 5 показан код только для конфигурирования модуля SAC. Чтобы обеспечить работу модуля SAC в режиме ЦАП (DAC mode), разработчик должен позаботиться и о других настройках, таких как настройка внутреннего источника опорного напряжения (internal shared voltage reference), настройка таймера Timer_B2 и подпрограммы обработки прерываний (interrupt service routine, ISR).
// Выбор внутреннего ИОН в качестве ИОН для ЦАП SAC_DAC_selectRefVoltage(SAC0_BASE, SAC_DAC_SECONDARY_RERFERENCE); // Выбор источника запуска для защелкивания данных в ЦАП. // ЦАП всегда загружает данные из DACDAT по нарастающему фронту на выходе TB2.1 таймера SAC_DAC_selectLoad(SAC0_BASE, SAC_DAC_LOAD_DEVICE_SPECIFIC_0); // Разрешение прерываний от ЦАП SAC_DAC_interruptEnable(SAC0_BASE); // Запись данных в Регистр Данных DACDAT ЦАП // DAC_data — это переменная типа unsigned, декларированная пользователем SAC_DAC_setData(SAC0_BASE, DAC_data); // Активация ЦАП SAC_DAC_enable(SAC0_BASE); // Подключение внутреннего ЦАП к неинвертирующему входу ОУ, а цепочки резисторов PGA - к инвертирующему SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC, SAC_NEGATIVE_INPUT_SOURCE_PGA); // Выбор буферного режима PGA SAC_ PGA _ setMode (SAC0_BASE, SAC_PGA_MODE_BUFFER); // Активация ОУ SAC_OA_enable(SAC0_BASE); // Активация SAC SAC_enable(SAC0_BASE);
Листинг 5. Пример конфигурирования модуля SAC для работы в режиме ЦАП
Конфигурирование внутренних соединений модуля SAC
Каскадирование модулей SAC
Аналоговые схемы обычно усложняются, когда требуется реализация различных функций, таких как усиление, фильтрация и буферирование, объединенных в одной схеме. Многочисленные требования не могут быть одновременно удовлетворены с помощью единственного усилителя, вот почему широко используется каскадирование усилителей. В качестве типичного примера применения двухкаскадных усилителей можно привести схему, в которой первый каскад является усилителем с большим коэффициентом усиления, а второй каскад работает в режиме буфера. Таким образом можно достигнуть и высокого коэффициента усиления, и высокой мощности выходного сигнала. В микроконтроллер MSP430FR2355 интегрированы четыре модуля SAC (SAC0, SAC1, SAC2 и SAC3) с гибкой схемой соединений между ними. Модуль SAC0 спарен с модулем SAC2, а модуль SAC1 — с модулем SAC3. Выход модуля SAC0 подключен к инвертирующему и неинвертирующему входам модуля SAC2. Выход модуля SAC2 подсоединен к неинвертирующему и инвертирующему входам модуля SAC0. Модули SAC1 и SAC3 имеют схему соединений, аналогичную схеме соединений между модулями SAC0 и SAC2. С помощью внутренних соединений микроконтроллера MSP430 MCU каскадированные модули SAC можно сконфигурировать для работы в различных режимах, а кроме того, это позволяет значительно упростить топологию печатной платы в районе микроконтроллера.
На рис. 9 приведен пример каскадирования неинвертирующих усилителей. Неинвертирующий выход первого ОУ (OA) внутренне соединен с неинвертирующим входом (positive input) второго ОУ (OA) путем выбора спаренного выхода ОУ (OA) в качестве неинвертирующего входа (PSEL = 10b).
На рис. 10 показаны осциллограммы для примера 1 каскадирования модулей SAC. Канал 1 изображает сигнал на входе модуля SAC первого каскада. Канал 2 изображает сигнал на выходе модуля SAC первого каскада. Канал 3 изображает сигнал на выходе модуля SAC второго каскада. Как видно на рис. 10, входной сигнал усиливается дважды, без инвертирования. Первый каскад усиления усиливает сигнал в 3 раза, а второй каскад усиливает сигнал в 2 раза. Таким образом итоговый коэффициент усиления равен 6.
На рис. 11 приведен другой пример каскадирования двух инвертирующих усилителей. Выход ОУ (OA) первого инвертирующего каскада внутренне подключен к резисторной цепочке (resistor ladder) на инвертирующем входе ОУ (OA) второго инвертирующего каскада. Такая конфигурация может быть получена выбором режима PGA модуля SAC и каскадирования ОУ (OA) в инвертирующем режиме (MSEL = 11b).
На рис. 12 показаны осциллограммы для примера 2 каскадирования модулей SAC. Канал 1 изображает сигнал на входе модуля SAC первого каскада. Канал 2 изображает сигнал на выходе модуля SAC первого каскада. Канал 3 изображает сигнал на выходе модуля SAC второго каскада. Как видно на рис. 12, входной сигнал усиливается дважды, с инвертированием. После двукратного усиления с инвертированием выходной сигнал имеет ту же фазу, что и входной сигнал, а амплитуду вчетверо большую, чем амплитуда входного сигнала. Первый каскад усиливает сигнал в 2 раза, и второй каскад усиливает сигнал в 2 раза. Поскольку каскады инвертируют сигнал, то их коэффициенты передачи равны –2, а общий коэффициент передачи равен произведению каэффициентов передачи каждого из каскадов (–2)×(–2) = 4.
Подключение модулей SAC Inter к другим периферийным модулям
Кроме соединений между модулями SAC, микроконтроллер MSP430 MCU поддерживает гибкую схему соединений между модулями SAC и другими периферийными модулями. Как было описано ранее, к встроенному в модуль SAC модулю ЦАП (DAC) можно подключить внутренний разделяемый источник опорного напряжения (voltage reference) и выход таймера. Внутренний разделяемый источник опорного напряжения (voltage reference) можно использовать в качестве источника опорного напряжения ЦАП (DAC voltage reference), а таймер — для периодической загрузки в ЦАП (DAC) данных. Помимо внутреннего разделяемого источника опорного напряжения (voltage reference) и таймера, к модулю SAC можно подключить и другие периферийные модули, такие как трансимпедансный усилитель (TIA), расширенный компаратор (eCOMP) и АЦП (ADC).
Возможности подключения периферийных модулей зависят от типа микросхемы, и в качестве примера на рис. 13 показано соединение между модулями SAC0, SAC2, eCOMP0 и ADC12 в микроконтроллере MSP430FR2355. Выход модуля SAC0 и выход модуля SAC2 подсоединены к двум входным каналам компаратора eCOMP0. Это дает определенные преимущества при предварительной обработке сигнала путем сравнения выходных сигналов усилителей и преобразования аналогового выходного сигнала в цифровую форму. Кроме того, выход модуля SAC0 внутренне подключен к входному каналу A1 модуля АЦП (ADC). Модули SAC1 и SAC3 подсоединены к компаратору eCOMP1 и модулю АЦП (ADC) аналогично тому, как это сделано для модулей SAC0 и SAC2. С помощью таких подключений внутри микроконтроллера MSP430FR2355 можно достичь реализации полного тракта обработки аналогового сигнала без внешних компонентов и соединений. Данный тип однокристальных решений помогает уменьшить стоимость комплектующих (BOM) и оптимизировать топологию и стоимость печатной платы (PCB).
На этом заканчивается концептуальное описание модуля SAC. Перейдем к рассмотрению примеров его использования в схемах различных датчиков.
Обзор схем включения модуля SAC
Области применения модуля SAC достаточно разнообразны, но обычно выделяют три основные из них:
- Устройства автоматизации зданий и сооружений.
- Устройства автоматики и управление на заводах и фабриках.
- Медицинское оборудование и оборудование для фитнеса.
Специфические для модуля приложения включают детекторы дыма, детекторы газа, передатчики для токовой петли (current-loop), глюкометры (BGM) или пульсоксиметры, малогабаритные подключаемые (small form-factor pluggables, SFP) и аудиосистемы.
Датчик дыма
Существует два метода обнаружения присутствия дыма: с использованием напряжения переменного (AC) или постоянного (DC) тока.
Для измерений в режиме переменного тока (AC) преобразователь определяет силу тока фотодиода через конденсатор большой емкости, после чего сигнал подается на аналого-цифровой преобразователь (ADC). На рис. 14 показан основанный на измерениях на переменном токе (AC) датчик дыма, реализованный с помощью двух модулей SAC в конфигурациях SAC-L3.
Для измерений на постоянном токе (DC) перед аналого-цифровым преобразованием устанавливается преобразователь ток-напряжение (обычно трансимпедансный усилитель (transimpedance amplifier, TIA) с малым входным током утечки). Выходной ток приемника инфракрасного излучения (infrared radiation, IR receiver), проходя через трансимпедансный усилитель (TIA), преобразуется в аналоговое напряжение. Путем замены резистора в цепи обратной связи TIA на диод или транзистор устройство может превратиться в логарифмический усилитель, позволяющий получить расширенный динамический диапазон измерений за счет сжатия значений выходного сигнала. ЦАП (DAC) модуля SAC первого каскада используется для обеспечения такого напряжения смещения (bias voltage), при котором может быть достигнуто ограничение выходного сигнала. Напряжение с выхода модуля SAC первого каскада повышается усилителем модуля SAC второго каскада и затем преобразуется в цифровую форму модулем АЦП (ADC) микроконтроллера MSP430FR2355. На рис. 15 показан датчик дыма, основанный на измерениях на постоянном токе (DC), реализованный с использованием двух модулей SAC в конфигурациях SAC-L3.
Модуль SAC обладает очень чувствительным по току входом (на уровне нескольких пикоампер) с низким значением тока утечки (low-leakage), который обеспечивает высокую точность измерения тока. Детектор дыма проектируется с учетом минимального потребляемого тока. Для этого после обнаружения дыма модули SAC отключаются с помощью изменения соответствующих битов внутренних управляющих регистров. После отключения модулей SAC они практически не потребляют ток. Для повышения точности измерения и предотвращения ложной тревоги некоторые датчики дыма содержат два ИК-излучателя (IR emitter) с различной длиной волны. Микроконтроллер MSP430FR2355 пригоден и для такого типа детекторов, поскольку содержит четыре модуля SAC, которые позволяют создать двухканальный детектор ИК-излучения (IR detection) с помощью одной микросхемы.
Датчик газа PM2.5
Преобразователь ток-напряжение (обычно трансимпедансный усилитель с низким значением входного тока утечки) измеряет ток через фотодиод, с дополнительным вторым каскадом предварительного усиления и фильтрации сигнала перед аналого-цифровым преобразованием.
Для подобного рода приложений обычно предусмотрено батарейное питание; микроконтроллер с ультранизким энергопотреблением и сопутствующие аналоговые модули вносят основной вклад в энергопотребление. Это особенно справедливо для датчиков газа, которые должны непрерывно отслеживать концентрацию двуокиси углерода в воздухе и подавать сигнал тревоги, если концентрация превысит заданный пороговый уровень в течение определенного промежутка времени. Модуль SAC с ультранизким энергопотреблением совместно с FRAM-микро-контроллерами с низким энергопотреблением обладают большими преимуществами в приложениях, требующих непрерывного отслеживания значений физических параметров, таких как детекторы газа. На рис. 16 показана блок-схема детектора газа, основанного на модулях SAC в конфигурациях SAC-L3.
Глюкометр или пульсоксиметр
Перед аналого-цифровым преобразованием преобразователь ток-напряжение (обычно трансимпедансный усилитель с низким входным током утечки) измеряет ток через тестовый электрод, с дополнительным каскадом предварительного усиления и фильтрации напряжения. В рассматриваемом приложении используется два модуля в конфигурации 12‑разрядного ЦАП (DAC): один для управления напряжением на тестовом электроде, а другой для генерации аудиосигнала. На рис. 17 показана блок-схема глюкометра (Blood Glucose Meter, BGM), использующего три модуля SAC в конфигурации SAC-L3.
Передатчик для токовой петли
Токовая петля (current loop) 4–20 мА является стандартной для передачи информации с удаленных датчиков на большие расстояния к программируемым логическим контроллерам (programmable logic controller, PLC) в промышленных системах мониторинга, управления и автоматизации.
Первый модуль SAC сконфигурирован для работы в режиме ЦАП (DAC mode) и действует в качестве генератора напряжения. В 12‑разрядный ЦАП (DAC) первого модуля SAC загружаются данные, аппроксимирующие функцию sin(). Второй модуль SAC используется в качестве ФНЧ (low-pass filter) и преобразователя ток-напряжение (voltage-to-current converter) с внешним усилителем на BJT-транзисторе.
Значение выходного тока ILoop определяется значением выходного напряжения 12‑разрядного ЦАП (DAC) и значением сопротивления внешнего резистора. При R1 = 99 кОм, R2 = 100 Ом, RIN = 100 кОм значение выходного тока ILoop будет вычисляться по формуле:
На рис. 18 показан передатчик для токовой петли (current-loop transmitter), использующий два модуля SAC в конфигурации SAC-L3.
Корпорация TI предлагает образец разработки резистивного датчика температуры (resistance temperature detector, RTD) с питанием от токовой петли 4–20 мА, основанный на микроконтроллере MSP430FR2355, из которого используется два модуля SAC в конфигурации SAC-L3.
Малогабаритные оптические приемопередатчики
В этом приложении предусмотрено как минимум три ЦАП (DAC): два для отслеживания потребляемой мощности приемника (receiver) и передатчика (transmitter) и один для конфигурирования режима передачи (transmitter-mode). Интегрированные ЦАП (DAC), имея разрешение до 12 бит, более просто программируются, используя минимальный размер печатной платы (PCB), что особенно важно в SFP-приложениях. На рис. 19 показана блок-схема платы оптического SFP-приемопередатчика, в котором установлено три модуля SAC в конфигурации SAC-L3.
Аудиоприложения
Двенадцатиразрядный ЦАП (DAC), за которым следует полосовой фильтр, управляет внешним аудиоусилителем, позволяет достичь эффективного разрешения в 10 разрядов (ENOB). 12‑разрядный ЦАП (DAC) вполне пригоден по стоимости и производительности для удовлетворения требований многих аудиоприложений. На рис. 20 показано аудиоприложение, использующее один модуль SAC в конфигурации SAC-L3.
Заключение
В статье рассмотрен уникальный комбинированный интеллектуальный аналоговый модуль (Smart Analog Combo, SAC), интегрированный в новейшие микроконтроллеры семейства MSP430FR23xx корпорации Texas Instruments. Модули SAC обеспечивают гибкость в конфигурировании интегрированных элементов тракта обработки аналогового сигнала. Использование модулей SAC для промышленных систем позволяет уменьшить стоимость комплектующих (BOM) и размер печатной платы (PCB), а также упростить ее топологию. Выбирая некоторые из предложенных конфигураций, проектировщики могут полностью выполнить требования своих конкретных приложений. Сверхнизкое энергопотребление как самих микроконтроллеров семейства MSP430, так и встроенных модулей SAC позволяет использовать для рассмотренных в статье приложений батарейное питание.
- MSP430FR231x Mixed-Signal Microcontrollers data sheet. ti.com/lit/gpn/msp430fr2311 /отказано в доступе/
- MSP430FR235x, MSP430FR215x Mixed-Signal Microcontrollers data sheet. ti.com/lit/gpn/msp430fr2153/ отказано в доступе/
- MSP430FR4xx, MSP430FR2xx Mixed Signal Microcontroller data sheet. ti.com/lit/pdf/SLASEC4 /отказано в доступе/
- MSP430FR4xx and MSP430FR2xx Family User’s Guide. ti.com/lit/pdf/slau445 /отказано в доступе/
- MSP430 DriverLib for MSP430FR2xx_4xx Devices User’s Guide.
- How to Use the Smart Analog Combo in MSP430 MCUs. ti.com/lit/pdf/SLAA833 /отказано в доступе/
- Smart Analog Combo Enables Tomorrow’s MCU-Based Sensing and Measurement Applications. ti.com/lit/pdf/SLAA835 /отказано в доступе/
- MSP430FR2311 Microcontroller IR Reflection Sensing Reference Design. ti.com/lit/pdf/TIDUBE6 /отказано в доступе/
- Single-Supply Op Amp Design Techniques. ti.com/lit/pdf/SLOA030 /отказано в доступе/
- 4- to 20-mA Loop-Powered RTD Temperature-Transmitter Reference Design Using Smart Analog Combo of MSP430 MCUs. ti.com/lit/pdf/TIDUE64 /отказано в доступе/