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

Коммуникационные микроконтроллеры и системы на их основе

При работе в режиме slave SPI-интерфейс принимает данные от SPI master-станций и немедленно передает их обратно. Для начала передачи slave-устройством централь­ный процессор должен подготовить данные в буферах памяти, заполнить слово состоя­ния буферного дескриптора и установить для буферов TxBD бит готовности к передаче R := 1. Кроме этого, процессор должен подготовить для обмена и буферы приема RxBD. Когда данные будут подготовлены, процессору необходимо установить бит STR := 1 в регистре SPICOM, чтобы SPI-интерфейс мог подготовиться к возможному обмену дан­ными. Обмен начнется, когда придет активный сигнал выбора SPISEL = 0 и поступят тактовые сигналы на вход SPICLK. Данные будут передаваться на контакт SPIMISO и приниматься с контакта SPIMOSI. Маскируемое прерывание может быть выставлено при завершении работы с текущим буфером или если в ходе обмена зарегистрирована ошиб­ка. SPI-контроллер продолжает принимать данные в буферы приема RxBD, пока все под­готовленные буферы не будут заполнены или не будет снят активный сигнал SPISEL.

Если сигнал SPISEL стал пассивным, но все данные из буфера передачи еще не пе­реданы, то передача все равно будет прервана, а текущий буфер TxBD останется откры­тым. После прихода активного сигнала SPISEL и тактового сигнала SPICLK передача будет продолжена с точки остановки. Если же все данные переданы, а сигнал SPISEL остается активным, то контроллер будет продолжать передачу единичных битов «1».

При работе интерфейса в режиме multimaster одноименные выводы SPIMOSI, SPIMISO, SPICLK всех SPI-устройств соединяются вместе, а линии SPISEL присоединяются к каж­дому устройству по отдельности. При таком соединении в каждый момент времени только один SPI-контроллер может быть master-станцией, а все остальные - только устройствами slave. Если SPI-контроллер в текущий момент времени сконфигурирован как master-стан­ция, и приходит активный сигнал SPISEL = 0 от другого master-устройства, то регистриру­ется ошибка совместной работы multimaster-станций, устанавливается бит MIME в регист­ре событий и генерируется маскируемое прерывание центрального процессора. Работа SPI-устройств останавливается, и для повторного использования контроллеров пользова­тель должен сбросить бит включения EN в регистре SPIMODE.

Контроллер доступа к шине USB. Основные сведения о USB-контроллере в МРС823. USB-контроллер в МРС823 состоит из четырех основных блоков: приемника, передатчи­ка и двух автоматов для реализации протоколов обмена (protocol state machines). Оба автомата предназначены для управления работой блоков приемника и передатчика, один из них используется, когда контроллер работает в режиме function, а другой - когда кон­троллер работает в режиме host. Таким образом, USB-контроллер в МРС823 может ра­ботать или в режиме function, или в режиме host, или в обоих режимах сразу (это исполь­зуется при loop-back диагностировании аппаратуры).

Для тактирования USB-контроллера в МРС823 должна быть использована частота (USB reference clock), которая в четыре раза превышает тактовую частоту передаваемых данных, т. е. при работе с шиной 12 Мбит/с тактовая частота должна составлять 48 МГц, а при работе с шиной 1,5 Мбит/с - 6 МГц.

В режиме function контроллер автоматически выполняет обработку контрольной сум­мы CRC16/CRC5, NRZI-кодирование/декодирование данных с операцией вставки/удале­ния бит-стаффинга (bit stuffing). В подчиненном режиме контроллер может работать со скоростями 12 или 1,5 Мбит/с и обеспечивает автоматическую повторную передачу в слу­чае возникновения ошибок.

В режиме host контроллер автоматически выполняет обработку только контрольной суммы CRC16, NRZI-кодирование/декодирование данных с операцией вставки/удаления бит-стаффинга (bit stuffing). В режиме master контроллер может работать только со ско­ростью 12 Мбит/с и обеспечивает поддержку диагностического режима работы «внутрен­няя петля» (local loopback). Таким образом, при функционировании МРС823 в режиме host-контроллера существуют ряд нижеперечисленных ограничений.

534

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

  • Не поддерживается обмен со скоростью 1,5 Мбит/с, так как передатчик не может выра­ батывать биты преамбулы при низкоскоростном обмене.

  • USB-контроллер в МРС823 не может выполнять функции корневого хаба (root hub).

  • Некоторые функции удалены с аппаратного уровня и должны быть реализованы на программном уровне: генерация контрольной суммы CRC5 для кадров маркера (token); обнаружение ошибок и повторная передача кадра при ошибке; генерация и передача каждую 1 мс маркеров SOF tokens.

Обратите внимание, что в отличие от других коммуникационных каналов, в USB-кон-троллере изменена схема распределения буферов FIFO. USB-передатчик обслуживает четыре независимых 16-байтных буфера FIFO, т. е. за каждой конечной точкой (endpoint) закреплен свой буфер передачи. А USB-приемник имеет один общий 16-байтный буфер FIFO приема.

Настройка основных режимов работы USB-контроллера производится при програм­мировании регистра режима USMOD (рис. 5.62), который расположен в памяти по адре­су (IMMR&OxFFFFOOO)+OxAOO.

Бит EN разрешает работу USB-контроллера. Если бит EN = 1, то контроллер работа­ет в нормальном режиме, а если бит EN = 0, то контроллер находится в состоянии сбро­са, а его схемы - в режиме пониженного энергопотребления.

Бит LSS определяет скорость работы USB-контроллера. Если бит LSS = 0, то ско­рость передачи составляет 12 Мбит/с, а если LSS = 1, то 1,5 Мбит/с.

Бит HOST определяет режим работы USB-устройства. При значении бита HOST = О устройство работает как функция, а при значении HOST = 1 - как хост (host).

При установленном бите RESUME = 1 устройство-функция будет передавать по шине специальные сигналы при выходе из состояния «сон» (suspend mode).

Установка бита TEST = 1 переводит контроллер в тестовый режим внутренней петли. В тестовом режиме включается режим низкоскоростной передачи 1,5 Мбит/с, и, если установлен бит HOST = 1, то конечная точка Endpoint 0 работает как хост, a Endpoint 1-Endpoint 3 - как функции.

Контроллер поддерживает работу с четырьмя конечными точками (endpoints), каждая из которых может работать в одном из четырех режимов передачи (control, interrupt, bulk, isochronous). Обратите внимание, что точка Endpoint 0 должна быть сконфигурирована для control-обмена. Выбор режима работы каждой из конечных точек настраивается при профаммирова-нии регистров конфигурации USEPx конечной точки (рис. 5.63), которые расположены в памяти по адресу (IMMR&OxFFFFOOO)+OxA04 - USEPO, (IMMR&OxFFFFOOO)+OxA06 - USEP1, (IMMR& OxFFFFOOO)+OxA08 - USEP2, (IMMR&OxFFFFOOO)+OxAOA - USEP3. Все регистры конфигурации имеют одинаковый формат.

Номер конечной точки, с которой связан тот или иной регистр USEPx, определяется в поле EPN (Endpoint Number). Биты ТМ (Transfer Mode) определяют, какой режим обмена использует конечная точка (00 - Control, 01 - Interrupt, 10 - Bulk, 11 - Isochronous).

Для того чтобы увеличить скорость передачи, пользователь может изменить бит MF (MultiFrame). Если бит MF = 0, то в буфере FIFO передатчика всегда могут быть данные только одного кадра. Если же бит MF = 1, то в буфер FIFO передатчика во время передачи данных текущего кадра может начаться загрузка данных следующего кадра.

LSS

RESUME

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

TEST

HOST

EN

Рис. 5.62. Регистр режима USB-контроллера USMOD

535

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

8 9 10 11 12 13 14 15

EPN

ТМ

О MF RTE THS

RHS

Рис. 5.63. Формат регистра конфигурации конечных точек USEPx

Если таймер ожидания ответа на переданный пакет истек, а ответ-подтверждение не поступил, то USB-контроллер, если установлен бит RTE = 1, произведет повторную передачу текущего кадра данных.

Обратите внимание, что при работе в изохронном (isochronous) режиме передачи биты MF и RTE должны быть равны нулю.

Если USB-контроллер работает в режиме slave, то биты THS и RHS определяют, ка­кой тип пакета-подтверждения будет выдаваться в ответ на прием маркера OUT или IN (табл. 5.38). Но следует обратить внимание, что посылка подтверждений NAK и STALL не разрешена для конечной точки Control.

Таблица 5.38