Программирование модуля USB

Буферы оконечных точек

Буферы оконечных точек расположены в двухпортовой памяти модуля 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.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: