Jump to content

    

VHEMaster

Участник
  • Content Count

    42
  • Joined

  • Last visited

Community Reputation

0 Обычный

About VHEMaster

  • Rank
    Участник
  1. Доброго дня! Неделю пытаюсь добить USB дескриптор так, чтобы Win10 опознавала STM32 как аудиоустройство с линейным выходом и микрофонным входом. По отдельности всё работает, но вместе - нет :cranky: Имеется такой дескриптор: /* Configuration 1 */ 0x09, /* bLength */ USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType */ LOBYTE(USB_AUDIO_CONFIG_DESC_SIZ), /* wTotalLength 109 bytes*/ HIBYTE(USB_AUDIO_CONFIG_DESC_SIZ), 0x02, /* bNumInterfaces */ 0x01, /* bConfigurationValue */ 0x00, /* iConfiguration */ 0xC0, /* bmAttributes BUS Powred*/ 0x32, /* bMaxPower = 100 mA*/ /* 09 byte*/ /* USB Speaker Standard interface descriptor */ AUDIO_INTERFACE_DESC_SIZE, /* bLength */ USB_DESC_TYPE_INTERFACE, /* bDescriptorType */ 0x00, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x00, /* bNumEndpoints */ USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* 09 byte*/ /* USB Speaker Class-specific AC Interface Descriptor */ AUDIO_INTERFACE_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */ 0x00, /* 1.00 */ /* bcdADC */ 0x01, 0x27, /* wTotalLength = 39*/ 0x00, 0x01, /* bInCollection */ 0x01, /* baInterfaceNr */ /* 09 byte*/ /* USB Speaker Input Terminal Descriptor */ AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */ 0x01, /* bTerminalID */ 0x01, /* wTerminalType AUDIO_TERMINAL_USB_STREAMING 0x0101 */ 0x01, 0x00, /* bAssocTerminal */ 0x02, /* bNrChannels */ 0x03, /* wChannelConfig 0x0000 Mono */ 0x00, 0x00, /* iChannelNames */ 0x00, /* iTerminal */ /* 12 byte*/ /* USB Speaker Audio Feature Unit Descriptor */ 0x09, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */ AUDIO_OUT_FEATURE_ID, /* bUnitID */ 0x01, /* bSourceID */ 0x01, /* bControlSize */ AUDIO_CONTROL_SUPPORT_MUTE | AUDIO_CONTROL_SUPPORT_VOLUME, /* bmaControls(0) */ 0, /* bmaControls(1) */ 0x00, /* iTerminal */ /* 09 byte*/ /*USB Speaker Output Terminal Descriptor */ 0x09, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */ 0x03, /* bTerminalID */ 0x01, /* wTerminalType 0x0301*/ 0x03, 0x00, /* bAssocTerminal */ 0x02, /* bSourceID */ 0x00, /* iTerminal */ /* 09 byte*/ /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */ /* Interface 1, Alternate Setting 0 */ AUDIO_INTERFACE_DESC_SIZE, /* bLength */ USB_DESC_TYPE_INTERFACE, /* bDescriptorType */ 0x01, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x00, /* bNumEndpoints */ USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* 09 byte*/ /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */ /* Interface 1, Alternate Setting 1 */ AUDIO_INTERFACE_DESC_SIZE, /* bLength */ USB_DESC_TYPE_INTERFACE, /* bDescriptorType */ 0x01, /* bInterfaceNumber */ 0x01, /* bAlternateSetting */ 0x01, /* bNumEndpoints */ USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */ AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */ AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* 09 byte*/ /* USB Speaker Audio Streaming Interface Descriptor */ AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */ 0x01, /* bTerminalLink */ 0x01, /* bDelay */ 0x01, /* wFormatTag AUDIO_FORMAT_PCM 0x0001*/ 0x00, /* 07 byte*/ /* USB Speaker Audio Type III Format Interface Descriptor */ 11, /* bLength */ AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */ AUDIO_FORMAT_TYPE_I, /* bFormatType */ 0x02, /* bNrChannels */ 0x04, /* bSubFrameSize : 2 Bytes per frame (16bits) */ 32, /* bBitResolution (16-bits per sample) */ 0x01, /* bSamFreqType only one frequency supported */ AUDIO_SAMPLE_FREQ(USBD_AUDIO_FREQ), /* 11 byte*/ /* Endpoint 1 - Standard Descriptor */ AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ USB_DESC_TYPE_ENDPOINT, /* bDescriptorType */ AUDIO_OUT_EP, /* bEndpointAddress 1 out endpoint*/ USBD_EP_TYPE_ISOC, /* bmAttributes */ AUDIO_PACKET_SZE(MAX_USBD_AUDIO_FREQ), /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */ 0x01, /* bInterval */ 0x00, /* bRefresh */ 0x00, /* bSynchAddress */ /* 09 byte*/ /* Endpoint - Audio Streaming Descriptor*/ AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */ AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_ENDPOINT_GENERAL, /* bDescriptor */ 0x01, /* bmAttributes 0x01 sampling frequency control */ 0x00, /* bLockDelayUnits */ 0x00, /* wLockDelay */ 0x00, /* 07 byte*/ Это дескриптор для работы устройства в роли линейного выхода. Нужно ещё прикрутить сюда линейный вход. Жаль, гугл не даёт результатов.. Лишь где-то на форуме ST один зарубежный коллега задавал такой же вопрос, но без внятных ответов. Помогите :(
  2. Не в ноуте дело, возможно. Другая, точно такая же звуковая карта, работает без проблем с моим ноутбуком.
  3. Доброго времени суток! Возможно, пишу не туда куда нужно.. Если что, перенесите куда нужно было. Проблема следующая. Имеется звуковая карта ASUS Xonar U7 USB https://pp.vk.me/c618318/v618318672/799d/B_aWNUpemfo.jpg Самой карточке почти два года. Проблема дала о себе знать ещё два-три месяца назад. Она просто в один момент перестала нормально запускаться от моего ноутбука ASUS K55VJ. Т.е. вставляю USB шнур в ноут, и на карточке просто разок мигнул светодиод, который говорит о том, что карточка завелась. А она должна гореть и через некоторое время должно щёлкнуть реле включения сигнала. Но этого не происходит.. Но эту проблему на то время решало включение карточки на 3-5 минут в USB зарядник, у которого на выходе линий D+ и D- удерживается 2 вольта. Соответствующий светодиод в это время горел, но реле не щёлкало. Месяц назад это перестало работать вовсе. Пожалуй, стоит добавить, что в контроллере карточки включены подтяжки на линиях D+ и D- к 3.3 вольтам. Этого, мне кажется, быть не должно.. Помогала та же процедура, но с обычным системным блоком, на котором даже винта нет. После включения шнура USB в системник соответствующий светодиод моргнул, загорелся, и через 5 секунд щёлкает нужное реле. Карточка завелась. Она же заводится и если включить в нормальный системник, у которого есть винт с виндой, то карточка прекрасно работает. Неделю назад обнаружил, что если в ноутбуке в настройках UEFI (BIOS) "XHCI Pre-Boot" установить на Enabled, то карточка кое-как, с горем пополам, заводилась почти сразу. Светодиод по началу мигал примерно с частотой 3 Гц, затем через некоторое время она начала работать. Сейчас же это тоже не работает. Светодиод постоянно мигает с той же частотой. И при включенном "XHCI Pre-Boot" наблюдается интересная вещь. Если к выводам GND и D+ припаять резистор на 22к, то карточка вроде бы заводится, светодиоды и реле говорят, что всё хорошо, и громкость регулятором регулируется. Однако! Звука на выходе нет. В режиме вывода звука на колонки не работает даже проверка звука. В панели "Звук", во вкладке "Воспроизведение" при нажатии ПКМ на соответствующий девайс и выборе "Проверка" индикатор уровня даже не двигается. В режиме вывода звука в наушники индикатор работает, прыгает при проверке и воспроизведении музыки. Но на выходе звука вообще нет. То же самое с линейным/микрофонным входом. Они совмещены в один, но их можно переключать. В режиме "микрофона" на сигнальном проводе появляется напряжение фантомного питания электретного микрофона около 2.5 вольт. При переключении в линейный вход оно пропадает. Так и должно быть. Но панель "Звук" во вкладке "Запись" говорит, что входного сигнала нет. А он должен быть. Т.е. звуковая карта так фактически не работает. Если установить "XHCI Pre-Boot" на Disabled, то карточка признаки жизни с резистором 22к между GND и D+ не подаёт. Без этого резистора и с выключенным "XHCI Pre-Boot" получается так. Винда загружена, вставляю USB шнур. Светодиод мигнул. Дальше он мигает ещё три раза с периодом около двух секунд, и винда говорит что USB девайс не опознан. Я уже и резисторы между D+ и контроллером (то же самое с D-) менял с перемычек на 100 ом и на 22 ома, добавлял ёмкости к питанию - без толку.. И дрова уже обновлял. Надо бы, кстати, на Ubuntu попробовать.. Хотя там, скорее всего, всё будет точно так-же. Сейчас стоит Windows 10 x64 Build 10525 Уважаемые товарищи, пожалуйста, срочно помогите решить проблему...(
  4. 1. Пробовал. Камера вообще не включается после этого 2. Пробовал. Да, кстати. Проблема с перемешиванием цветов была из-за дисплея. Т.к. я его ещё не опробовал полностью не заметил этой проблемы сразу. Теперь осталась лишь проблема с цветами. Во-первых баланс белого сильно сдвинут в сторону зелёного, а во-вторых картинка какая-то 8-битная..
  5. Как? Я попытался вкинуть этот код в свой разными способами: вырезая и вставляя отдельные куски кода, но результат был одним и тем же: жуткие артефакты... Архив с фото и изменённым main.c прикрепил Desktop.zip
  6. Доброго времени суток! Подключил к STM32F407 камеру OV7670. Вроде бы работает, но с проблемой. Она заключается в том, что красный и синий цвета перепутаны, в добавок в оттенках зелёного есть артефакты Это поясняется тем, что два байта, идущих от камеры по 8-битной параллельной шине, идут не так, чтобы потом пойти нормально в дисплей, который подключён по 16-битной шине FSMC. Формат цвета: RGB565. Ссылка на проект вместе с фотографиями: http://www.ex.ua/get/349844494474/228998199 Вопрос следующий: как поменять те два байта местами чтобы на дисплее оказалась нормальная картинка?..
  7. Проблема решилась. Дело в том, что я лез туда, куда не нужно было. Вместо tcp.h я начал использовать sockets.h и всё стало работать хорошо.
  8. А в какой именно момент нужно вставлять этот фрагмент?
  9. В каком файле примерно искать?.. Можете помочь с этим? UPD: методом тыка выяснил, что перестаёт идти прерывание от ETH... Почему?....
  10. Доброго времени суток! Недавно стал владельцем Ethernet PHY модуля на базе чипа DP83848. Пытаюсь подружить его с STM32F429ZI, но проблема в том, что он не может нормально получать данные.. Т.е. если он получит 15-20 пакетов, то всё. Всякая связь с контроллером по Ethernet пропадает. Даже нет ответов на PING. Я так понимаю, объём полезных данных в TCP пакете равен 536 байт. С пакетами, у которых этот объём занят полностью, такая-же проблема. Т.е. не важно, получает ли он те 15-20 пакетов, в которых инф-и на 1 байт, либо на все 536 байт. Всё равно он повисает. Как я проверял. Я сделал на контроллере сервер, который отправляет клиенту некую строку, а принятые данные выводит в UART. Так вот, как правило после 16-го пакета (или символа, введённого через telnet) связь тут же обрывается. Отладчик показал, что контроллер не уходит в исключение, а основной поток работает дальше. Архив с проектом: http://rghost.ru/7vtTz7bYC Вот скриншот: http://s018.radikal.ru/i519/1602/53/66fd8ee63bae.png Кстати, точно такая-же беда и в режиме клиента, когда он подключается к какому-либо HTTP серверу и начинает брать данные.
  11. Т.е. это чисто аппаратный баг который никак не исправить?
  12. Всех с Наступающим! Решил сделать что-то в роде миникомпьютера на STM32F429. В основе лежит FreeRTOS. Далее в SDRAM загружается внешняя программа и для неё создаётся дополнительная задача. Грубо говоря, это будет многозадачная операционная система с внешними приложениями (как виндовые *.exe). Но 192 КБ ОЗУ микроконтроллера, мне кажется, маловато для стека такой байды, к тому же она планировалась использоваться для кеширования "сложных" функций для ускорения быстродействия, т.к. SDRAM сама по себе очень медленная рядом с флешкой STMки. Проблема в том, что если разместить стек в SDRAM, то при чтении некоторых адресов SDRAM получаются одни нули. Т.е. это происходит во время первичного чтения внешней программы для её дальнейшей обработки и запуска. Сразу, в момент записи в SDRAMку данные успешно читаются, но после этого процесса какого-то Х они "пропадают"... Так-же точно такая же проблема получается в некоторых случаях после работы с видеопамятью, которая используется LTDC для вывода на VGA монитор. Видеопамять тоже хранится в том же SDRAM чипе. Архив с проектом тут: http://rghost.ru/8lFwfQrmT Основные исходники в папке "app", задачи FreeRTOS в файле "freertos.c". В нём же прокомментированы проблемные строчки.
  13. Мне на форуме easyelectronics посоветовали взять два бинарника с разными адресами в линкере чтобы потом сделать из них один. Ну и я решил добавить в результирующий бинарник таблицу адесов, которые нужно обработать после копирования в SDRAM. Как Вы смотрите на эту идею?