Буферы оконечных точек
Буферы оконечных точек расположены в двухпортовой памяти модуля USB. Начальный адрес буфера для каждой оконечной точки определяется в соответствующем дескрипторе буфера.
Управление BD и буфером данных в двухпортовой памяти обычно осуществляется следующим образом:
• Ядро процессора проверяет бит UOWN в регистре BDndST. Если он равен 0, то устанавливает адрес начала буфера в регистре BDndAL, в случае необходимости заполняет буфер и устанавливает необходимое значение в BDndST с UOWN= 1.
• Если транзакция команда главной ЭВМ или вывод, то модуль USB выполняет следующее:
- получает адрес буфера,
- читает или записывает буфер,
- модифицирует регистр USTAT,
- модифицирует дескриптор буфера значением идентификатора пакета (PID),
- устанавливает бит DATA 0/1,
- модифицирует счетчик байтов,
- сбрасывает бит UOWN.
• По прерыванию ядро процессора читает регистр USTAT, определяет номер оконечной точки, читает соответствующий BD, где проверяет биты UOWN, PID, DATA 0/l и значение счетчика байтов.
|
|
Для помощи разработчикам в реализации проектов фирма Microchip Technology поставляет набор функций, поддерживающих интерфейс USB на низком программном уровне в соответствии с главой 9 стандарта USB. Эти библиотеки позволяют освободить основное программное обеспечение от необходимости обрабатывать сложный протокол USB. Выполнение большинства функций USB обеспечиваются просто вызовом интерфейсных функций Put/Get (передать/принять), обработка которых осуществляется на втором плане, подпрограммой обслуживания прерывания USB.
Библиотеки также обеспечивают операции при нумерации и конфигурировании. Однако установка реальных описателей функции должна выполняться пользователем.