Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 305

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 299 300 301 302 303 304 < 305 > 306 307 308 309 310 311 .. 528 >> Следующая

передаче и заполнение данными буфера FIFO передатчика конечной точки,
номер которой указывается в битах ЕР. Реально передача этих данных в сеть
начнется только после приема маркера IN.
При передаче данных пользователь может также, если необходимо, заменить
содержимое буфера FIFO передатчика. Для этого следует передать
контроллеру команду STOP ТХ ENDPOINT и установить бит FLUSH := 1. Для
возобновления передачи надо использовать команду RESTART ТХ ENDPOINT.
Буферные дескрипторы USB-контроллера. USB-контроллер использует такую же
структуру буферных дескрипторов, что и большинство коммуникационных
каналов, состоящую из четырех ячеек по 16 бит (первая ячейка - слово
состояния дескриптора (рис. 5.70, 5.71), вторая - длина буфера данных в
памяти, адрес которого указан в 3-й и 4-й ячейках дескриптора).
Большинство битов слов состояния имеют такое же функциональное
назначение, что и для других коммуникационных каналов.
Бит Е (Empty) - бит незанятого буфера ("0" - буфер занят, "1" - не
занят). Бит R (Ready) - бит готовности буфера к передаче ("0" - не готов,
"1" - готов или уже передается). Бит W (Wrap) - бит последнего
дескриптора в таблице дескрипторов ("0" - не последний дескриптор, "1" -
последний). Бит I (Interrupt) - бит прерывания при завершении обработки
данного буфера ("0" - прерывание не регистрируется, "1" - регистрируется
в регистре событий в бите RXB при приеме и ТХВ или ТХЕ при передаче).
Биты F (First) и L (Last) первого и последнего буфера, в которых
расположен первый (последний) бит текущего кадра данных ("0" - это не
первый и не последний буфер, "1" - это первый (последний) буфер кадра).
ю
11 12 13 14
15
Е -
W
- РЮ
NO AB CR OV -
Рис. 5.70. Слово состояния буферного дескриптора приема USB-контроллера
Если установлен бит ТС = 1 (Transmit CRC), то после завершения передачи
содержимого последнего буфера кадра (установлен бит L = 1) сразу же будет
передана контрольная сумма кадра. Если бит ТС = 0, то будет передан
признак ЕОР (End of Packet).
После завершения передачи содержимого последнего буфера кадра (бит L =
1), если установлен бит CNF = 1, то контроллер будет ожидать получение
подтверждения о доставке пакета. Если же бит CNF = 0, то, не ожидая
ответа, будет загружать в буфер FIFO передатчика данные следующего
пакета.
0 1 2 3 4 5 6 7 В 9 10 11 12 13
14 15
R - W 1 L ТС CNF - РЮ - NAK STAL ТО
UN -
Рис. 5.71. Слово состояния буферного дескриптора передачи USB-контроллера
543
КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ
В бите NO (Non Octet) регистрируется ошибка приема кадра, длина которого
не кратна байту. В бите AB (Frame Aborted) регистрируется ошибка
нарушения алгоритма работы с бит-стаффингом. Ошибка при проверке
контрольной суммы регистрируется в бите CR (CRC Error). Ошибка
переполнения буфера FIFO приемника регистрируется в бите OV (Overrun), а
переполнение буфера FIFO передатчика - в бите UN (Underrun).
В биты PID (Packed ID) при приеме контроллер заносит тип принятого
пакета. Биты PID заполняются только для первого дескриптора принимаемого
кадра данных (бит F = 1). При передаче данных эти биты анализируются
только для первого буфера (бит F = 1) передаваемого кадра и определяют
тип передаваемого пакета. Если PID = 00, то буфер содержит пакет DATA0.
Если же бит PID = 01, то буфер содержит пакет DATA1.
Если принятый пакет не содержит ошибок, но в настройках контрольной точки
определенным образом определен тип пакета подтверждения, то будут
установлены биты NAK (в ответ посылается пакет отрицательного
подтверждения) или STALL (в ответ посылается пакет подтверждения STALL).
Эти биты устанавливаются после завершения передачи соответствующего
буфера данных.
Если после передачи конечная точка не дождалась подтверждения, то будет
установлен бит ТО := 1 (Time Out).
Регистр событий. Регистр событий USBER (рис. 5.72) расположен в ячейке
памяти по адресу (IMMR&0xFFFF0000)+0xA10. Сброс битов событий в регистре
событий производится записью единицы в соответствующий бит. Прерывание от
любого события в USB-контроллере будет зарегистрировано, только если
установлен в "1" бит регистра маски USBMR, соответствующий этому событию.
Регистр маски расположен в ячейке памяти по адресу
(IMMR&0xFFFF0000)+0xA14 и имеет формат, аналогичный регистру событий.
Если USB-контроллер находится в состоянии "сброс", то будет установлен в
"1" бит RESET регистра событий.
Бит IDLE регистра событий показывает, что изменилось состояние линий
связи.
Биты ТХЕх регистра событий устанавливаются в "1", если произошла ошибка
при передаче пакета данных: или не пришло подтверждение о получении
пакета, или произошла ошибка незаполнения Underrun.
При приеме пакета SOF (Start of Frame) устанавливается бит SOF := 1
регистра событий и увеличивается на единицу счетчик в ячейке FRAME_N
памяти параметров.
Если USB-контроллер начал прием нового кадра данных, значит RISC-
контроллер не нашел свободных буферных дескрипторов, а принимаемый кадр
Предыдущая << 1 .. 299 300 301 302 303 304 < 305 > 306 307 308 309 310 311 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed