Поиск по сайту:

 


По базе:  

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

реклама

 




Мероприятия:




22.14. Управление конечной точкой IN

Пакеты IN отправляются Device-контроллером по запросу IN Host-стороны. Все данные могут быть записаны ЦПУ, который подтверждает или нет заполненный банк.

22.14.1. Обзор

Первоначально необходимо настроить конечную точку.

Бит TXINI устанавливается аппаратно, когда освобождается текущий банк. Если бит TXINE установлен, это приводит к запуску прерывания. Одновременно с ним выполняется установка бита FIFOCON. Чтобы разрешить USB-контроллеру передавать данные, ЦПУ нужно записать их в FIFO и сбросить бит. Если конечная точка IN состоит из нескольких банков, то одновременно с этим происходит переход к следующему банку данных. Биты TXINI и FIFOCON автоматически обновляются аппаратными средствами, независимо от состояния следующего банка.

Бит TXINI необходимо обнулять только перед обнулением FIFOCON.

Бит RWAL всегда отражает состояние текущего банка. Данный бит равен 1, когда разрешается программная запись данных в банк, и равен 0, когда банк полон.

22.14.2. Подробное описание

ЦПУ записывает данные в соответствии со следующей последовательностью:

  • Когда банк пуст, запускается прерывание конечной точки (EPINTx), но только при условии, что это прерывание разрешено (TXINE=1) и установлен бит TXINI. В зависимости от архитектуры программы, ЦПУ альтернативно может выполнить опрос бита TXINI или FIFOCON;
  • ЦПУ подтверждает прерывание сбросом бита TXINI;
  • ЦПУ записывает данные в текущий банк (запись в UEDATX),
  • ЦПУ освобождает банк путем сброса FIFOCON, но только после записи всех данных, а именно:
  • после N записей в UEDATX;
  • вскоре после аппаратного сброса RWAL.

Если конечная точка использует 2 банка, то одновременно с заполнением ЦПУ одного банка Host-сторона может считывать другой банк. Затем, когда ЦПУ сбрасывает FIFOCON, очередной банк может быть уже готов (свободен), а TXINI устанавливается незамедлительно.

22.14.2.1. Функция ABORT

Потребность в функции ABORT инициируется Host-стороной и возникает в следующих ситуациях:

  • (транзакция CONTROL) ZLP-данные OUT приняты на этапе IN;
  • (транзакция ISOCHRONOUS IN) ZLP-данные OUT приняты конечной точкой OUT на этапе IN конечной точки IN
  • ...

В такой ситуации необходимо воспользоваться битом ликвидации последнего записанного банка KILLBK, придерживаясь следующего алгоритма.

Таблица 22.1. Блок-схема функции ABORT

22.15. Изохронный режим

22.15.1. Ошибка незаполнения

Ошибка незаполнения может возникнуть на этапе IN, если Host-сторона пытается прочитать пустой банк. В этой ситуации запускается прерывание UNDERFI.

Данная ошибка может также возникнуть на этапе OUT, если Host-сторона отправляет пакет, а банки уже заполнены. Обычно ЦПУ не обладает достаточным быстродействием и пакет теряется.

Ошибка незаполнения не может возникнуть по вине ЦПУ, если последний будет выполнять чтение, только если банк готов отдавать данные (RXOUTI=1 или RWAL=1).

22.15.2. Ошибка CRC

Ошибка CRC может возникнуть на этапе OUT, если USB-контроллер примет поврежденный пакет. В такой ситуации запускается прерывание STALLEDI. Это не предотвращает запуск прерывания RXOUTI.

22.16. Ошибка переполнения

Ошибка переполнения может возникнуть в конечной точке типа CONTROL, ISOCHRONOUS, BULK или INTERRUPT на этапе OUT, если Host-сторона пытается записать в банк, размер которого слишком мал для пакета. В этой ситуации, запускается прерывание OVERFI, если таковое было разрешено прежде. Для такого пакета генерируется подтверждение NACK, а также генерируется прерывание RXOUTI (если его работа была разрешена). Банк заполнен первыми байтами пакета.

Ошибка переполнения на этапе IN не возникнет по вине ЦПУ, если последний будет записывать данные, только когда банк готов к этому (TXINI=1 или RWAL=1).

22.17. Прерывания

На следующем рисунке показаны все источники прерываний:

Система прерываний Device-контроллера
Рисунок 22.4. Система прерываний Device-контроллера

Все прерывания разделяются на два вида: операционные (т.е. их генерация является частью нормальной работы) и нештатные (ошибки).

Предусмотрена генерация следующих видов операционных прерываний:

  • по обнаружению подачи или снятия напряжения VBUS (VBUSTI)
  • UPSTREAM RESUME (UPRSMI)
  • END OF RUSUME (EORSMI)
  • WAKE-UP (WAKEUPI)
  • END OF RESET (инициализация скорости) (EORSTI)
  • START OF FRAME (SOFI, если FNCERR=0)
  • по обнаружению SUSPEND после 3 мс неактивности (SUSPI)

Нештатные прерывания генерируются, когда:

  • обнаруживается ошибка CRC номера посылки в пакете START OF FRAME (SOFI, FNCERR=1)

Система прерываний конечной точки Device-контроллера
Рисунок 22.5. Система прерываний конечной точки Device-контроллера

Предусмотрена генерация следующих операционных прерываний:

  • готовность к получению данных IN (EPINTx, TXINI=1)
  • прием данных OUT (EPINTx, RXOUTI=1)
  • прием SETUP (EPINTx, RXSTPI=1)

Нештатные прерывания:

  • пакет STALL (EPINTx, STALLEDI=1)
  • ошибка CRC в изохронном режиме в направлении OUT (EPINTx, STALLEDI=1)
  • переполнение в изохронном режиме (EPINTx, OVERFI=1)
  • незаполнение в изохронном режиме (EPINTx, UNDERFI=1)
  • отправлено NAK в направлении IN (EPINTx, NAKINI=1)
  • отправлено NAK в направлении OUT (EPINTx, NAKOUTI=1)


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





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