Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Организация коммуникационных процессорных модулей в кмк

Таблица 5.39

Память основных параметров usb-контроллера

Адрес

Название

Размер, бит

Описание

USBBASE+00

EPOPTR

16

Указатель на начало памяти параметров Endpoint 0

USBBASE+02

EP1PTR

16

Указатель на начало памяти параметров Endpoint 1

USBBASE+04

EP2PTR

16

Указатель на начало памяти параметров Endpoint 2

USBBASE+06

EP3PTR

16

Указатель на начало памяти параметров Endpoint 3

USBBASE+08

RSTATE

32

Внутреннее Rx-состояние

USBBASE+OC

RPTR

32

Временный внутренний указатель на текущую обрабаты­ваемую ячейку RX буфера приемника

USBBASE+10

FRAME_N

16

Номер кадра

USBBASE+12

RBCNT

16

Внутренний счетчик принятых в буфер Rx байт данных

USBBASE+14

RTEMP

32

Временная RX-переменная

Примечание. Переменные в ячейках EPOPTR, EP1PTR, EP2PTR, EP3PTR и FRAME_N ини­циализируются пользователем до начала работы с USB-контроллером. Остальные ячейки исполь­зуются контроллером при его работе и поэтому их содержимое изменять не рекомендуется.

В ячейках EPxPTR (рис. 5.67) указываются адреса начала памяти каждой из исполь­зуемых конечных точек (требуется, чтобы адреса были кратны 32).

В USB-контроллере назначение переменных в ячейках памяти параметров отдель­ной контрольной точки (табл. 5.40) полностью совпадает с назначением одноименных переменных в SCC- и SMC-контроллерах.

Таблица 5.40 Память параметров отдельной конечной точки

Адрес

Название

Размер, бит

Описание

Base+00

RBASE

16

Базовый адрес таблицы Rx BD

Base+02

TBASE

16

Базовый адрес таблицы Тх BD

Base+04

RFCR

08

Функциональные коды Rx

Base+05

TFCR

08

Функциональные коды Тх

Base+06

MRBLR

16

Максимальная длина Rx-буфера

Base+08

RBPTR

16

Указатель на следующий дескриптор Rx BD

Base+OA

TBPTR

16

Указатель на следующий дескриптор Тх BD

Base+OC

TSTATE

32

Внутреннее Тх-состояние

Base+10

TPTR

32

Временный внутренний указатель на текущую обрабатываемую ячейку Тх буфера передатчика

Base+14

TCRC

16

Текущее значение CRC суммы при передаче кадра

Base* 16

TBCNT

16

Внутренний счетчик переданных Тх байт данных

Base+1C

32

Зарезервировано

Примечани е.Переменные в ячейках RBASE. TBASE, RFCR, TFCR, RBPTR, TBPTR, MRBLR и TSTATE = 0 инициализируются пользователем до начала работы с USB-контроллером. Остальные ячейки используются контроллером при его работе и поэтому их содержимое изменять не рекомен­дуется.

541

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ

6

10 11 12 13 14 15

Endpoint Pointer

Рис. 5.67. Формат ячеек EPxPTR

Дополнительно в ячейке TBCNT содержится внутренний вычитающий счетчик, в кото­рый при переходе к новому дескриптору передачи заносится длина буфера из соответ­ствующего поля дескриптора и значение которого уменьшается на единицу при передаче очередного байта через SDMA-канал.

Однотипная же ячейка RBCNT имеется только в памяти параметров всего USB-кон-троллера и отсутствует среди параметров отдельных конечных точек, так как все конеч­ные точки выполняют прием через общий FIFO буфер приема, и содержит внутренний вычитающий счетчик, в который при переходе к новому дескриптору приема заносится содержимое ячейки MRBLR и значение которого уменьшается на единицу при передаче очередного байта через SDMA-канал.

Управление USB-контроллером. Пользователь может управлять работой USB-кон-троллера, программируя его регистр команд CPCR (рис. 5.68), который расположен в ячейке памяти по адресу (IMMR & OxFFFFOOOO)+Ox9CO. Код команды управления запи­сывается в биты USBCMD регистра команд (табл. 5.41). Указанная команда будет приме­нена к конечной точке, номер которой указан в битах ENDPOINT (00-EndpointO, 01-Endpointl, 10-Endpoint2, 11-Endpoint3). Для того чтобы USB-контроллер начал выпол­нять команду, необходимо установить бит FLG = 1 . После выполнения команды контрол­лер автоматически сбросит этот бит.

1

10 11

12

13 14

15

RST USBCMD 11

ENDPOINT

FLG

Рис. 5.68. Формат регистра команд USB-контроллера CPCR

Бит RST = 1 следует устанавливать, если требуется сбросить параметры всех ком­муникационных каналов, регистры RISC-контроллера и RISC-таймера коммуникацион­ного контроллера в исходное состояние. Процедура сброса выполняется RISC-контрол­лером в течение 60 тактов шины. Через два такта шины бит RST будет автоматически сброшен в «О».

Таблица 5.41 Коды команд управления USB-контроллером

Код команды

Тип команды

Описание команды

001 010

000,011, 100, 101, 110, 111

STOP ТХ ENDPOINT

RESTART TX ENDPOINT

Останавливается передача данных на указанной конечной точке (endpoint). Буфер FIFO конечной точки заполняется полностью. Передача может быть возобновлена только после получения ко­манды RESTART TX ENDPOINT.

Возобновление передачи на указанной конечной точке. Обычно команда используется для возобновления передачи после выпол­нения команды STOP TX ENDPOINT или после возникновения ошибок передачи (незаполнение underrun или переполнение тай­мера ожидания ответа timeout).

Зарезервировано.

542

ОРГАНИЗАЦИЯ КОММУНИКАЦИОННЫХ ПРОЦЕССОРНЫХ МОДУЛЕЙ В КМК

STR

FLUSH

0

0

0

0 | ЕР

Рис. 5.69. Регистр USB-команд

При работе пользователь также имеет возможность управлять работой USB-контрол-лера, программируя регистр USB-команд (рис. 5.69), который расположен в ячейке па­мяти по адресу (IMMR & OxFFFFOOOO)+OxA02. Если установить бит STR := 1, то контрол­лер начнет подготовку данных к передаче и заполнение данными буфера FIFO передат­чика конечной точки, номер которой указывается в битах ЕР. Реально передача этих дан­ных в сеть начнется только после приема маркера IN.

При передаче данных пользователь может также, если необходимо, заменить содер­жимое буфера FIFO передатчика. Для этого следует передать контроллеру команду STOP ТХ ENDPOINT и установить бит FLUSH := 1. Для возобновления передачи надо исполь­зовать команду RESTART TX ENDPOINT.

Буферные дескрипторы USB-контроллера. USB-контроллер использует такую же структуру буферных дескрипторов, что и большинство коммуникационных каналов, со­стоящую из четырех ячеек по 16 бит (первая ячейка - слово состояния дескриптора (рис. 5.70, 5.71), вторая -длина буфера данных в памяти, адрес которого указан в 3-й и 4-й ячейках дескриптора).

Большинство битов слов состояния имеют такое же функциональное назначение, что и для других коммуникационных каналов.

Бит Е (Empty) - бит незанятого буфера («О» - буфер занят, «1» - не занят). Бит R (Ready) - бит готовности буфера к передаче («О» - не готов, «1» - готов или уже переда­ется). Бит W (Wrap) - бит последнего дескриптора в таблице дескрипторов («О» - не последний дескриптор, «1» - последний). Бит I (Interrupt) - бит прерывания при заверше­нии обработки данного буфера («О» - прерывание не регистрируется, «1» - регистриру­ется в регистре событий в бите RXB при приеме и ТХВ или ТХЕ при передаче). Биты F (First) и L (Last) первого и последнего буфера, в которых расположен первый (последний) бит текущего кадра данных («О» - это не первый и не последний буфер, «1» - это первый (последний) буфер кадра).

ю

и

12 13 14

15

— W

PID — NO АВ CR OV —

Рис. 5.70. Слово состояния буферного дескриптора приема USB-контроллера

Если установлен бит ТС = 1 (Transmit CRC), то после завершения передачи содержи­мого последнего буфера кадра (установлен бит L = 1) сразу же будет передана конт­рольная сумма кадра. Если бит ТС = 0, то будет передан признак ЕОР (End of Packet).

После завершения передачи содержимого последнего буфера кадра (бит L = 1), если установлен бит CNF = 1, то контроллер будет ожидать получение подтверждения о дос­тавке пакета. Если же бит CNF = 0, то, не ожидая ответа, будет загружать в буфер FIFO передатчика данные следующего пакета.

10 11

12 13 14

15

R — W I L ТС CNF —

PID

— NAK STAL TO UN —

Рис. 5.71. Слово состояния буферного дескриптора передачи USB-контроллера

543

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ

В бите NO (Non Octet) регистрируется ошибка приема кадра, длина которого не крат­на байту. В бите АВ (Frame Aborted) регистрируется ошибка нарушения алгоритма рабо­ты с бит-стаффингом. Ошибка при проверке контрольной суммы регистрируется в бите CR (CRC Error). Ошибка переполнения буфера FIFO приемника регистрируется в бите OV (Overrun), а переполнение буфера FIFO передатчика - в бите UN (Underrun).

В биты PID (Packed 10) при приеме контроллер заносит тип принятого пакета. Биты РЮ заполняются только для первого дескриптора принимаемого кадра данных (бит F = 1). При передаче данных эти биты анализируются только для первого буфера (бит F = 1) переда­ваемого кадра и определяют тип передаваемого пакета. Если РЮ = 00, то буфер содержит пакет DATAO. Если же бит PID = 01, то буфер содержит пакет DATA1.

Если принятый пакет не содержит ошибок, но в настройках контрольной точки опре­деленным образом определен тип пакета подтверждения, то будут установлены биты NAK (в ответ посылается пакет отрицательного подтверждения) или STALL (в ответ по­сылается пакет подтверждения STALL). Эти биты устанавливаются после завершения передачи соответствующего буфера данных.

Если после передачи конечная точка не дождалась подтверждения, то будет установ­лен бит ТО := 1 (Time Out).

Регистр событий. Регистр событий USBER (рис. 5.72) расположен в ячейке памяти по адресу (IMMR&OxFFFFOOOO)+OxA10. Сброс битов событий в регистре событий произ­водится записью единицы в соответствующий бит. Прерывание от любого события в USB-контроллере будет зарегистрировано, только если установлен в «1» бит регистра маски USBMR, соответствующий этому событию. Регистр маски расположен в ячейке памяти по адресу (IMMR&OxFFFFOOOO)+OxA14 и имеет формат, аналогичный регистру событий.

Если USB-контроллер находится в состоянии «сброс», то будет установлен в «1» бит RESET регистра событий.

Бит IDLE регистра событий показывает, что изменилось состояние линий связи.

Биты ТХЕх регистра событий устанавливаются в «1», если произошла ошибка при передаче пакета данных: или не пришло подтверждение о получении пакета, или про­изошла ошибка незаполнения Underrun.

При приеме пакета SOF (Start of Frame) устанавливается бит SOF := 1 регистра собы­тий и увеличивается на единицу счетчик в ячейке FRAME_N памяти параметров.

Если USB-контроллер начал прием нового кадра данных, значит RISC-контроллер не нашел свободных буферных дескрипторов, а принимаемый кадр будет игнорирован и будет установлен бит BSY регистра событий.

Установка бита ТХВ регистра событий свидетельствует о том, что из текущего (но не последнего в кадре) буфера был передан в буфер FIFO передатчика последний символ, или если это последний буфер кадра, то бит будет установлен, только когда последний символ кадра будет передан в линию связи.

Установка бита RXB регистра событий свидетельствует о том, что при приеме данных текущий буфер заполнен и его дескриптор закрыт.

0123456 7 8 9 10 11 12 13 14 15

Зарезервировано. Все «0».

Reset | IDLE | TXE3

ТХЕ2 | ТХЕ1 | ТХЕО

SOF

BSY | ТХВ | RXB

Рис. 5.72. Формат регистра событий USB-контроллера USBER и регистра маски USBMR 544