В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Применение > Микроконтроллеров > MSP430
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


IrDA SIR кодер-декодер на MSP430C112

Резюме

В данном примере применения описывается использование микроконтроллера MSP430x112 в качестве IrDA SIR кодер-декодера. Аппаратная часть обсуждается на уровне блок-схемы и принципиальной схемы IrDA модуля. Также обсуждаются вопросы программирования и проблемы пользовательского интерфейса. В приложении А приведена прикладная программа IrDA кодера-декодера.

1 Введение

Системы передачи данных по инфракрасному каналу связи появились в связи с необходимостью ведения обмена данными между переносными компьютерами и периферийным оборудованием. IrDA стандарт является дешевым и практическим протоколом передачи данных по инфракрасному каналу связи.

MSP430 - мощный микроконтроллер, способный выполнять различные прикладные программы, в том числе и реализовать последовательный протокол передачи данных IrDA. Микроконтроллер имеет 16- разрядную архитектуру и низкое потребление, что позволяет ему выполнять обмен данными на средних и высоких скоростях в системах с автономным питанием. В данном примере применения описывается использование микроконтроллера MSP430x112 в качестве IrDA кодера-декодера, реализованного на отладочной IrDA плате.

Модуль IrDA приемопередатчика может использоваться для обмена данными между компьютерами по RS232 порту. Для этого каждый компьютер должен иметь стандартный RS232 порт и некоторое обычное терминальное программное обеспечение, типа программы Hyperterminal, которая имеется в операционных системах Windows 3.11, Windows95 и WindowsNT.

Приведенная прикладная программа может использоваться и на других микроконтроллерах семейства MSP430, содержащих драйверы ЖКИ, аналого-цифровые преобразователи и аппаратные умножители.

2 Технические требования к IrDA интерфейсу на физическом уровне

Технические требования к IrDA интерфейсу на физическом уровне предназначены для определения параметров полудуплексного инфракрасного канала связи, позволяющего вести обмен данными на расстояния до 1 М. Полный стандарт требует ведения обмена данными на скоростях до 4 Мбит/с. Однако, в данном примере применения мы рассмотрим передачу данных на скоростях от 2.4 кбит/сек до 115.2 кбит/сек.

Последовательный инфракрасный интерфейс IrDA должен иметь минимальную пропускную способность 9.6 кбит/сек. Параметры скорости потока и длительности импульсов приведены в таблице 1.

Таблица 1. Технические требования к скорости потока и длительности импульса IrDA интерфейса

DATA RATE BIT TIME IrDA PULSE
DURATION MINIMUM
IrDA PULSE
DURATION NOMINAL
IrDA PULSE
DURATION MAXIMUM
2.4 kbit/s 416 µs 1.41 µs 78.13 µs 88.55 µs
9.6 kbit/s 104 µs 1.41 µs 19.53 µs 22.13 µs
19.2 kbit/s 52.0 µs 1.41 µs 9.77 µs 11.07 µs
38.4 kbit/s 26.0 µs 1.41 µs 4.88 µs 5.96 µs
57.6 kbit/s 17.3 µs 1.41 µs 3.26 µs 4.34 µs
115.2 kbit/s 8.68 µs 1.41 µs 1.63 µs 2.23 µs

Минимальная длительность импульса должна быть та же самая, что и при передачи данных на скорости 115.2 кбит/сек. Причина состоит в том, что на физическом уровне IrDA интерфейса может быть реализовано два вида импульсной модуляции: с длительностью импульса бита 3/16 или с минимальной длительностью импульса 1.63 мс минус допуск 0.22 мс.

При передачи данных на скоростях до 115.2 кбит/сек нет никакой необходимости передавать последовательный инфракрасный интерактивный импульс (serial infrared interaction pulse - SIP), который гарантировал бы совместимость с более медленной ИК системой. Это проводит к упрощению структуры IrDA кадра при работе на скоростях до 115.2 кбит/сек.

Для скоростей передачи данных до 115.2 кбит/сек электрический сигнал к модулю кодер-декодера передается в виде последовательного битового потока. Логический 0 в битовом потоке представлен ИК импульсом с длительностью, указанной в Таблице 1, а логическая 1 периодом бита без ИК импульса.

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


Рисунок 1. IrDA и UART кадры

По IrDA стандарту ИК импульс начинается в центре битового периода и имеет длительность 3/16 длительности битового периода или фиксированную длительность, эквивалентную 3/16 длительности битового периода при скорости передачи 115.2 кбит/сек.

Использование фиксированной длительности рекомендуется для снижения потребления в системах с автономным питанием.

3 MSP430x112 – микроконтроллер со сверхнизким потреблением и минимальными функциональными возможностями

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

MSP430x112 содержит мощный 16- разрядный таймер с тремя регистрами захвата/сравнения, четырнадцать линий портов ввода-вывода и новый модуль автогенератора.

Автогенератор способен работать без внешних компонентов с одним только низкочастотным (32 кГц) или высокочастотным (до 6 МГц) кварцевым резонатором или тактироваться от внешнего источника синхроимпульсов с частотой да 6 МГц.

4 IrDA SIR кодер/декодер на микроконтроллере MSP430x112

4.1 Краткий обзор модуля

На рисунке 2 приведена структурная схем IrDA модуля приемопередатчика. Основой модуля является микроконтроллер MSP430x112, который выполняет задачи кодирования и декодирования данных, а также обмена данными по RS232 интерфейсу. Микросхема TSLM1100 обеспечивает требуемый логический интерфейс между MSP430 и ИК каналом связи. Этот ИК приемопередатчик способен на физическом уровне обеспечивать двунаправленный полудуплексный IrDA интерфейс версии 1.1. С целью снижения потребления в модуле установлена длительность импульса 1.63 мкс.


Рисунок 2. Структурная схема IrDA модуля

Модуль может быть непосредственно подключен к обычному RS232 порту через разъем типа DB9S. Вследствие того, что IrDA интерфейс является полудуплексным, то после сброса модуль должен быть инициализирован для работы в качестве IrDA приемника или передатчика, что и описано в разделе 4.3.2.

4.2 Управляющая программа MSP430x112

В следующем разделе описаны некоторые проблемы программирования и детально обсуждены вопросы использования модуля таймера TIMER_A для кодирования и декодирования последовательного потока данных.

Законченный листинг прикладной программы для управляющего микроконтроллера MSP430x112 приведен в приложении A.

4.2.1 Общие вопросы

После сброса системы MSP430 должен быть инициализирован. При инициализации DCO модуляция отключается, а высокочастотный генератор инициализируется. Это позволяет подключать к выводам Xout и Xin кварцевый резонатор с резонансной частотой до 6 МГц. Высокочастотный генератор формирует синхроимпульсы, используемые для передачи последовательного потока данных. Для снижения стоимости можно использовать 32 кГц кварцевый резонатор совместно с программной системой ФАПЧ. Эта программная ФАПЧ управляет модуляционным DCO регистром и подстройкой частоты, сравнивая деленные синхроимпульсы с опорными 32 кГц колебаниями.

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

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

В это время разрешено только прерывание по линии порта P1.0 и обеспечивается готовность принятия строки инициализации ^r или ^t. В зависимости от ответа пользователя MSP430 инициализирует все порты и прерывания для работы в режиме IrDA приемника или IrDA передатчика. Кроме того, микроконтроллер посылает подтверждение через линию порта P1.1. Это подтверждение отображается в терминальном окне.

4.2.2 IrDA-SIR кодер (передатчик)

Если пользователь вводит команду ^t, то MSP430 работает в качестве кодера между RS232 входным портом и ИК выходным портом. Таймер Timer_A и порты инициализированы следующим образом (см. также описание схемы в главе 5):

  • RS232 вход (сигнале TXD) = порт P2.5
  • IrDA выход (TSLM1100) = порт P2.4 (CCR2)

Длительность полупериода бита загружена в регистр CCR0, а таймер Timer_A установлен в режим увеличения/уменьшения (Up/Down). Второй модуль захвата/сравнения подключается к линии P2.4 и осуществляет захват регистра сравнения CCR2, в который загружено значение регистра CCR0 за минусом значения, соответствующего длительности ИК импульса 1.63 мкс.

При передаче второй управляющий регистр захвата/сравнения (CCTL2) установлен в режиме формирования сброса. Это означает, что каждый раз, когда в регистре таймера Timer_A (TAR) устанавливается значение, равное значению в регистре CCR2, то на линии P2.4 устанавливается низкий логический уровень, а когда устанавливается значение, равное значению в регистре CCR0, то на этой линии устанавливается высокий логический уровень.


Рисунок 3. Использование таймера Timer_A при RS232/IrDA преобразовании

Когда таймер Timer_A запускается, то он увеличивает свое значение до значения, равного CCR0, а потом ведет обратный отсчет, после чего опять запускается и снова увеличивает свое значение до CCR0. Пока таймер Timer_A работает, в каждый битовый период без вмешательства вычислительного ядра формируется импульс длительностью 1.63 мкс.

Линейный драйвер RS232 интерфейса (HIN232) производит инвертирование потока данных, формирование логических уровней сигнала и подачу его на линию P2.5. Высокий уровень на линии P2.5 представляет собой логический 0 и наоборот. Согласно IrDA стандарту логический 0 на линии RS232 представляется ИК импульсом. Это означает, что нарастающий фронт на линии P2.5 должен запустить таймер Timer_A, а спадающий - остановить его. Это обеспечивается установкой бита разрешения прерывания для линии P2.5.

Каждое изменение состояния на линии RS232 вызывает прерывание, и MSP430 начинает выполнять подпрограмму обработки прерывания (interrupt service routine - ISR):

;************************************************************************
; Подпрограмма обработки прерывания передатчика TRANSMITTER
; RS232 (P2.5) –> IrDA (P2.4)
;************************************************************************
    TX_01 BIS   #04h,&TACTL     ; 5 циклоав
    XOR         R14, &TACTL     ; запуск/остановка таймера Timer_A 
                                ; (режим передачи/приема)         4 цикла
    XOR.B       R13,&P2IES      ; изменение фронта выбора IR      4 цикла
    BIC.B       #0FFH,&P2IFG    ; очистка флагов прерывания       5 циклов
    RETI                        ;                                 5 циклов

Через шесть циклов после установки прерывания (время, необходимого на сохранения состояния микроконтроллера), MSP430 запускает ISR. Для изменения состояния управляющего регистра TACTL таймер Timer_A должен быть остановлен.

Далее мы запускаем или останавливаем таймер путем установки необходимого значения управляющего бита в регистре TACTL. После этого в регистре P2IES изменяем бит, определяющий фронт формирования прерывания.

Полностью вся подпрограмма обработки прерывания выполняется за 23 + 6 циклов. Поэтому, при работе на частоте 3.6864 МГц (период 271.2 нс) ISR выполняется за 29 x 271.2 нс = 7.865 мкс. При работе со скоростью передачи данных 115.2 кбит/сек время между формируемыми прерываниями минимальное и равняется 8.68 мкс. Вышеупомянутая подпрограмма обработки прерывания выполняется быстрее, позволяя обеспечивать передачу данных без потерь.

4.2.3 IrDA-SIR декодер (приемник)

Если пользователь вводит команду ^r, то MSP430 работает в качестве декодера между ИК входом и выходом RS232. Таймер Timer_A приостанавливается, а порты инициализируются следующим образом (см. также описание схемы в главе 5):

  • IrDA вход (TSLM1100) = порт P1.2
  • RS232 выход (RXD) = порт P1.1 (CCR0)

Длительность битового периода загружается в регистр периода CCR0, а Timer_A устанавливается в режим увеличения состояния до значения, равного содержимому регистра CCR0, после чего он сбрасывается и снова начинает считать до значения CCR0. Нулевой модуль захвата/сравнения подключается к порту P1.1.

При приеме регистр управления захватом/сравнением (CCTL0) находится в режиме установки. Это означает, что каждый раз, когда значение регистра таймера Timer_A (TAR) становится равным значению регистра CCR0, на порту P1.1 устанавливается высокий логический уровень.


Рисунок 4. Использование таймера Timer_A при IrDA/RS232 преобразовании

Если мы запускаем таймер Timer_A, то он увеличивает свое значение, а когда его состояние сравнивается со значением, записанным в регистре CCR0, то на линии P1.1 устанавливается высокий уровень, после чего он перезапускается и снова считает до CCR0 снова. В течение всего времени работы таймер Timer_A постоянно устанавливает на порту P1.1 высокий уровень.

ИК приемопередатчик формирует на порту P1.2 инвертированный сигнал. Это означает, что спадающий фронт устанавливает на порту P1.1 низкий логический уровень и перезапускает таймер. После этого таймер Timer_A синхронизируется с ИК сигналом. Когда таймер достигает значения CCR0 (длительность RS232 бита), он автоматически устанавливает на порту P1.1 высокий уровень и постоянно передает высокий уровень до тех пор, пока не будет сформирован новый спадающий фронт.

Каждый спадающий фронт на порту P1.2 вызывает прерывание, и MSP430 начинает выполнять подпрограмму обработки прерывания.

Выполнение подпрограммы обработки прерывания начинается через шесть циклов после появления прерывания. Сначала на линии P1.1 устанавливается низкий логический уровень, а модуль CCR0 устанавливается в режим только вывода. После этого таймер Timer_A сбрасывается путем установки бита CLR в регистре TACTL, а флаг прерывания CCR1 сбрасывается.

;*******************************************************************************
; Подпрограма обработки прерывания приемника RECEIVER
; IrDA (P1.2) –> RS232 (P1.1)
;*******************************************************************************
RX_01   CLR     &CCTL0         ; CC0 в режиме выхода / на выводе P1.1
                               ; низкий уровень                         5 циклов
        BIS     #04h,&TACTL    ; сброс таймера Timer_A                  5 циклов
        MOV     #20h,&CCTL0    ; CCTL0 устанавливает на порту P1.1
                               ; низкий уровень и ”режим –>P1.1 высокий 5 циклов
        BIC     #01h,&CCTL1    ;сброс флага прерывания CCTL1 !          5 циклов
        RETI                   ;                                        5 циклов

ISR выполняется за 25 + 6 циклов. Поэтому при работе на частоте 3.6864 МГц (период 271.2 нс) подпрограмма выполняется за 31 * 271.2 нс = 8.407 мкс. При обмене данными со скоростью 115.2 кбит/сек минимальное время между прерываниями - 8.68 мкс. Вышеупомянутая подпрограмма обработки прерывания выполняется быстрее, позволяя обеспечивать прием данных без потерь.

Так как каждый спадающий фронт на порту P1.2 формирует прерывание и, следовательно, низкий логический сигнал на линии RS232, то свечение флуоресцентных ламп и помехи от других приборов могут формировать ошибочные биты. Время между спадающим и нарастающим фронтами может быть измерено при помощи второго модуля захвата/сравнения и сопоставлено с длительностью IrDA импульса, что позволит устранить ошибки. Для достижения этого модуль CCR2 должен быть установлен в режим захвата по нарастающему фронту. Так как CCR1 срабатывает по спадающему фронту, то значения этих регистров могут быть сравнены в подпрограмме обработки прерывания. Если длительность импульса меньше, чем 1.6 мкс - 0.22 мкс, то импульс признается ложным. Однако для этого требуется повысить рабочую частоту микроконтроллера или снизить скорость передачи данных.

4.3 Установки

4.3.1 Выбор скорости передачи данных

IrDA модуль может работать на шести различных скоростях передачи данных в пределах от 2.4 кбит/сек до 115.2 кбит/сек. Скорость передачи данных должна быть выбрана перед началом сеанса связи.

Таблица 2. Установка скорости передачи данных
DATA RATE JUMPER
J3 J2 J1
2.4 kbit/s L L L
9.6 kbit/s L L H
19.2 kbit/s L H L
38.4 kbit/s L H H
57.6 kbit/s H L L
115.2 kbit/s H L H

Скорость передачи данных устанавливается тремя перемычками J1, J2 и J3 - смотри таблицу 3. Если положения перемычек изменяются при работе системы, то необходимо выполнить ее перезапуск. После этого модуль может быть подключен к RS232 порту компьютера, и питание может быть подано. Удостоверьтесь, что в терминальной программе установлена та же скорость передачи данных, что и в модуле.

4.3.2 Интерфейс пользователя

Обычная терминальная программа типа гипертерминала (Hyperterminal), которая имеется в операционных системах Windows 3.11, Windows95 и WindowsNT, может использоваться для ведения обмена данными с IrDA модулем.

Параметры настройки СОМ порта должны быть следующими:

    Скорость (бит в секунду): см. положение перемычек J1, J2 и J3 на IrDA модуле
    Количество информационных разрядов: 7
    Проверка: на четность
    Количество стоповых бит: 1
    Управление потоком: нет

Удостоверьтесь, что вы используете одни и те же параметры терминальных программ на обоих компьютерах.

Нажатие кнопки сброса (RESET) на IrDA модуле приведет к отображению в окне терминальной программы строки инициализации, как это показано на рисунке 5.


Рисунок 5. Сообщение об инициализации IrDA модуля

После этого следует определить, какой модуль будет работать в режиме передатчика, а какой в режиме приемника.

После набора команды ^r, модуль переходит в режим приема и выдает подтверждение (см. рисунок 6).


Рисунок 6. Подтверждение инициации IrDA приемника

Для передачи данных от одного персонального компьютера в другой установите один IrDA модуль в режим передатчика, а другой - в режим приемника.

Для изменения направления передачи нажмите кнопку сброса RESET и повторите процедуру инициализации.

5 Описание схемы

На рисунке 7 показана принципиальная схема IrDA модуля.

При использовании кварцевого резонатора с резонансной частотой выше 3 МГц, MSP430x112 требуется 5 В питание. Так как RS232 драйвер (HIN232) имеет довольно высокое потребление, то не все персональные компьютеры способны обеспечить питание модуля по RS232 порту. Поэтому в некоторых случаях придется использовать внешний источник питания или аккумулятор. Для снижения потребляемой мощности следует выбирать наиболее низкую рабочую частоту.


Рисунок 7. Принципиальная схема IrDA модуля

Для снижения влияния шумов следует использовать дополнительный фильтр питания ИК модуля TSLM1100. Для повышения помехоустойчивости конденсаторы C6 и C7 должны быть размещены у самых выводов TSLM1100. Для получения более детальной информации см. техническое описание TSLM1100.

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

6 Заключение

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

При использовании MSP430C112 становится возможным изготавливать устройства с автономным питанием, обеспечивающие передачу данных по беспроводным каналам связи со скоростью до 115.2 кбит/сек.

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

Пример программы:

  102Kb Исходный фаил
  RUS Приложение А: исходный текст программы

Тульский автосервис