Spider 0 25 августа, 2010 Опубликовано 25 августа, 2010 · Жалоба Всем привет. Перерыл ветку и прочитал кучу сообщений, но никак не могу описать USB AudioInput + USB HID. После втыкания устройства в USB винда определяет "Составное устройство" и вот тут драйвер уже не устанавливается. А поразнь - всё отлично. Ткните что не так плииз. Вот дескриптор в формате LUFA: USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .USBSpecification = VERSION_BCD(01.10), .Class = 0xEF, .SubClass = 0x02, .Protocol = 0x01, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .VendorID = 0x03EB, .ProductID = 0x204D, .ReleaseNumber = 0x0000, .ManufacturerStrIndex = 0x01, .ProductStrIndex = 0x02, .SerialNumStrIndex = USE_INTERNAL_SERIAL, .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS }; USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = { .Config = { .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), .TotalInterfaces = 4, .ConfigurationNumber = 1, .ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) }, //HID .HID1_GenericInterface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 0, .AlternateSetting = 0x00, .TotalEndpoints = 1, .Class = 0x03, .SubClass = 0x00, .Protocol = HID_NON_BOOT_PROTOCOL, .InterfaceStrIndex = 0x03 }, .HID1_GenericHID = { .Header = {.Size = sizeof(USB_HID_Descriptor_t), .Type = DTYPE_HID}, .HIDSpec = VERSION_BCD(01.11), .CountryCode = 0x00, .TotalReportDescriptors = 1, .HIDReportType = DTYPE_Report, .HIDReportLength = sizeof(GenericReport) }, .HID1_ReportINEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | GENERIC_IN_EPNUM), .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = HID_EPSIZE, .PollingIntervalMS = 0x0A }, //Keyboard .HID2_KeyboardInterface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 1, .AlternateSetting = 0x00, .TotalEndpoints = 1, .Class = 0x03, .SubClass = 0x01, .Protocol = HID_BOOT_KEYBOARD_PROTOCOL, .InterfaceStrIndex = 0x04 }, .HID2_KeyboardHID = { .Header = {.Size = sizeof(USB_HID_Descriptor_t), .Type = DTYPE_HID}, .HIDSpec = VERSION_BCD(01.11), .CountryCode = 0x00, .TotalReportDescriptors = 1, .HIDReportType = DTYPE_Report, .HIDReportLength = sizeof(KeyboardReport) }, .HID2_ReportINEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_IN_EPNUM), .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = HID_EPSIZE, .PollingIntervalMS = 0x0A }, //Microphone .Audio_ControlInterface_IAD = { .Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation}, .FirstInterfaceIndex = 2, .TotalInterfaces = 2, .Class = 0x01, .SubClass = 0x01, .Protocol = 0x00, .IADStrIndex = 0x06 }, .Audio_ControlInterface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 2, .AlternateSetting = 0, .TotalEndpoints = 0, .Class = 0x01, .SubClass = 0x01, .Protocol = 0x00, .InterfaceStrIndex = 0x06 }, .Audio_ControlInterface_SPC = { .Header = {.Size = sizeof(USB_Audio_Interface_AC_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_Header, .ACSpecification = VERSION_BCD(01.00), .TotalLength = (sizeof(USB_Audio_Interface_AC_t) + sizeof(USB_Audio_InputTerminal_t) + sizeof(USB_Audio_OutputTerminal_t)), .InCollection = 1, .InterfaceNumbers = {1}, }, .Audio_InputTerminal = { .Header = {.Size = sizeof(USB_Audio_InputTerminal_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_InputTerminal, .TerminalID = 0x01, .TerminalType = TERMINAL_IN_MIC, .AssociatedOutputTerminal = 0x00, .TotalChannels = 1, .ChannelConfig = 0, .ChannelStrIndex = NO_DESCRIPTOR, .TerminalStrIndex = NO_DESCRIPTOR }, .Audio_OutputTerminal = { .Header = {.Size = sizeof(USB_Audio_OutputTerminal_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_OutputTerminal, .TerminalID = 0x02, .TerminalType = TERMINAL_STREAMING, .AssociatedInputTerminal = 0x00, .SourceID = 0x01, .TerminalStrIndex = NO_DESCRIPTOR }, .Audio_StreamInterface_Alt0 = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 3, .AlternateSetting = 0, .TotalEndpoints = 0, .Class = 0x01, .SubClass = 0x02, .Protocol = 0x00, .InterfaceStrIndex = NO_DESCRIPTOR }, .Audio_StreamInterface_Alt1 = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .InterfaceNumber = 3, .AlternateSetting = 1, .TotalEndpoints = 1, .Class = 0x01, .SubClass = 0x02, .Protocol = 0x00, .InterfaceStrIndex = NO_DESCRIPTOR }, .Audio_StreamInterface_SPC = { .Header = {.Size = sizeof(USB_Audio_Interface_AS_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_General, .TerminalLink = 0x02, .FrameDelay = 1, .AudioFormat = 0x0001 }, .Audio_AudioFormat = { .Header = {.Size = sizeof(USB_Audio_Format_t), .Type = DTYPE_AudioInterface}, .Subtype = DSUBTYPE_Format, .FormatType = 0x01, .Channels = 0x01, .SubFrameSize = 0x02, .BitResolution = 16, .SampleFrequencyType = AUDIO_TOTAL_SAMPLE_RATES, .SampleFrequencies = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)} }, .Audio_StreamEndpoint = { .Endpoint = { .Header = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint}, .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | AUDIO_STREAM_EPNUM), .Attributes = (EP_TYPE_ISOCHRONOUS | ENDPOINT_ATTR_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = AUDIO_STREAM_EPSIZE, .PollingIntervalMS = 1 }, .Refresh = 0, .SyncEndpointNumber = 0 }, .Audio_StreamEndpoint_SPC = { .Header = {.Size = sizeof(USB_Audio_StreamEndpoint_Spc_t), .Type = DTYPE_AudioEndpoint}, .Subtype = DSUBTYPE_General, .Attributes = 0x00, .LockDelayUnits = 0x00, .LockDelay = 0x0000 } }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 28 ноября, 2010 Опубликовано 28 ноября, 2010 (изменено) · Жалоба Кому-нибудь удалось запустить на AT91sam7sxxx пример usb-device-composite-cdchid-project? У меня даже прекомпилированный из пакета с примерами не опознаётся... (cdc в одиночестве нормально видится). После некоторгого колчестав возни сделал общее дерево исходников для конфигураций #CHIP = at91sam9xe512 #BOARD = at91sam9xe-ek CHIP = at91sam7s64 BOARD = at91sam7s-ek на evaluation board с at91sam9xe512 оба устройства опознаются нормально, на устройстве с at91sam7s64 процесс не доходит до конца - и USB composite device висит с вопросиком. Это у меня криво или играет роль та самая ошибка в usb framework про недосылку нулевого пакета после кратного длине допустимого для EP пакета? Есть ли поправленный вариант usb framework? Одиночное устройство CDC, композитное usb-device-audio-looprec-project работают нормально. Да, уточняю - используется AT91LIB version 1.9 (11 MB, revision 1.9, updated 12/08) из файла at91lib_20100901_softpack_1_9_v_1_0_svn_v15011 Изменено 28 ноября, 2010 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться