21.9. Дробная генерация скорости
В асинхронном режиме, благодаря тому, что каждая посылка эквивалента сравнительно большому числу циклов синхронизации (т.е. выборок), возможна дробная генерация скорости. Выборка каждого бита выполняется 16 раз, однако в расчет берутся только центральные выборки. Таким образом, в каждом бите просматривается некоторая избыточность. Общее количество выборок для одной посылки то же достаточно большое. Например, в режиме с нормальной скоростью при использовании посылок, состоящей из одного старт-бита, восьми бит данных и одного стоп-бита, общее количество выборок равно (1+8+1)*16 = 160. Ранее уже отмечалось, что UART допускает варьирование интервалов времени между выборками. Критический фактор - интервал времени с момента появления падающего фронта старт-бита (т.е. начала процедуры синхронизации) и до восстановления значения последнего бита (т.е. первого стоп-бита).
Стандартные генераторы скорости обладают очень серьезным недостатком: у них слишком большой интервал приращения при настройке больших скоростей. Наибольшее приращение имеет место между значениями BSEL 0x000 и 0x001. Переход со значения BSEL = 0x000, при котором 10-битная посылка эквивалентна 160 выборкам, к значению BSEL = 0x001 (320 выборок) приводит 50%-му изменению частоты. Однако при увеличении значений BSEL интервал приращения частоты быстро сокращается. В идеале, шаг приращения частоты должен оставаться небольшим даже при выборе больших скоростей. Такое преимущество дает дробная генерация скорости.
Принцип действия дробного генератора основан на непостоянстве счетной последовательности и на равномерном перераспределении разброса по всей посылке. Обычный генератор скорости использует фиксированную последовательность счета:
2, 1, 0, 2, 1, 0, 2, 1, 0, 2, …
с постоянным периодом. Период выходного сигнала генератора скорости равен интервалу времени между достижением счетчиком нулевых значений. Выборка принимаемого сигнала на выводе RXD выполняется с такой же периодичностью. У дробного генератора скорости период сигнала непостоянен:
2, 1, 0, 3, 2, 1, 0, 2, 1, 0, 3, 2, …
В данном примере каждая вторая счетная последовательность увеличена на единицу. В результате, сигнал на выходе генератора скорости является дрожащим, но зато среднее значение его периода увеличено на величину 0.5 цикла синхронизации.
Таким образом, дробная генерация скорости позволяет снизить шаг приращения настроек скорости. Наихудший случай имеет место, когда масштабирующий коэффициент равен -1. В этом случае происходит переход от 160 к 240 выборкам 10-битной посылки (без дробной генерации переход происходил от 160 к 320). Чем больше по модулю отрицательное значение масштабирующего коэффициента, тем более плавно изменяется скорость. Максимальное значение коэффициента масштабирования ограничено. Значение 2BSCALE должно быть как минимум в 2 раза меньше длительности посылки, выраженной в количестве циклов синхронизации. Например, минимальная длительность 10-битной посылки 160 циклов синхронизации. Это означает, что предельное значение коэффициента масштабирования равно -6 (2-6 = 64 < 160/2 = 80). С увеличением настройки BSEL значение масштабирующего коэффициента также увеличивается.
21.10. Работа USART в ведущем SPI-совместимом режиме
Когда модуль USART используется в режиме ведущего интерфейса SPI (MSPIM), должна быть разрешена работа передатчика. При необходимости, может быть разрешена и работа приемника в качестве входа последовательного приема данных. Вывод XCK выступает в роли линии синхронизации последовательной связи.
Так же как и в остальных режимах работы USART, передача данных инициируется записью в регистр DATA. Это касается, как отправки, так и получения данных, т.к. синхронизация связи выполняется передатчиком. Данные, записанные в DATA, перемешаются из буфера передатчика в сдвиговый регистр, после чего он будет готов к отправке новой посылки.
Флаги прерывания передатчика и приемника и соответствующие прерывания USART в режиме ведущего SPI функционируют точно также как и в остальных режимах работы. Флаги ошибок приемника не используются и всегда считываются с нулевыми значениями.
Отключение передатчика или приемника USART в режиме ведущего SPI происходит так же, как и при работе USART в остальных режимах.
21.11. Сравнение режима SPI модуля USART с модулем SPI
Модуль USART, работающий в режиме ведущего SPI, совместим с модулем SPI в следующем:
- временная диаграмма для ведущего режима.
- назначение бита UCPHA идентично биту CPHA модуля SPI.
- назначение бита UDORD идентично биту DORD модуля SPI.
Поскольку в режиме ведущего SPI задействованы ресурсы USART, работа в нем несколько отличается от модуля SPI микроконтроллеров XMEGA. Помимо бит регистров управления и отсутствия поддержки подчиненного режима, имеют место следующие отличия:
- Передатчик USART в режиме ведущего SPI использует буферизацию. В модуле SPI МК XMEGA буфер передачи не предусмотрен.
- Приемник USART в режиме ведущего SPI оснащен дополнительным уровнем буферизации.
- Бит WCOL модуля SPI (флаг обнаружения ошибочной записи) не представлен в режиме ведущего SPI модуля USART.
- Не предусмотрен бит режима удвоенной скорости модуля SPI (SPI2X). Однако такого же эффекта можно добиться соответствующей настройкой BSEL.
- Временные диаграммы прерываний несовместимы.
- Также, ввиду поддержки модулем USART только ведущего режима SPI, у него несколько отличается управление выводами.
Сравнение выводов модуля SPI и модуля USART, работающего в режиме ведущего SPI, показано в таблице 21.5.
Таблица 21.5. Соответствие выводов модуля USART, работающего в режиме ведущего SPI, сигналам интерфейса SPI
USART |
SPI |
Прим. |
TxD |
MOSI |
Выход ведущего устройства |
RxD |
MISO |
Вход ведущего устройства |
XCK |
SCK |
Назначение идентично |
N/A |
/SS |
Не поддерживается модулем USART |
21.12. Режим мультипроцессорной связи
В системах, где несколько микроконтроллеров обмениваются информацией по общей последовательной шине, использование режима мультипроцессорной связи (MPCM) позволяет существенно снизить количество входящих посылок, подлежащих обработке приемником. В этом режиме, в каждой посылке имеется специальный бит, который используется для сигнализации типа посылки: посылка адреса или посылка данных.
Если приемник настроен на прием посылок с 5…8 битами данных, тип посылки сигнализируется первым стоп-битом. Если же приемник настроен на прием посылок с 9 битами данных, то тип посылки определяется по 9 биту. Если бит типа посылки равен единице, то в посылке содержится адрес, а когда этот бит равен нулю, посылка является посылкой данных. Работа передатчика никак не зависит от настройки бита MPCM, однако, если используется передача 5…8-битных данных, передатчик необходимо настроить на генерацию двух стоп-бит, т.к. первый стоп-бит задействован для сигнализации типа посылки.
В случае адресации одного из подчиненных МК, он принимает последующие посылки данных обычном образом, в то время как другие подчиненные МК игнорируют все принимаемые посылки до тех пор, пока не будет принята другая посылка адреса.
21.12.1. Использование режима мультипроцессорной связи
Если МК работает в роли ведущего, он должен использовать посылки с 9-битными данными. Девятый бит данных устанавливается равным единице при передаче посылки адреса и равным нулю при передаче посылки данных. В таком случае, у всех остальных подчиненных микроконтроллеров так же необходимо настроить формат посылки с 9-битными данными. Для обмена данными в мультипроцессорном режиме необходимо придерживаться следующей процедуры:
- Все подчиненные микроконтроллеры переводятся в режим мультипроцессорной связи.
- Ведущий МК отправляет посылку адреса, а все подчиненные МК принимают и считывают эту посылку.
- Каждый подчиненный МК проверяет, адресован он или нет?
- Адресованный МК отключает MPCM и принимает все посылки данных. В это время все остальные подчиненные МК игнорируют посылки данных.
- Адресованный МК после приема последней посылки данных, снова разрешает режим MPCM и ожидает получение нового адреса посылки от ведущего МК. Далее, процесс повторяется с пункта 2.
Также возможно использование любых других форматов посылки с числом бит от 5 до 8, но это непрактично, т.к. в приемнике потребуется переключение настроек числа бит данных в посылке между n и n+1. Это затрудняет полнодуплексную передачу, т.к. к приемнику и передатчику применяется одна и та же настройка количества бит данных.
21.13. Работа в режиме IRCOM
При необходимости работы USART совместно с модулем IRCOM необходимо разрешить работу в режиме IRCOM. Этим разрешается IrDA 1.4-совместимая модуляция и демодуляция на скорости до 115.2 кбит/сек. После разрешения работы в режиме IRCOM, модуль USART не сможет работать с удвоенной скоростью.
Если в микроконтроллере имеется более одного модуля USART, необходимо учесть, что недопустимо одновременное разрешение режима IRCOM более чем у одного модуля. Подробности см. в разделе 22 "Модуль инфракрасной связи IRCOM".
21.14. Поддержка DMA
Поддержка DMA доступна в асинхронном и синхронных режимах, а также в режиме ведущего SPI. Более детально об отличиях запуска DMA-передачи модулем USART см. в разделе 5.4 "Запуск передачи".
|