25 простых аналоговых и цифровых функций по 25 центов каждая. Коммуникационные функции.

Предлагаемый цикл состоит из 25 кратких заметок о том, как на основе микроконтроллеров MSP430FR2xxx производства Texas Instruments реализовать 25 наиболее популярных узлов, присутствующих на многих системных платах. В каждой заметке рассказано об основных особенностях той или иной функции, а также приведены ссылки на информационные ресурсы, содержащие примеры кода и базовые версии проектов, что позволяет начать работу практически за считанные минуты. Представляем вниманию читателей первые четыре заметки.

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

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

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

25 предлагаемых описаний проектов разделены на четыре категории:

  • коммуникация;
  • ШИМ-устройства;
  • системные устройства:
  • таймеры.

Несмотря на то, что семейство MSP430 Value Line содержит более 100 изделий, все примеры этого цикла статей ориентированы на использование самых недорогих микроконтроллеров (таблица 1), обладающих наименьшим объемом памяти программ и ОЗУ, но, тем не менее, содержащих на борту богатый набор интегрированных периферийных модулей.

Таблица 1. Ключевые характеристики микроконтроллеров

Наименование Основные характеристики
MSP430FR2000 0,5 кбайт FRAM, 0,5 кбайт ОЗУ, компаратор
MSP430FR2100 1,0 кбайт FRAM, 0,5 кбайт ОЗУ, 10-разрядный АЦП, компаратор
MSP430FR2110 2,0 кбайт FRAM, 1,0 кбайт ОЗУ, 10-разрядный АЦП, компаратор
MSP430FR2111 3,75 кбайт FRAM, 1,0 кбайт ОЗУ, 10-разрядный АЦП, компаратор

16-разрядные микроконтроллеры MSP430FR2xxx обладают ультрамалым энергопотреблением и идеально подходят для приложений с батарейным питанием, например, для портативных устройств. Кроме этого, программный код и пользовательские настройки хранятся в энергонезависимой сегнетоэлектрической оперативной памяти с произвольным доступом (Ferroelectric Random Access Memory, FRAM), которая является более долговечной, экономичной и быстродействующей, чем традиционная Flash-память.

Все семейство микроконтроллеров MSP430 Value Line поддерживается экосистемой аппаратных и программных средств разработки Texas Instruments. Исходные примеры программного кода могут быть открыты и модифицированы с помощью собственной среды разработки компании Texas Instruments – Code Composer Studio (CCStudio) или большого количества программных инструментов сторонних производителей, например, IAR Embedded Workbench (IDE). Все примеры исходного кода проверены на оценочной плате MSP-TS430PW20 с использованием высокоскоростного программатора-отладчика MSP-FET. Тем не менее, разработчики могут легко модифицировать предлагаемое программное обеспечение для использования более простых оценочных плат, например, MSP-EXP430FR2311, поэтому в статьях также содержатся рекомендации по размещению и оптимизации программного кода, учитывающие специфику перехода с MSP-TS430PW20 на MSP-EXP430FR2311.

Особенности семейства MSP430 Value Line

Семейство MSP430 Value Line фактически избавило разработчиков от необходимости принятия компромиссных решений, обеспечивая высокую производительность 16-разрядных приложений по цене 8-битных микроконтроллеров. Более того, все микроконтроллеры MSP430 Value Line (таблица 2) совместимы по набору инструкций с остальными представителями семейства MSP430, с которыми можно познакомиться на официальном сайте Texas Instruments. Это позволяет при необходимости перенести необходимую функцию на более мощный микроконтроллер с большим количеством возможностей.

Таблица 2. Ключевые особенности микроконтроллеров MSP430 Value Line

Наименование MSP430FR2x MSP430FR4x
Память До 16 кбайт, 1015 циклов перезаписи, гибкое сегментирование До 16 кбайт, 1015 циклов перезаписи, гибкое сегментирование
Корпус TSSOP, VQFN, LQFP, DSBGA 16…64 вывода TSSOP или LQFP 48…64 вывода
Периферийные модули 10-разрядный АЦП, компаратор, операционный усилитель с токовой обратной связью (трансимпедансный усилитель), инфракрасный приемопередатчик, I2C, SPI, UART 10-разрядный АЦП, ЖКИ-драйвер (256 сегментов), инфракрасный приемопередатчик, I2C, SPI, UART
Потребляемый ток Выключенный 15 нА 15 нА
Режим ожидания 700 нА 700 нА
Активный режим 120 мкА/МГц 120 мкА/МГц
Оценочные платы MSP-EXP430FR2433,
MSP-EXP430FR2311
MSP-EXP430FR4133

Контроллер шины 1-Wire
(Single-Wire Communication Host With MSP430™ MCUs)

Для уменьшения количества физических соединений в микропроцессорных системах энергонезависимая память, устройства контроля доступа, датчики температуры, цифровые переключатели, мониторы аккумуляторных батарей и многие другие узлы часто подключаются с помощью всего двух проводов, используемых как для питания, так и передачи информации. Поскольку один из проводов является общим, то такой способ подключения стал называться однопроводным. Для связи с однопроводными устройствами обычно используются специализированные интерфейсы и протоколы, например, 1-Wire или SDQ™, каждый из которых можно легко реализовать на основе микроконтроллера MSP430™.

В проекте приведен пример ведущего устройства однопроводной шины, контролирующего один ведомый узел. После компиляции примера исходного кода количество инструкций не превышает 512, что позволяет использовать микроконтроллер MSP430FR2000, обладающий наименьшими объемами памяти. При необходимости проект может быть легко модифицирован, например, увеличением количества команд или добавлением ведомых устройств. Исходные файлы проекта можно скачать с официального сайта Texas Instruments.

Реализация

Большинство 1-Wire или SDQ-устройств используют технологию фантомного питания, когда для передачи энергии и информации используются одни и те же провода. Для обмена данными обычно используются полудуплексные методы передачи с подключением ведущего и ведомого устройств к информационной линии по схеме монтажного ИЛИ. В этом случае формирование высокого логического уровня и питание ведомых устройств обеспечиваются с помощью дополнительного резистора (рисунок 1), сопротивление которого зависит от типа микросхем и их количества на информационной шине. Однако некоторые микросхемы все же требуют отдельной линии питания, поэтому перед адаптацией базового проекта под конкретную задачу необходимо внимательно изучить техническую документацию на конкретный прибор или устройство.

Рис. 1. Типовая схема подключения 1-Wire- или SDQ-устройств

Рис. 1. Типовая схема подключения 1-Wire- или SDQ-устройств

Во всех однопроводных устройствах применяется метод последовательной передачи информации с использованием общедоступных протоколов. Отсутствие специфических требований к информационной шине позволяет использовать для обмена данными любой доступный порт GPIO микроконтроллера.

В общем случае для обмена данными применяются три типа команд: сброс, запись и чтение. Кроме этого, все однопроводные устройства используют механизм транзакций, требуя от ведущего устройства передачи определенной последовательности команд, обычно включающей инициализацию и идентификацию, после которых уже передаются функциональные команды и дополнительная информация. Идентификация устройств обычно производится с помощью уникального для каждого прибора 64-разрядного номера, аналогичного адресу на шине I2C, что позволяет подключать к одной линии несколько однотипных устройств и избирательно работать с каждым из них. Полный список и назначение функциональных команд зависит от типа ведомого устройства и обычно содержится в его технической документации.

В базовом варианте проекта приведен простой пример обнаружения ведомого устройства с последующим получением его идентификационного номера. Необходимые длительности временных интервалов формируются с помощью таймера B (Timer B). Кроме таймера B, никакие другие периферийные модели не задействованы.

Обмен данными начинается с подачи импульса сброса (Reset Condition), после чего ведомое устройство сигнализирует о своем присутствии путем установки низкого уровня на информационной линии (Preset Pulse) (рисунок 2). После этого микроконтроллер передает команду “Send ROM”, в ответ на которую ведомое устройство передает 64-разрядное слово (ROM Identification), содержащее информацию о типе устройства, его идентификационном номере, а также контрольную сумму (CRC), позволяющую проверить правильность полученной информации (рисунок 3). Следующий сеанс обмена данными аналогичен и начинается с подачи импульса сброса.

Рис. 2. Первый этап обмена данными

Рис. 2. Первый этап обмена данными

Рис. 3. Второй этап обмена данными

Рис. 3. Второй этап обмена данными

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

Возможные модификации

Большая часть исходного кода базового проекта посвящена реализации однопроводного интерфейса на низком уровне путем формирования необходимых временных интервалов, контроля уровней сигналов и тому подобного. Дальнейшие высокоуровневые команды уже не требуют большого количества инструкций, поэтому объема памяти микроконтроллера MSP430FR2000 вполне хватает для реализации большинства систем. Однако если 512 инструкций все же окажется недостаточно, всегда есть возможность быстрого переноса исходного кода на более мощный микроконтроллер из семейства MSP430, например, MSP430FR2111.

Для реализации протокола однопроводных интерфейсов необходимо, чтобы микроконтроллер работал с тактовой частотой 4 МГц или выше. Для уменьшения количества инструкций необходимые временные интервалы формируются с помощью таймера В. При этом во время формирования последовательности импульсов следует использовать только энергосберегающий режим LPM0, поскольку режимы LPM3 и LPM4 не обеспечат необходимую скорость пробуждения. Это ограничение касается только активной фазы работы. Во время простоя микроконтроллер может находиться в любом из энергосберегающих режимов. Величина потребляемого тока в различных режимах (Active и LPMx) зависит от конфигурации системы (тактовая частота, тип генератора, использование SVS и так далее) и приведена в техническом описании на конкретный микроконтроллер. В базовой версии проекта микроконтроллер работает на тактовой частоте 8 МГц, потребляя при напряжении питания 3 В в активном режиме 1,2 мА, а в спящем – 18 мкА (используется режим LPM3 с тактированием от внутреннего низкочастотного опорного генератора REFO).

Данный проект, комплект технической документации (SDQ) и семейство MSP430 являются товарными знаками Texas Instruments. Все остальные товарные знаки являются собственностью соответствующих компаний.

При необходимости на основе микроконтроллеров с сегнетоэлектрической памятью FRAM семейства MSP430 можно также разработать недорогую энергонезависимую память с доступом к информации по интерфейсу 1-Wire. Пример реализации этого узла приведен в проекте TIDM-1WIREEEPROM, исходные коды которого также доступны на официальном сайте Texas Instruments.

Мост UART-UART
(UART-to-UART Bridge Using Low-Memory MSP430™ MCUs)

Для того чтобы два устройства могли обмениваться информацией, необходимо, чтобы они «говорили на одном языке», в качестве которого в технике широко используется асинхронный последовательный интерфейс (Universal Asynchronous Receiver Transmitter, UART). Но даже если устройства и используют один «язык», всегда существуют его «диалекты» – параметры интерфейса, которые для разных устройств могут отличаться. Для UART такими параметрами являются скорость передачи данных, разрядность, тип бита четности и количество стоповых бит. Например, скорость передачи данных во многом зависит от объема передаваемой информации и обычно находится в диапазоне 1200…115200 бод, хотя при передаче больших массивов данных она может достигать 921600 бод.

На практике иногда возникают ситуации, когда два устройства используют один и тот же интерфейс, но с разными настройками, согласовать которые не представляется возможным. В этом случае мост UART-UART на основе микроконтроллера MSP430 может стать простым и бюджетным решением, позволяющим обеспечить обмен данными между двумя устройствами с разными параметрами интерфейса UART. В базовом варианте проекта, исходные коды которого можно загрузить с официального сайта Texas Instruments, мост UART-UART реализован на основе микроконтроллера MSP430FR2000 с использованием модулей универсального последовательного интерфейса (eUSCI) и таймера.

Реализация

Структурная схема UART-UART-моста, реализованного на отладочной плате MSP-TS430PW20, показана на рисунке 4. Перед началом работы с проектом необходимо убедиться, что перемычки JP14 и JP15 установлены, а JP13 – удалена. Кроме этого, следует удалить все перемычки с контактных групп JP11, JP17 и JP18, а перемычку на контакте J16 установить в положение “UART”. Такая конфигурация соединений позволит использовать обратный канал программатора-отладчика MSP-FET в качестве эмулятора низкоскоростного UART-устройства. Для этого с помощью соединительных проводов подключите контакт 14 разъема J4 (J4.14) (порт P2.0) к контакту 3 разъема JP11 (JP11.3), а также контакт J4.13 (порт P2.1) – к контакту JP11.4. Для эмуляции ведущего устройства используется персональный компьютер, который можно подключить к отладочной плате с помощью высокоскоростного (с максимальной скоростью не менее 1 Мбод) преобразователя интерфейсов USB-UART, имеющего выходные сигналы с TTL-уровнями. Выход преобразователя ТХ следует подключить к контакту J4.16 (порт P1.6), вход RX – к контакту J4.15 (порт P1.7), а общий провод GND – к контакту J2.2 (GND).

Рис. 4. Структурная схема моста UART-UART

Рис. 4. Структурная схема моста UART-UART

После этого необходимо создать на персональном компьютере два терминальных соединения, которые будут имитировать ведущее и ведомое устройство соответственно. Для этого можно использовать любую подходящую программу, например, Tera Term. Терминал ведущего устройства подключите к COM-порту, созданному адаптером USB-UART, и установите скорость передачи 921600 бод. Терминал ведомого устройства подключите к COM-порту MSP Application UART1, созданному программатором MSP-FET, установив после этого скорость передачи 9600 бод. Работоспособность моста можно проверить, введя в любом из окон какой-нибудь символ и нажав “Enter”. При правильно собранной схеме этот символ сразу же появится в другом терминальном окне.

Программное обеспечение содержит выполняемый сразу после сброса код инициализации, содержащий инструкции для настройки тактового генератора с цифровым управлением (Digitally Controlled Oscillator, DCO), модуля eUSCI, настраиваемого в режиме UART, портов ввода-вывода и модуля таймера. После этого микроконтроллер переходит в спящий режим с пониженным энергопотреблением (LPM0). При обнаружении активности на любом из каналов UART формируется аппаратное или программное прерывание, переводящее микроконтроллер в активный режим, в котором он принимает данные аппаратным или программным способом, а затем как можно быстрее передает их по другому каналу. После передачи данных микроконтроллер снова переходит в спящий режим, в котором будет находиться до следующего сеанса обмена. Алгоритм приема и передачи данных программным способом показан на рисунке 5.

Рис. 5. Алгоритм приема и передачи информации программным способом

Рис. 5. Алгоритм приема и передачи информации программным способом

Возможные модификации

В базовом варианте проекта реализован только полудуплексный вариант обмена, то есть в каждый момент времени данные могут передаваться только в одном направлении. Передача информации осуществляется 8-битными пакетами без бита четности, с одним стоповым битом. Младший байт (Least Significant Bit, LSB) передается первым. Для обеспечения максимальной производительности микроконтроллера MSP430FR2000 аппаратный модуль eUSCI должен подключаться к более высокоскоростному интерфейсу UART.

При приеме нескольких пакетов с помощью модуля eUSCI, пока идет передача первого пакета по низкоскоростному интерфейсу, второй хранится в буфере UCRXBUF. При последовательной передаче более двух пакетов данные могут быть утеряны, поскольку аппаратный модуль eUSCI имеет только однобайтовый буфер для приема данных. Это ограничение не распространяется на прием информации программным способом.

Для изменения скорости передачи данных по высокоскоростному интерфейсу необходимо настроить модуль eUSCI в соответствии с технической документацией на микроконтроллеры MSP430FR4xx или MSP430FR2xx. Для изменения скорости обмена программным методом необходимо изменить значение длительности бита WHOLE_BIT в исходном коде проекта, равное отношению тактовой частоты (SMCLK), которая в базовом варианте проекта составляет 16 МГц, к скорости передачи данных. При этом длительность половины бита HALF_BIT равна половине значения WHOLE_BIT (рисунок 6). После изменения настроек необходимо перестроить проект для того чтобы они вступили в силу. Максимальные скорости передачи данных по высокоскоростному и низкоскоростному интерфейсам, которые можно реализовать на основе микроконтроллера MSP430FR2000, приведены в таблице 3.

Рис. 6. Формат данных интерфейса UART

Рис. 6. Формат данных интерфейса UART

Для уменьшения размера кода при приеме и передаче сигнала программным способом используются одни и те же подпрограммы. В таблице 4 приведены максимальные длительности задержек между получением и началом отправки пакетов. При адаптации проекта под конкретную задачу следует помнить, что длительности задержек увеличиваются при уменьшении скоростей передачи данных.

Таблица 3. Максимальные скорости передачи данных

Тип приема/передачи данных Максимальная скорость передачи, бод
Аппаратный (HW) (высокоскоростной) 921600
Программный (SW) (низкоскоростной) 38400

Таблица 4. Длительность задержек при передаче данных

Направление передачи данных Скорость приема данных, бод Скорость передачи данных, бод Длительность задержки, мкс Средняя длительность задержки, мкс
HW RX → SW TX 921600 38400 21 22
SW RX → HW TX 38400 921600 23
HW RX → SW TX 921600 9600 60 58,5
SW RX → HW TX 9600 921600 57

Для уменьшения энергопотребления при отсутствии обмена данными используется энергосберегающий режим LPM0. Дополнительно уменьшить энергопотребление при простое можно с помощью других режимов пониженного энергопотребления LPMх, однако их активизация может потребовать использования дополнительного внешнего кварцевого резонатора и ограничить максимальную скорость передачи данных. Для реализации более сложных функций, таких как управление информационными потоками, многобайтный обмен данными, контроль бита четности и длительности стоповых бит, обнаружение ошибок, например, путем введения контрольной суммы CRC, возможно, потребуется использовать более мощный контроллер, например, MSP430FR2100 с объемом памяти 1 кбайт.

Мост UART-SPI
(UART-to-SPI Bridge Using Low-Memory MSP430™ MCUs)

Для того чтобы два устройства могли обмениваться информацией, необходимо, чтобы они «говорили на одном языке», однако не всегда эти языки совпадают. Примером этому может служить случай, когда одно устройство для обмена данными использует асинхронный последовательный интерфейс (Universal Asynchronous Receiver Transmitter, UART), а второе – синхронный последовательный периферийный интерфейс (Serial Peripheral Interface, SPI). В этом случае необходим «переводчик» – устройство, которое способно преобразовать данные из одного формата в другой и обеспечить обмен информацией. Именно такое простое и недорогое решение представлено в проекте «Мост UART-SPI на основе семейства малопотребляющих микроконтроллеров MSP430™».

В базовом варианте проекта, исходные коды которого можно загрузить с официального сайта Texas Instruments, мост UART-SPI реализован на основе микроконтроллера MSP430FR2000 с использованием модулей универсального последовательного интерфейса (eUSCI), сконфигурированного для работы в режиме ведущего SPI-устройства, и таймера.

Реализация

Структурная схема UART-SPI-моста, реализованного на отладочной плате MSP-TS430PW20, показана на рисунке 7. Перед началом работы с проектом необходимо убедиться, что перемычки JP14 и JP15 установлены, а JP13 – удалена. Кроме этого следует удалить все перемычки с контактных групп JP11, JP17 и JP18, а перемычку на контакте J16 установить в положение “UART”. Такая конфигурация соединений позволит использовать обратный канал программатора-отладчика MSP-FET в качестве эмулятора UART-устройства. С помощью соединительных проводов подключите контакт 14 разъема J4 (J4.14) (порт P2.0) к контакту 3 разъема JP11 (JP11.3), а контакт J4.13 (порт P2.1) соедините с контактом JP11.4. Линию синхронизации CLK внешнего SPI-устройства необходимо подключить к контакту J4.17 (порт P1.5), линию MISO – к J4.16 (порт P1.6), линию MOSI – к J4.15 (порт P1.7), а общий провод GND – к контакту J2.2 (GND). При необходимости для проверки работоспособности собранной схемы простое SPI-устройство можно реализовать самостоятельно на основе комплекта MSP430FR2311 LaunchPad™. В данном проекте мост UART-SPI выполняет функцию ведущего SPI-устройства, использующего трехпроводную версию интерфейса с низким активным уровнем и нулевой фазой (передаваемые данные сдвигаются по фронту синхронизирующего сигнала).

Рис. 7. Структурная схема моста UART-SPI

Рис. 7. Структурная схема моста UART-SPI

Для начала работы с проектом создайте на персональном компьютере терминальное соединение, подключив его к интерфейсу UART обратного канала программатора-отладчика MSP-FET путем выбора COM-порта MSP Application UART1, установив при этом скорость обмена данными 9600 бод. Для проверки работоспособности проекта введите в терминальном окне какой-нибудь символ и передайте его через COM-порт, следуя руководству пользователя терминальной программы. Этот символ будет передан в ведомое SPI-устройство и при правильно собранной схеме возвращен обратно в терминальную программу, отобразившись в ее приемном окне. В базовом варианте проекта обмен данными должен инициироваться UART-устройством, поскольку интерфейс SPI сконфигурирован в режиме ведущего, поэтому обмен данными между мостом и ведомым SPI-устройством инициируется микроконтроллером моста. При необходимости проект может быть изменен таки образом, что UART-SPI-мост будет выполнять функцию ведомого SPI-устройства. В этом случае обмен данными будет инициировать ведущее устройство, подключенное к порту SPI.

Программное обеспечение микроконтроллера содержит код инициализации, в котором происходит настройка тактового генератора с цифровым управлением (Digitally Controlled Oscillator, DCO), модуля eUSCI, настраиваемого для работы в режиме SPI, портов ввода-вывода и модуля таймера. После инициализации микроконтроллер переходит в спящий режим с пониженным энергопотреблением (LPM0). При обнаружении активности на линиях интерфейсов UART или SPI формируются соответствующие прерывания, при возникновении которых микроконтроллер переходит в активный режим, в котором он принимает данные, а затем как можно быстрее передает их по другому каналу. После этого микроконтроллер снова переходит в спящий режим, в котором будет находиться до следующего сеанса обмена.

Поскольку микроконтроллер MSP430FR2000 содержит только один аппаратный модуль приемопередатчика последовательного интерфейса eUSCI, задействованного для обмена информацией по каналу SPI, то обмен данными по интерфейсу UART осуществляется программным способом. В этом режиме порты P2.0 и P2.1 конфигурируются как обычные порты ввода-вывода (GPIO). При этом порт P2.1, через который осуществляется прием данных по интерфейсу UART, при установке низкого уровня генерирует прерывание, выводящее микроконтроллер из спящего режима.

В обработчике прерывания порта P2.1 происходит активизация и настройка таймера, после чего микроконтроллер снова переходит в спящий режим (рисунок 5). Последующие пробуждения микроконтроллера уже происходят по прерыванию от таймера. Первое пробуждение от таймера происходит через время, равное половине длительности бита, а последующие – через интервал времени, равный длительности бита. Таким образом микроконтроллер просыпается и анализирует состояние входной линии в середине каждого бита (рисунок 6). Принятый пакет данных сохраняется в буфере SPI TX, а затем отправляется через линию MISO в ведомое SPI-устройство.

После приема пакета данных по интерфейсу SPI через линию MOSI формируется прерывание UCRXIFG, в обработчике которого происходит копирование полученной информации из приемного буфера SPI RX и подготовка микроконтроллера к передаче информации через интерфейс UART. Передача данных по интерфейсу UART, как и прием, осуществляется программным способом по аналогичному алгоритму (рисунок 2). После завершения передачи данных через интерфейс UART микроконтроллер переходит в спящий режим с пониженным энергопотреблением, в котором будет находиться до начала следующего сеанса обмена.

Возможные модификации

В базовом варианте проекта реализован только полудуплексный вариант обмена, то есть в каждый момент времени данные могут передаваться только в одном направлении. Передача информации осуществляется 8-битными пакетами без бита четности с одним стоповым битом. Младший байт передается первым (Least Significant Bit, LSB).

При приеме двух байт через интерфейс SPI в процессе передачи по интерфейсу UART первого пакета второй хранится в буфере UCRXBUF. При последовательной передаче более двух пакетов данные могут быть утеряны, поскольку аппаратный модуль eUSCI имеет только однобайтовый буфер для приема данных, и в этом случае через интерфейс UART будет отправлен только последний из принятых пакетов. Однако в базовой версии проекта такая ситуация невозможна, поскольку UART-SPI-мост сконфигурирован в режиме ведущего, а значит, количество принятых пакетов целиком и полностью определяется микроконтроллером. Также отсутствует какое-либо жесткое аппаратное ограничение (не считая объема памяти) и на количество последовательно принимаемых или передаваемых пакетов по интерфейсу UART.

Для изменения скорости обмена программным методом по интерфейсу UART необходимо изменить значение длительности бита WHOLE_BIT в исходном коде проекта, равное отношению тактовой частоты (SMCLK), которая в базовом варианте проекта составляет 16 МГц, к скорости передачи данных. При этом длительность половины бита HALF_BIT равна половине значения WHOLE_BIT (рисунок 6). В исходном варианте проекта скорость обмена данными по интерфейсу SPI равна половине тактовой частоты – 8 МГц. При необходимости ее изменения следует внимательно изучить техническую документацию на микроконтроллеры семейства MSP430FR4xx и MSP430FR2xx. После изменения настроек необходимо перестроить проект для того чтобы они вступили в силу, а при изменении скорости обмена данными по интерфейсу UART, возможно, следует дополнительно перезапустить терминальную программу с новыми настройками. Максимальные скорости передачи данных по интерфейсам UART и SPI приведены в таблице 5. Обратите внимание, что эта информация приведена для микроконтроллера MSP430FR2000 и во многом зависит от его тактовой частоты.

Таблица 5. Максимальные скорости передачи данных

Интерфейс Максимальная скорость передачи
SPI 8 МГц (тактовая частота лини CLK)
UART 38400 бод

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

