Вот типичная процедура обмена для PDIUSBD12. Делал по ней.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено misyachniy 18 ноября 2002 г. 14:24
В ответ на: нормально, вроде бы(+) отправлено 333ий 18 ноября 2002 г. 13:52

If the hardware is implemented correctly, and you properly initialize the 'D12, then connect the cable, you should expect to see something similar to the following sequence of events...

Suspend Change
Suspend change!
Idle time = 1 sec.
Bus Reset
Bus reset!

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 40 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID

Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Bus Reset
Bus reset!

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 00 05 02 00 00 00 00 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = SET_ADDRESS.
WrEp1 0 - { } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 12 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID

Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 02 00 00 FF 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 09 02 2E 00 01 01 00 60 01 09 04 00 00 04 DC A0 } VALID

Ep0_IN_ISR
WrEp1 16 - { B0 00 07 05 81 03 10 00 0A 07 05 01 03 10 00 0A } VALID

Ep0_IN_ISR
WrEp1 14 - { 07 05 82 02 40 00 0A 07 05 02 02 40 00 0A } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 01 00 00 12 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 12 01 00 01 DC 00 00 10 71 04 22 02 00 01 00 00 } VALID

Ep0_IN_ISR
WrEp1 2 - { 00 01 } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 06 00 02 00 00 09 01 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_DESCRIPTOR.
WrEp1 16 - { 09 02 2E 00 01 01 00 60 01 09 04 00 00 04 DC A0 } VALID

Ep0_IN_ISR
WrEp1 16 - { B0 00 07 05 81 03 10 00 0A 07 05 01 03 10 00 0A } VALID

Ep0_IN_ISR
WrEp1 14 - { 07 05 82 02 40 00 0A 07 05 02 02 40 00 0A } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 00 09 01 00 00 00 00 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = SET_CONFIGURATION.
WrEp1 0 - { } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 80 08 00 00 00 00 01 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_CONFIGURATION.
WrEp1 1 - { 01 } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Ep0_OUT_ISR
RdEp0 Len8 Cnt8 { 81 0A 00 00 00 00 01 00 } CLEAR
AckSetupEp0Out, ClrBufEp0Out, AckSetupEp0In
Request Type = Standard, Request = GET_INTERFACE.
WrEp1 1 - { 00 } VALID

Ep0_IN_ISR

Ep0_OUT_ISR
RdEp0 Len16 Cnt0 { } CLEAR

Не знаю с чем вы работаете. Но в PDI нужно после получения адреса(SetAdress, если устройство одно, то адрес обычно равен 2) нужно этот
адрес передать в драйвер шины(PDI) и разрешить его(Set Adress/ Enable для PDI).

Судя по тому что получаете запрос Get Config Descriptor, Set Adress в
контроллере обрабатывается не корректно.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru