Другой разновидностью реализации последовательного интерфейса является модуль универсального последовательного коммуникационного интерфейса (USCI). Модули USCI поддерживают несколько режимов передачи данных по последовательному каналу, при этом разные модули USCI поддерживают различные режимы. Модули USCI имеют уникальное обозначение. Так, модуль USCI_A отличается от модуля USCI_B и т. д. Если в конкретном устройстве имеется более одного модуля USCI с идентичными функциями, то в обозначение таких модулей добавляется порядковый номер. Например, если в устройстве содержится два модуля USCI_A, то они имеют обозначения USCI_A0 и USCI_A1.
Модули USCI_A поддерживают:
- режим UART; формирование импульсов для обмена по протоколу IrDA; автоматическое определение скорости обмена для поддержки протокола LIN; режим SPI.
Модули USCI_B поддерживают:
- режим I2C; режим SPI.
IrDA (англ. Infrared Data Association — Инфракрасный порт, ИК-порт) — группа стандартов, описывающая протоколы физического и логического уровня передачи данных с использованием инфракрасного диапазона световых волн в качестве среды передачи [11].
UART (англ. Universal Asynchronous Receiver-Transmitter — Универсальный асинхронный приёмопередатчик, УАПП) — узел вычислительных устройств, предназначенный для связи с другими цифровыми устройствами. Преобразует заданный набор данных в последовательный вид так, чтобы было возможно передать их по однопроводной цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применяется в системах на базе компьютеров, микроконтроллеров, программируемых логических контроллеров.
В режиме UART модули USCI_Ax позволяют подключать микроконтроллеры семейства MSP430 к внешним устройствам с помощью выводов RXD (вход приемника) и TXD (выход передатчика). UART – полнодуплексный интерфейс. Это значит, что приемник и передатчик работают независимо друг от друга. Более того, передатчик или приемник можно отдельно отключить, освободив ножку контроллера для других нужд.
Режим UART имеет следующие особенности:
- 7- или 8-битные данные с контролем чётности, нечётности или без контроля; независимые сдвиговые регистры передачи и приёма; раздельные буферные регистры передачи и приёма; изменяемый порядок передачи и приёма битов; встроенная поддержка коммуникационных протоколов idle_line (неактивная линия) и address_bit (адресный бит) для многопроцессорных систем; обнаружение приёмником фронта старт-бита для автоматического выхода из режимов пониженного энергопотребления; программируемая скорость обмена с использованием модуляции для поддержки дробных значений скорости; флаги обнаружения и игнорирования ошибок; флаг обнаружения адреса; независимые прерывания передачи и приёма.
Передача (соответственно и прием) сообщений осуществляется фиксированными пакетами битов (такой пакет называют символом или кадром). Передача символа в UART осуществляется по одному биту в равные промежутки времени. Этот временной промежуток определяется заданной скоростью UART и для конкретного соединения указывается в бодах (что в данном случае соответствует битам в секунду). В режиме UART модуль USCI передаёт и принимает данные с заданной скоростью асинхронно по отношению к другому устройству. Синхронизация приёма/передачи каждого символа осуществляется на основе выбранной скорости обмена модуля. Блоки передачи и приёма должны использовать одно и то же значение скорости обмена. Типовыми скоростями обмена при тактовой частоте микропроцессора 16 МГц являются 9600, 19200, 38400, 57600, 115200, 230400 и 460800 бод.
Как показано на рис. 2.9, символ, передаваемый UART, содержит старт-бит, семь или восемь битов данных, бит чётности, бит адреса (в соответствующем режиме), а также один или два стоп-бита. Порядок передачи битов данных программируется. При использовании UART данные обычно передаются начиная с младшего значащего бита.