Поскольку объем памяти микроконтроллера MSP430FR2000 ограничен, то для реализации более сложных функций, таких как управление информационными потоками, многобайтный обмен данными, контроль бита четности и длительности стоповых бит, обнаружение ошибок, например, путем введения контрольной суммы CRC, возможно, потребуется использовать более мощный контроллер, например, MSP430FR2100 с объемом памяти 1 кбайт.

Поскольку обмен данными происходит в полудуплескном режиме, то модуль eUSCI можно использовать для передачи информации по интерфейсам как SPI, так и UART. Такая конфигурация позволит уменьшить размер прошивки, однако увеличит задержки передачи информации из-за необходимости перестройки модуля eUSCI.

Расширитель портов ввода-вывода с управлением по SPI
(SPI I/O Expander Using Low-Memory MSP430™ MCUs)

Во многих приложениях требуется управление различными простыми устройствами, например, светодиодами, по различным алгоритмам, например, таким как включение с определенной частотой. Для выполнения этих функций достаточно стандартных портов ввода-вывода, однако в некоторых случаях микроконтроллеры просто могут не иметь нужного количества выводов. В этом случае можно использовать простое и экономичное решение на основе микроконтроллеров MSP430, позволяющее фактически расширить количество стандартных портов ввода-вывода, но при этом управлять ими через интерфейс SPI. В базовом варианте проекта, исходные файлы которого можно загрузить с официального сайта Texas Instruments, расширитель реализован на сконфигурированном как ведомое SPI-устройство микроконтроллере MSP430FR2000, и позволяет управлять восемью портами ввода-вывода через интерфейс SPI. При этом каждый порт поддерживает следующие функции:

  • установка режима работы вывода (вход/выход);
  • установка состояния (в режиме выхода);
  • чтение текущего состояния.

Реализация

Центральный процессор, работающий в режиме ведущего SPI-устройства, подключается к модулю eUSCI микроконтроллера MCP430FR2000 с помощью четырех линий (CLK, MOSI, MISO и CS/STE) (рисунок 8) и с помощью набора команд может управлять состоянием восьми выводов (линий).

Рис. 9. Структурная схема расширителя

Рис. 8. Структурная схема расширителя

Для соединения с расширителем интерфейс SPI центрального процессора должен быть настроен следующим образом:

  • выбрана четырехпроводная версия SPI с активным малым уровнем на линии STE;
  • активное состояние тактового сигнала – низкий уровень;
  • изменение данных – по фронту тактового сигнала, а фиксация – по спаду;
  • размер пакета – 8 бит, старший бит должен передаваться первым (Most Significant Bit, MSB).

Линия STE предназначена для активизации модуля SPI микроконтроллера MCP430FR2000. При высоком уровне сигнала на ней данные, передаваемые по SPI-интерфейсу, восприниматься не будут. Управление расширителем осуществляется с помощью 16-битных пакетов, первый байт которых содержит код команды, а второй – данные. При получении команд происходит установка регистров PxDIR или PxOUT и, соответственно, настройка режима работы каждой линии порта (вход/выход) или установка ее состояния при условии, что она настроена на выход. При запросе информации о текущем уровне сигнала на линиях порта центральному процессору отправляется байт данных, содержащий копию информации из регистра PxIN.

В базовом варианте проекта реализовано три типа команд (таблица 6):

  • чтение состояния (Read);
  • установка режима работы (Write-DIR);
  • установка значения (Write-OUT) линий.

При получении команды “Read” расширитель считывает текущее значение всех восьми линий и оправляет эти данные центральному процессору. При получении команды “Write-DIR” режим работы всех линий устанавливается в соответствии с данными, переданными во втором байте команды, а команда “Write-OUT” в свою очередь устанавливает все линии порта, предварительно установленные в режим выхода, в необходимое состояние.

Таблица 6. Коды команд (первый байт)

Команда D7 D6 D5 D4 D3 D2 D1 D0
Read 1 0 0 0 0 0 0 0
Write-DIR 0 0 0 0 0 0 0 0
Write-OUT 0 0 1 0 0 0 0 0

После передачи кода команды центральный микроконтроллер должен передать еще один байт, содержащий информацию о том, в какое состояние необходимо установить тот или иной вывод (таблица 7). Для команды “Read” все биты этого байта должны быть равны 0. При передаче команды “Write-DIR” значение этого байта копируется в регистр PxDIR и определяет режим работы каждой линии порта (0 – вход, 1 – выход). Информация, передаваемая с командой “Write-OUT”, копируется в регистр PxOUT и, если соответствующая линия настроена на выход, устанавливает линию порта в состояние, определяемое соответствующим битом.

Таблица 7. Данные команды (второй байт)

Команда D7 D6 D5 D4 D3 D2 D1 D0
Read 0 0 0 0 0 0 0 0
Write-DIR Pin 7…0: 0 – режим входа, 1 – режим выхода
Write-OUT Pin 7…0: 0 – низкий уровень, 1 – высокий уровень

При получении команды “Read” в центральный процессор передаются данные, скопированные из регистра PxIN, в которых находится информация о текущем состоянии линий порта, независимо от того, в каком режиме они находятся (таблица 8).

Таблица 8. Данные, передаваемые центральному процессору

Команда D7 D6 D5 D4 D3 D2 D1 D0
Read Pin 7…0: 0 – низкий уровень, 1 – высокий уровень

Результаты тестирования

Центральный процессор передает данные по интерфейсу SPI в соответствии с его текущими настройками. Тестирование базового проекта показало, что тактовая частота синхронизирующей шины приблизительно равна 1 МГц. Продолжительность сеанса обмена данными – время от установки низкого уровня на линии STE и до перевода ее в исходное состояние – также во многом зависит от настроек SPI-модуля центрального процессора и приблизительно равна 0,136 мс. Время выполнения команды определяется моделью микроконтроллера, его тактовой частотой, а также типом энергосберегающего режима (LPM), используемого во время простоя. В базовом варианте проекта при использовании микроконтроллера MSP430FR2000, работающего на стандартной тактовой частоте 1 МГц с использованием режима LPM3, время выполнения составило приблизительно 0,3 мс. Улучшить быстродействие расширителя можно путем увеличения тактовой частоты или выбором энергосберегающих режимов с меньшим временем пробуждения, однако это может привести к увеличению размера кода инициализации микроконтроллера и увеличению потребляемого тока.

Тестирование времени выполнения команды “Write-OUT”, согласно которой линия Pin 0 должна быть переведена в состояние высокого уровня, показали, что время выполнения – длительность отрезка времени от первой установки низкого уровня на линии STE до перевода линии Pin 0 в нужное состояние – равно 0,295 мс (рисунок 9). Результаты тестирования времени выполнения команды “Write-DIR” дало аналогичные результаты.

Рис. 10. Результаты тестирования команды “Write-OUT”

Рис. 9. Результаты тестирования команды “Write-OUT”

Тестирование времени выполнения команды “Read” показало, что состояние линий порта считывается не позднее чем через 0,359 мс от момента начала сеанса обмена (первого перевода линии STE на низкий уровень). В приведенном примере на рисунке 10) в качестве иллюстрации линия порта P1.1 через 0,359 мс после начала сеанса обмена была переведена из состояния низкого уровня в состояние высокого. При этом в принятых данных (Slave Data = 0xF1 = b11110001) состояние этой линии определено как низкое. Это означает, что информация из регистра PxIN была скопирована в буфер UCA0TXBUF до этого времени. Также обратите внимание, что во время чтения ответа расширителя центральный процессор может передавать любую информацию, в данном примере Master Dummy Data = 0xFF.

Рис. 11. Результаты тестирования команды “Read”

Рис. 10. Результаты тестирования команды “Read”

•••

Наши информационные каналы

О компании Texas Instruments

В середине 2001 г. компании Texas Instruments и КОМПЭЛ заключили официальное дистрибьюторское соглашение, которое явилось результатом длительной и успешной работы КОМПЭЛ в качестве официального дистрибьютора фирмы Burr-Brown. (Как известно, Burr-Brown вошла в состав TI так же, как и компании Unitrode, Power Trend и Klixon). С этого времени компания КОМПЭЛ получила доступ к поставке всей номенклатуры производимых компанией TI компонентов, ...читать далее

Товары
Наименование
MSP430FR2000IPW16 (TI)
MSP430FR2000IRLLT (TI)
MSP430FR2100IPW16R (TI)
MSP430FR2100IRLL (TI)
MSP430FR2110IPW16R (TI)
MSP430FR2110IRLLT (TI)
MSP430FR2111IPW16R (TI)
MSP430FR2111IRLLR (TI)
MSP430FR4131IG56R (TI)
MSP430FR4132IG56 (TI)
MSP430FR2632IRGER (TI)
MSP430FR2532IRGET (TI)