Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом / HDLC.doc
Скачиваний:
59
Добавлен:
10.12.2013
Размер:
880.64 Кб
Скачать

Hdlc и SmartDma.

Все каналы SmartDMA поддерживают HDLC (в отличие от универсальных каналов DMA).

Передатчик HDLC.

При использовании HDLC трансфера SmartDMA возникает следующая сложность: если передаваемый пакет состоит из более чем одного буфера и буферные дескрипторы (блок памяти, который используется CPU и программным обеспечением для контроля и описания буферов данных) содержат задачу, которая может быть приостановлена прерыванием, передатчик HDLC может начать работу и произойдет потеря значимых бит если выполнение инструкции было прервано до того, как последний дескриптор был переписан заново. Для устранения этого явления нужно устанавливать бит OWN в первом буферном дескрипторе в последнюю очередь а остальные дескрипторы обновлять в обратном порядке, то есть от последнего к первому. Если во время передачи пакета произошла ошибка (например переполнение FIFO), передатчик останавливается до тех пор, пока программное обеспечение не справится с условиями, вызвавшими ошибку в контроллере HDLC. Для этого программное обеспечение должно выполнить следующие шаги:

1. Очистка бита TXST контрольного регистра SmartDMA для останова DMA. При этом DMA остановится без очистки бита OWN буферного дескриптора.

2. Очистка бита признака ошибки HDLC (CTSLST или TUFLO) регистра HxISTAT0. Происходит автоматическая очистка FIFO.

3. Для повторной отправки пакета содержащего более чем один буфер, программное обеспечение выполняет следующие шаги:

  1. Чтение регистра CTBD для определения текущего дескриптора.

  2. Вернуться к началу непереданного пакета используя для определения его дескрипторы (ищется дескриптор с установленным битом STP)

  3. В регистре CTBD заносится число дескрипторов с установленным битом STP.

  4. Установка битов TXST и POLL для рестарта DMA.

Приемник HDLC.

В нормальном режиме, когда принят пакет HDLC, SmartDMA заносит его в один или больше буферов, устанавливает бит STP в первом буферном дескрипторе, сбрасывает биты статуса в промежуточных дескрипторах, устанавливает биты-признаки EOP (end-of-packet) и error, заносит в последний дескриптор общую длину пакета. Прграммное обеспечение должно поддерживать две следующие функции:

  1. ПО должно заполнять буферные дескрипторы указателями на доступные буферы и информацией об их размерах и устанавливать биты OWN для того чтобы сделать их доступными интерфейсу SmartDMA. Если ПО не успевает выполнять эту функцию, выставляется прерывание RBU. Если степень запаздывания велика настолько, что теряются данные, генерируется прерывание HDLC ROFLO. Так же ПО может оперировать битом DMA POLL. Установка этого бита извещает контроллер DMA в том что бит OWN следующего буфера установлен, так что контроллер DMA может считать его своим и использовать по своему усмотрению. n Software must examine the descriptors of buffers that have been received.

  2. ПО осуществляет поиск в буферных дескрипторах первого из них, содержащего установленный бит OWN или EOP. Если обнаружен дескриптор со сброшенным битом OWN и установленным битом EOP, значит найден конец пакета.

Прерывания.

Все прерывания маскируемые. Маска прерываний устанавливается с путем конфигурирования регистров HxIMSK0 и HxIMSK1.

Прерывания передатчика:

Микроконтроллер поддерживает следующие прерывания:

  • Доступность байта данных

  • Посылание сигнала Abort

  • Потеря CTS

  • Переполнение передающего FIFO

  • Правильная передача фрейма

  • Останов передатчика

Прерывания приемника:

  • Доступность статусной информации

  • Доступность байта данных

  • Наличие короткого фрейма

  • Некорректный адрес

  • Переполнение приемного FIFO

  • Обнаружение флага ожидания

  • Обнаружение последовательности ожидания

  • Принятие последовательности abort

  • Потеря сигнала RTR

  • Принят короткий фрейм

  • Принят очень короткий фрейм

Соседние файлы в папке диплом