microchip

Портирование приложений с семейства PIC18 на PIC24F

2.6. Модуль универсального асинхронного приемопередатчика (UART)
Новый модуль универсального асинхронного приемопередатчика (UART) семейства PIC24F является полнодуплексным интерфейсом со значительно расширенной функциональностью, по сравнению с модулем EUSART семейства PIC18.
Основные новые особенности модуля UART PIC24F включают в себя увеличенную скорость обмена, аппаратную поддержку контроля четности, конфигурация уровня на линии в режиме ожидания, поддержку аппаратного управления потоком, и т. д.
В табл. 29 приведено сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18.
Замечание: модуль UART семейства PIC24F не поддерживает синхронный режим обмена. В качестве синхронного приемопередатчика возможно использование аппаратного модуля SPI.
Таблица 29. Сравнение основных функций модуля UART PIC24F и модуля EUSART PIC18


Параметры

PIC18

PIC24F

Асинхронный дуплексный режим работы с поддержкой:
- автоматического выхода из энергосберегающего режима
- автоматической подстройки скорости обмена
- передачей 12-битного сигнала Break (см. спецификацию LIN)

да

да

Дуплексный 8- и 9-битный обмен

да

да

Поддержка 9-битного обмена с функцией детектирования адреса (9 бит = 1)

да

да

Аппаратное управление потоком (сигналы CTS и RTS)

нет

да

Количество стоповых бит

1

1 или 2

Выбор уровня на линии в режиме ожидания

нет

да

Генератор скорости передачи

8- / 16-битный

16-битный

Предделитель генератора скорости передачи

да

да

Диапазон скоростей обмена

от 300 бод до 115 кбод
(0.25 – 10 MIPS)

от 15 бод до 1 Мбод
(16 MIPS)

Аппаратная поддержка кодирования и декодирования IrDA®

нет

да

Выход частоты 16x(baud rate) для поддержки IrDA® трансивера

нет

да

Наличие буфера FIFO у передатчика

нет

да

Наличие буфера FIFO у приемника

нет

да

Диагностический режим «Loopback»

нет

да

Аппаратная поддержка бита четности

нет (может быть реализована программно)

да

Аппаратная поддержка контроля четности

нет

да

Аппаратная генерация байта синхронизации LIN

да

да

Аппаратная поддержка символов Sync и Break

да

да

Генерирование прерывания по фронту на линии приема

да

да

Аппаратное детектирование ошибки кадра и переполнения буфера

да

да

Возможность останова в режиме IDLE

нет

да

Генерирование прерываний

при приеме и при передаче

при приеме, при передаче и при детектировании ошибки

2.6.1. Наименования битов и регистров модуля
Большинство служебных битов модуля UART микроконтроллеров PIC24F имеют псевдонимы, соответствующие (или похожие) названию аналогичных битов в семействе PIC18 – см. табл. 30.
Таблица 30. Сравнение основных управляющих битов модуля UART семейства PIC24F и модуля EUSART семейства PIC18


Функция

PIC18

PIC24F

Включение механизма автоматической настройки скорости обмена (Auto Baud Detect)

ABDEN

ABAUD

Включение адресного режима обмена

ADDEN

ADDEN

Выбор высокой скорости обмена (для PIC18F – высокая/низкая скорость, для PIC24F – выбор делителя генератора тактовой частоты 4x/16x)

BRGH

BRGH

Включение приемника

CREN (только приемник)

UARTEN (приемник и передатчик)

Флаг ошибки фрейма

FERR

FERR

Флаг переполнения буфера

OERR

OERR

Флаг нахождения приемника в режиме ожидания

RCIDL

RIDLE

Флаг прерывания по приему

RCIF

UxRXIF

Флаг наличия данных в буфере приемника

URXDA

9-й бит принятого фрейма (в 9-битном режиме работы)

RX9D

UxRXREG<8>

Бит разрешения 9-биного приема

RX9

PDSEL1:PDSEL0

Бит разрешения 9-битной передачи

TX9

Отправка символа Break (спецификация LIN)

SENDB

UTXBRK

Состояние сдвигового регистра передатчика

TRMT

TRMT

Включение передатчика

TXEN

UTXEN

Флаг прерывания по передаче

TXIF

UxTXIF

9-й бит передаваемых данных

TX9D

UxTXREG

Разрешение прерывания по заднему фронту на линии RX (режим WAKE-UP)

WUE

WAKE

2.6.2. Функции модуля UART, отсутствующие в семействе PIC24F
Микроконтроллеры PIC24F не поддерживают следующие функции модуля UART контроллеров PIC18:
Низкая частота тактового генератора: FOSC/(64 (n+1))

Синхронный режим работы. Модули UART PIC24F не поддерживают синхронный обмен как в режиме ведомого, так и в режиме ведущего. Для организации синхронного обмена рекомендуется использовать модуль SPI (см. п. 2.4 «Модуль SPI»).
Изменение скорости обмена одним битом. Модули EUSART семейства PIC18 имеют возможность изменения скорости обмена с помощью переключения одного бита BRGH. Для изменения скорости обмена в PIC24F требуется конфигурация делителя тактового генератора.
2.6.3. Портирование типового приложения (передатчик)
Рассмотрим последовательность инициализации аппаратного модуля U(S)ART в режиме передачи для двух архитектур.
Семейство PIC18:

  1. Выбрать скорость обмена, настроив регистры SPBRGHx:SPBRGx. Выбрать диапазон скоростей, установив или сбросив биты BRGH и BRG16;
  2. Выбрать режим работы (синхронный/асинхронный), настроив бит SYNC, установить бит SPEN;
  3. Если используются прерывания – установить соответствующий бит разрешения TXxIE;
  4. Установить бит TX9, если планируется использование 9-битного обмена;
  5. Разрешить передачу, установив бит TXEN, после этого автоматически будет установлен бит TXxIF;
  6. Если используется 9-битный режим обмена, 9-й бит фрейма должен быть загружен в бит TX9D;
  7. Загрузить байт передаваемых данных в регистр TXREGx;
  8. Если используются прерывания, бит глобального разрешения прерываний GIE и бит разрешения прерываний от периферийных устройств PEIE должны быть установлены (регистр INTCON<7:6>).

Для семейства PIC24F:

  1. Настроить модуль UART – установить режим обмена (размер фрейма, четность, размер стопового бита), установить требуемую скорость обмена, сконфигурировав регистр UxBRG, сконфигурировать прерывание, если они будут использоваться в программе;
  2. Включить модуль UART;
  3. Включить передатчик, установив бит UTXEN;
  4. Загрузить данные в младший байт регистра UxTXREG. Данные будут автоматически перемещены в сдвиговый регистр передатчика;
  5. Альтернативным способом передачи данных является загрузка данных в регистр UxTXREG при сброшенном бите UTXEN. После установки бита UTXEN данные будут автоматически перемещены в сдвиговый регистр передатчика и будет включен тактовый генератор модуля;
  6. Прерывания передатчика настраиваются битами UTXISELx.

2.6.4. Портирование типового приложения (приемник)
Рассмотрим последовательность инициализации аппаратного модуля U(S)ART в режиме приема для двух архитектур.
Семейство PIC18:

  1. Выбрать скорость обмена, настроив регистры SPBRGHx:SPBRGx. Выбрать диапазон скоростей, установив или сбросив биты BRGH и BRG16;
  2. Выбрать режим работы (синхронный/асинхронный), настроив бит SYNC, установить бит SPEN;
  3. Если используются прерывания – установить соответствующий бит разрешения RCxIE;
  4. Установить бит RX9, если планируется использование 9-битного обмена;
  5. Разрешить прием, установив бит CREN;
  6. Флаг RCxIF будет установлен после завершения приема фрейма. Если установлен бит разрешения RCxIE, будет сгенерировано прерывание;
  7. Считать регистр RCSTAx для получения 9-го бита фрейма (если используется 9-битный режим приема) и флагов ошибок;
  8. Считать байт принятых данных из регистра RCREGx;
  9. Если обнаружена ошибка прима (ошибка фрейма или переполнение буфера) – сбросить бит разрешения приема CREN;
  10. Если используются прерывания, бит глобального разрешения прерываний GIE и бит разрешения прерываний от периферийных устройств PEIE должны быть установлены (регистр INTCON<7:6>)

Для семейства PIC24F:

  1. Настроить модуль UART – установить режим обмена (размер фрейма, четность, размер стопового бита), установить требуемую скорость обмена, сконфигурировав регистр UxBRG, сконфигурировать прерывание, если они будут использоваться в программе;
  2. Включить модуль UART;
  3. Прерывание  будет сгенерировано в случае приема одного или нескольких байт данных, в зависимости он состояния URXISELx;
  4. Считать бит OERR для определения ошибки переполнения приемного буфера. Замечание: бит OERR должен быть сброшен программно;
  5. Считать данные из буфера приема UxRXREG.

2.6.5. Рекомендации по портированию приложения
При портировании приложения, использующего модуль UART, особое внимание следует уделить следующим рекомендациям.
Так как архитектуры PIC18 и PIC24F отличаются структурой конвейера выполнения инструкций (частота выполнения инструкций в PIC18 равна FCY = FOSC/4, в PIC24F – FCY = FOSC/2), необходимо пересчитать значения, используемые для конфигурации скорости обмена.
Для семейства PIC18 максимальная скорость обмена составляет FOSC/4, минимальная – FOSC/(64 * 65536). Для PIC24F максимальная скорость обмена составляет FCY/4, минимальная FCY/(4 * 65536). Если в системе используется несколько скоростей обмена, следует убедиться, что они попадают в допустимый диапазон.

Функции реализации 9-битного обмена должны быть изменены. Так как PIC18F – 8-битная архитектура, для сохранения 9-го бита фрейма используется отдельный бит в конфигурационном регистре. В PIC24F 9-битный обмен реализуется прямым считыванием из 16-битного регистра UxRXREG и записью в 16-битный регистр UxTXREG.

©2007 Гамма-Санкт-Петербург