Рис. 2.9. Формат символа
Помимо собственно информационного потока UART автоматически вставляет в поток синхронизирующие метки, так называемые стартовый и стоповый биты, а также биты проверки на четность/нечетность. При приёме эти лишние биты удаляются из потока. Обычно полезная информация передается байтами (8 бит), однако возможно передавать по 7 бит. Могут вставляться два стоповых бита вместо одного, что делается для уменьшения вероятности рассинхронизации приёмника и передатчика при плотном трафике. Приёмник игнорирует второй стоповый бит, воспринимая его как короткую паузу на линии.
Если посылка содержит более одного байта, каждый следующий байт передается отдельным кадром. Условием правильной передачи и приема данных является задание одинаковых параметров, как для приемника, так и для передатчика (скорость, количество бит данных, бит четности, количество стоп- битов).
Принято соглашение, что пассивным (в отсутствие потока данных) состоянием входа и выхода UART является логическая 1. Стартовый бит всегда логический 0, поэтому приёмник UART ждёт перепада из 1 в 0 и отсчитывает от него временной промежуток в половину длительности бита (середина передачи стартового бита). Если в этот момент на входе всё ещё 0, то запускается процесс приёма минимальной посылки. Для этого приёмник отсчитывает 9 битовых длительностей подряд (для 8-бит данных) и в каждый момент фиксирует состояние входа. Первые 8 значений являются принятыми данными, последнее значение проверочное (стоп-бит). Значение стоп-бита всегда 1, если реально принятое значение иное, UART фиксирует ошибку.
3.3. Встроенный датчик температуры
Некоторые модели микроконтроллеров MSP430 имеют встроенный датчик температуры. К их числу относятся и микроконтроллеры, поставляемые в комплекте с отладочной платой LaunchPad EXP-430G2: MSP430G2452 и MSP430G2553. Последний микроконтроллер (MSP430G2553), поставляемый в комплекте с LaunchPad, имеет прошивку демонстрационной программы измерения температуры. Поскольку датчик температуры – встроенный, измеряется температура корпуса микроконтроллера. Программа работает следующим образом:
· при подаче питания на плату начинают мигать светодиоды;
· если нажать кнопку на линии порта P1.3 (PUSH2), то температура начинает считываться, первый результат после нажатия запоминается как эталонный и в сэмулированный асинхронный приемо-передатчик (COM-порт) передается значение 248 для индикации нажатия;
· текущее значение температуры, выраженное в градусах Фаренгейта, выдается в COM-порт;
· если текущая измеренная температура больше эталонного значения — повышается яркость свечения красного светодиода, если меньше — зеленого.
Датчик температуры для измерений подключается ко входу аналого-цифрового преобразователя (АЦП). Для этого используется фиксированный аналоговый вход АЦП с номером INCHx = 10102. При конфигурировании АЦП на измерение температуры нужно установить величину опорного напряжения.
Типичная передаточная характеристика датчика температуры приведена на рис. 2.10. При использовании датчика температуры время выборки должно быть не менее 30 мкс. Этот датчик имеет большую погрешность смещения и для получения абсолютных значений температуры требует калибровки.

Рис. 2.10. Типичная передаточная характеристика встроенного датчика температуры: TA – температура, V – выходное напряжение датчика.
3.4. Вывод символьной информации на знакосинтезирующий индикатор по последовательному каналу передачи данных
Для отображения символьной информации (буквенно-цифровой) часто используются знакосинтезирующие индикаторы – светодиодные или жидкокристаллические. Пример 7-сегментного светодиодного индикатора с десятичной точкой приведен на рис. 2.11.

Рис. 2.11. 7-сегментный светодиодный индикатор с десятичной точкой
Семисегментный индикатор, как говорит его название, состоит из семи элементов индикации (сегментов), включающихся и выключающихся по отдельности. Включая их в разных комбинациях, из них можно составить упрощённые изображения арабских цифр. На 7-сегментном индикаторе отображают также некоторые буквы. Основные сегменты индикатора обозначаются буквами от A до G; восьмой сегмент — десятичная точка (decimal point, DP), предназначенная для отображения дробных чисел – буквой H (рис. 2.12).

Рис. 2.12. Обозначение сегментов индикатора
Подключение 7-сегментного индикатора непосредственно к выводам порта микроконтроллера неэкономично, поскольку для управления сегментами будут задействованы 8 линий порта. Выводов портов просто не хватит для других целей, особенно, если нужно отображать многоразрядные числа. В этом случае для подключения индикаторов используют передачу данных в последовательном коде.
Прием последовательной информации от порта микроконтроллера и преобразование ее в параллельный двоичный код обычно осуществляется с помощью регистра сдвига. Регистр сдвига – регистр, обеспечивающий помимо хранения информации, сдвиг влево или вправо всех разрядов одновременно на одинаковое число позиций. При этом выдвигаемые за пределы регистра разряды теряются, а в освобождающиеся разряды заносится информация, поступающая по отдельному внешнему входу регистра сдвига. Обычно эти регистры обеспечивают сдвиг кода на одну позицию влево или вправо. Но существуют и универсальные регистры сдвига, которые выполняют сдвиг как влево, так и вправо в зависимости от значения сигнала на специальном управляющем входе или при подаче синхросигналов на разные входы регистра.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


