Саня (15.05.2005 00:59, просмотров: 2692)
Люди добрые, помогите начинающему с USB ... Проблема: не могу заставить систему опознать мое устройство. Выскакивает окно
"Обнаружено новое USB устройство" и все. Не появляется строковое описание
моего устройства, не предлагается установить драйвер. По завершении процесса
в системе появляется неработающее USB-устройство и все.
MCU - C8051F320.
Вот отладочный листинг (все числа шестнадцатиричные):
USB Reset
1.Запрос дескриптора устройтства
EP0 request. E0CSR = 01. Packet: 80 06 00 01 00 00 40 00
STD IN request GET_DESCRIPTOR. Descriptor : 01
TX from EP0. Bytes: 12. FIFO write: uNumBytes = 12
12 01 10 01 00 00 00 20 C4 33 01 00 00 01 01 02 03 01
************************
EP0 request. E0CSR = 00.
************************
2. Сброс USB
USB Reset
3. Назначение устройству нового адреса.
EP0 request. E0CSR = 01. Packet: 00 05 03 00 00 00 00 00
STD OUT request SET_ADDRESS. Address: 03
************************
EP0 request. E0CSR = 10. Setup End
************************
4. Запрос дескриптора устройства.
EP0 request. E0CSR = 01. Packet: 80 06 00 01 00 00 12 00
STD IN request GET_DESCRIPTOR. Descriptor : 01
TX from EP0. Bytes: 12. FIFO write: uNumBytes = 12
12 01 10 01 00 00 00 20 C4 33 01 00 00 01 01 02 03 01
************************
5. Запрос дескриптора устройства длиной 9 байт.
EP0 request. E0CSR = 01. Packet: 80 06 00 02 00 00 09 00
STD IN request GET_DESCRIPTOR. Descriptor : 02
TX from EP0. Bytes: 09. FIFO write: uNumBytes = 09
09 02 20 00 01 01 00 80 32
************************
EP0 request. E0CSR = 00.
************************
6. Запрос стокового дескриптора с индексом 0.
Возвращается идентификатор языка (0409h - английский)
EP0 request. E0CSR = 01. Packet: 80 06 00 03 00 00 FF 00
STD IN request GET_DESCRIPTOR. Descriptor : 03
TX from EP0. Bytes: 04. FIFO write: uNumBytes = 04
04 03 09 04
************************
EP0 request. E0CSR = 00.
************************
7. Запрос строкового дескриптора с индесом 3 - версия устройства
Язык строки - английский
EP0 request. E0CSR = 01. Packet: 80 06 03 03 09 04 FF 00
STD IN request GET_DESCRIPTOR. Descriptor : 03
TX from EP0. Bytes: 0A. FIFO write: uNumBytes = 0A
0A 03 31 00 2E 00 30 00 31 00
************************
EP0 request. E0CSR = 00.
************************
8. Запрос дескриптора конфигурации, интерфейса и конечных точек
Передаются 32 байта дескрипторов.
EP0 request. E0CSR = 01. Packet: 80 06 00 02 00 00 FF 00
STD IN request GET_DESCRIPTOR. Descriptor : 02
TX from EP0. Bytes: 20. FIFO write: uNumBytes = 20
09 02 20 00 01 01 00 80 32 09 04 00 00 02 00 00 00 00 07 05 02 02 40 00 00 07 05 82 02 40 00 00
************************
EP0 request. E0CSR = 04. Sent stall
************************
USB Reset
Все, облом. Все повторяется еще 2 раза, после чего в системе
появляетя неработающее устройство. Как я понял, какая-то ошибка в дескрипторе.
Но все перепроверял, вроде правильно?