В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > AVR

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве




Arduino Uno R3 Atmega328
готовый модуль
Лучшая Цена 335 руб




Стартовый набор с большим набором аксесуаров
Arduino Uno R3 Atmega328
Лучшая Цена 2211 руб



29.3. Трансивер PDI

Трансивер PDI отвечает за обработку сигналов последовательного интерфейса на физическом уровне. Трансивер образован двунаправленным полудуплексным синхронным последовательным приемником и передатчиком (идентичен USART в режиме USRT). Трансивер поддерживает возможности обнаружения начала посылки, ошибок в посылке, генерации паритета, обнаружения ошибок паритета и обнаружения коллизий.

PDI доступен через два вывода:

  • PDI_CLK: вход синхронизации PDI (вывод Reset).
  • PDI_DATA: вход/выход PDI (вывод Test).

Кроме этих двух выводов, у внешнего программатора/отладчика и микроконтроллера необходимо соединить линии VCC и GND. Типовое подключение показано на рисунке 29.2.

Подключение к интерфейсу PDI
Рисунок 29.2. Подключение к интерфейсу PDI

Остальная часть данного раздела ориентирована на производителей средств программирования микроконтроллеров XMEGA.

29.3.1. Разрешение работы

Перед тем как использовать трансивер PDI необходимо разрешить его работу. Для этого, вначале необходимо перевести линию PDI_DATA в высокое состояние на время, которое больше минимальной длительности внешнего импульса сброса (длительность внешнего импульса сброса уточните в документации на микроконтроллер). В результате такой операции, отключается функция сброса у вывода Reset (при условии, что эта функции не была отключена прежде fuse-битом).

Очередным действием, направленным на разрешение работы PDI, является удержание линии PDI_DATA в высоком состоянии в течение 16 циклов PDI_CLK (16 нарастающих фронтов). Первый цикл PDI_CLK должен появиться с задержкой не более 100 мкс после отключения функции сброса у вывода Reset. Если это требование не выполнить, функция сброса вывода Reset будет автоматически возобновлена и последовательность разрешения работы PDI придется повторить заново.

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

На выводе PDI_DATA имеется внутренний подтягивающий к минусу резистор, который активизируется одновременно с PDI.

Последовательность разрешения работы PDI
Рисунок 29.3. Последовательность разрешения работы PDI

29.3.2. Отключение

Если частота синхронизации на линии PDI_CLK окажется меньшей приблизительно 10 кГц, это будет восприниматься как неактивность линии синхронизации и приведет к отключению PDI и возобновлению функции сброса у вывода Reset (PDI_CLK), но при условии, что функция сброса не была отключена fuse-битом. Если в процессе разрешения работы возникнут чрезмерные задержки, последовательность разрешения работы PDI придется начать заново.

Из сказанного следует, что минимальная частота программирования равна приблизительного 10 кГц.

29.3.3. Формат посылки и символы

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

Формат посылки интерфейса PDI
Рисунок 29.4. Формат посылки интерфейса PDI

Таблица 1

St Старт-бит, всегда равен 0
(0-7) Биты данных (0…7)
P Бит паритета, используется четный паритет
Sp1 Стоп-бит 1, всегда равен 1
Sp2 Стоп-бит 2, всегда равен 1

29.3.3.1. Символы

Предусмотрено три символа: DATA, BREAK и IDLE. Символ BREAK генерируется передачей 12 бит низкого уровня. Символ IDLE равен по длительности 12 битам высокого уровня. Оба символа, BREAK и IDLE, могут быть дольше по длительности, чем 12 бит.

Символы и временные диаграммы интерфейса PDI
Рисунок 29.5. Символы и временные диаграммы интерфейса PDI

29.3.4. Последовательные передача и прием

Трансивер PDI может работать либо в режиме передачи (TX), либо в режиме приема (RX). По умолчанию он работает в режиме RX, ожидая прием старт-бита.

Программатор и PDI работают синхронно с сигналом PDI_CLK, который генерирует программатор. Зависимость между фронтами импульсов синхронизации и выборкой или изменением данных фиксированная. Как показано на рисунке 29.6 вывод данных (либо из программатора, либо из PDI) всегда происходит по падающему фронту PDI_CLK, а выборка данных - по нарастающему фронту PDI_CLK.

Изменение и выборка данных
Рисунок 29.6. Изменение и выборка данных

29.3.5. Последовательная передача данных

После инициации передачи данных (контроллером PDI), передатчик передает сдвигом по линии PDI_DATA старт-бит, биты данных, бит паритета и два стоп-бита. Скорость передачи задается сигналом PDI_CLK. В режиме передачи, биты IDLE (единичные биты) автоматически передаются для заполнения пауз, образуемых в процессе передачи символов DATA. При обнаружении в ходе передачи коллизии, выходной драйвер отключается, а интерфейс переходит в режим приема RX , ожидая в дальнейшем символ BREAK.

29.3.5.1. Обнаружение конфликтов управления и коллизий

Во избежание конфликтов управления, когда и PDI и программатор пытаются одновременно управлять линией PDI_DATA), предусмотрен механизм обнаружения коллизий. Этот механизм заключается в способе управления выводом данных интерфейса PDI на линию PDI_DATA. Как показано на рисунке 7, драйвер выхода активизируется только тогда, когда необходимо изменить состояние выхода (из 0 в 1 или из 1 в 0). Это означает, что, если подряд передаются два или более бит с одним и тем же значением, для передачи этого значения драйвер активен только во время первого цикла синхронизации. По окончании первого цикла происходит отключение драйвера и в дальнейшем его выход находится в высокоимпедансном состоянии, а за поддержание установленного уровня на линии PDI_DATA вплоть до момента очередной активизации драйвера отвечает схема адаптивной подтяжки.

Управление выводом данных на линию PDI_DATA с использованием адаптивной подтяжки
Рисунок 29.7. Управление выводом данных на линию PDI_DATA с использованием адаптивной подтяжки

Ситуация, когда программатор и PDI одновременно управляют линией PDI_DATA, показана на рисунке 29.8. Возможность определить корректность уровня, присутствующего на линии PDI_DATA, интерфейс PDI получает в тех случаях, когда подряд передается два или более бит с одним и тем же значением. Коллизия обнаруживается, если программатор перевел линию PDI_DATA в состояние, которое противоположно ожидаемому интерфейсом PDI состоянию.

Обнаружение конфликтов управления и коллизий на линии PDI_DATA
Рисунок 29.8. Обнаружение конфликтов управления и коллизий на линии PDI_DATA

Если же PDI будет передавать чередование единиц и нулей, то коллизию нельзя будет обнаружить, т.к. драйвер выхода будет постоянно активен, исключая возможность выполнения опроса линии PDI_DATA. Тем не менее, каждая посылка содержит как минимум одну последовательность двух одинаковых бит (единичные стоп-биты) и, поэтому, при передаче каждой посылки коллизия может быть обнаружена как минимум один раз.

29.3.6. Последовательный прием

После обнаружения старт-бита, приемник переходит к приему 8 бит данных с помощью сдвигового регистра. Если принятый бит паритета не равен паритету принятых бит данных, возникает ошибка паритета. Если один или оба стоп-бита равны нулю, возникает ошибка посылки. Если бит паритета имеет корректное значение и ошибка посылки не обнаружена, принятые биты данных становятся доступными для считывания PDI-контроллером в параллельном формате.

29.3.6.1. Обнаружение символа BREAK

Когда PDI находится в режиме передачи, переданный программатором символ BREAK будет интерпретирован не как символ BREAK, а как коллизия передачи данных. Если же PDI работает в режиме приема, символ BREAK будет распознаваться по назначению. При передаче двух подряд символов BREAK (должны быть отделены одним или большим числом единичных бит), последний символ BREAK будет всегда распознаваться по назначению, независимо от того, в режиме чтения или передачи изначально находился PDI.

29.3.7. Изменение направления

Для обеспечения корректности временной диаграммы полудуплексной передачи, предусмотрен простой механизм защитного интервала (Guard Time), который вступает в действие при каждом изменении направления передачи интерфейса PDI. Когда PDI переключается из режима приема в режим передачи, перед передачей старт-бита вставляются дополнительные биты IDLE, количество которых задается пользователем. Минимальная задержка перехода из режима RX в режим TX равна двум циклам IDLE. Увеличить длительность такой задержки можно записью соответствующего значения в биты GUARDTIME регистра управления контроллера PDI. Значение по умолчанию бит GUARDTIME приводит к максимальному увеличению задержки на 128 бит.

Изменение направления PDI путем вставки бит IDLE
Рисунок 29.9. Изменение направления PDI путем вставки бит IDLE

Программатор теряет управление над линией PDI_DATA в точке, где целевой PDI переходит из режима RX в режим TX. Введение защитного интервала позволяет сделать менее критичной данную фазу передачи. Если программатор переходит из режима RX в режим TX, то перед передачей старт-бита должен быть вставлен минимум один бит IDLE.



<-- Предыдущая страница Оглавление Следующая страница -->





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники