Usb audio device настройка

Обновлено: 06.07.2024

Многие используют USB-гарнитуры, но у некоторых пользователей возникают проблемы с USB-гарнитурами. Если ваша USB-гарнитура доставляет вам проблемы сегодня, мы покажем вам, как устранить эти проблемы в Windows 10.

Пользователи сообщают об искаженном звуке на своих USB-гарнитурах, и замена USB-гарнитуры точно такой же моделью не решает проблему. Так что, если проблема не в гарнитуре USB, что вы можете сделать, чтобы решить эту проблему?

USB-гарнитуры хороши, но иногда вы можете столкнуться с определенными проблемами с ними. Говоря о проблемах гарнитуры USB, вот некоторые проблемы, о которых сообщили пользователи:

Решение 1. Отключите гарнитуру во время загрузки Windows 10

Пользователи сообщают, что могут быть некоторые конфликты с вашей USB-гарнитурой и другими USB-устройствами, и для решения этой проблемы необходимо отключить USB-гарнитуру во время загрузки системы. После запуска Windows 10 вы можете подключить USB-гарнитуру, и она должна работать без проблем.

Решение 2. Обновите BIOS и перезагрузите CMOS

Решение 3. Не используйте гарнитуру в качестве устройства воспроизведения по умолчанию

Это решение относится к гарнитурам, которые поставляются со встроенной звуковой картой и подключаются к USB-порту и аудиопорту на вашем компьютере. Проблема с этими гарнитурами заключается в том, что во время игры вы слышите звук только из одного динамика, и для его устранения необходимо сделать следующее.

Делая это, вы заставите звуковую карту обрабатывать ваш звук вместо карты, встроенной в вашу USB-гарнитуру.

Иногда сторонние приложения могут устанавливать свои собственные драйверы, что может привести к проблемам с USB-гарнитурой. Для решения проблемы рекомендуется удалить проблемное приложение с вашего ПК.

Некоторые пользователи сообщали, что эта проблема возникла из-за программного обеспечения Etron , и для ее устранения необходимо удалить программное обеспечение. Вы можете удалить приложение с помощью приложения «Настройки», но этот метод не всегда эффективен, поскольку он может оставить некоторые оставшиеся файлы, которые могут помешать работе вашей USB-гарнитуры.

Чтобы решить эту проблему, рекомендуется использовать программу удаления. Это специальное приложение, которое может удалить любое приложение с вашего компьютера вместе со всеми его файлами и записями реестра. Используя приложение удаления, вы удалите все файлы и записи реестра, связанные с проблемным приложением, и предотвратите возникновение проблем в будущем.

На рынке есть много замечательных приложений для удаления, но IOBit Uninstaller является одним из самых простых в использовании, поэтому обязательно попробуйте его. После удаления проблемного приложения проблема должна быть окончательно решена.

По словам пользователей, иногда проблемы с USB-гарнитурой могут возникать из-за ваших драйверов USB. Несколько пользователей сообщили о проблемах с драйверами USB 3, но после их переустановки проблема была навсегда решена. Для этого вам просто нужно выполнить следующие шаги:

  1. Нажмите Windows Key + X , чтобы открыть меню Win + X. Теперь выберите Диспетчер устройств из списка.
  2. Когда откроется Диспетчер устройств , найдите драйвер USB 3, щелкните его правой кнопкой мыши и выберите Удалить устройство .
  3. Откроется диалоговое окно подтверждения. Выберите в меню Удалить .
  4. После удаления драйвера нажмите значок Сканировать на предмет изменений оборудования .

Теперь Windows выполнит поиск драйвера по умолчанию и установит его. После того, как драйвер USB по умолчанию установлен, убедитесь, что проблема решена. Имейте в виду, что это решение работает как с драйверами USB 2, так и с драйверами USB 3, поэтому вы можете использовать его независимо от используемого вами типа USB.

Драйверы по умолчанию должны работать без проблем, но иногда лучше использовать выделенный драйвер. Вы можете скачать соответствующие драйверы с сайта производителя вашей материнской платы. Просто зайдите на сайт, введите модель вашей материнской платы и загрузите последние версии драйверов для нее.

Если поиск драйверов вручную кажется вам немного сложным, есть такие инструменты, как TweakBit Driver Updater , которые могут загрузить необходимые драйверы одним щелчком мыши.


  1. Откройте Диспетчер устройств .
  2. Найдите гарнитуру USB, щелкните ее правой кнопкой мыши и выберите в меню Отключить устройство .
  3. Теперь щелкните правой кнопкой мыши гарнитуру USB и выберите Включить устройство .

После этого USB-гарнитура снова начнет работать. Помните, что это всего лишь обходной путь, поэтому вам придется повторить его, если проблема появится снова.

Решение 7. Отключите гарнитуру и выключите программное обеспечение Razer Synapse.

Иногда проблемы с гарнитурой USB могут быть вызваны такими программами, как Razer Synapse. По словам пользователей, им удалось решить проблему, просто отключив гарнитуру и закрыв Razer Synapse. После этого вам просто нужно снова подключить гарнитуру и перезапустить программное обеспечение Razer Synapse.

Помните, что это всего лишь обходной путь, поэтому вам придется повторять его всякий раз, когда возникает проблема.

По словам пользователей, проблемы с гарнитурой USB могут возникать из-за настроек конфиденциальности. Пользователи сообщали, что приложениям не разрешалось использовать микрофон на USB-гарнитуре из-за определенных настроек. Однако вы можете решить эту проблему, выполнив следующие действия:

  1. Откройте Настройки приложения . Вы можете сделать это быстро, нажав Windows Key + I .
  2. Перейдите в раздел Конфиденциальность .
  3. На левой панели выберите Микрофон . На правой панели убедитесь, что Разрешить приложениям доступ к вашему микрофону . Кроме того, не забудьте проверить приведенный ниже список и разрешить отдельным приложениям доступ к вашему микрофону.

После включения микрофона проблема с USB-гарнитурой должна быть полностью решена.

Несколько пользователей сообщили о проблемах с USB-гарнитурой после покупки новой гарнитуры. По их словам, проблема была вызвана драйверами от старой USB-гарнитуры. Чтобы устранить проблему, рекомендуется удалить более старый драйвер, поскольку он может помешать работе новой гарнитуры. Для этого просто выполните следующие действия:


  1. Откройте Диспетчер устройств .
  2. Теперь перейдите в Вид> Показать скрытые устройства .
  3. Найдите свой старый драйвер USB-гарнитуры, щелкните его правой кнопкой мыши и выберите Удалить устройство .
  4. Если доступно, установите флажок Удалить программное обеспечение драйвера для этого устройства и нажмите Удалить .

После удаления старого драйвера проблема должна быть полностью решена, и вы сможете без проблем использовать USB-гарнитуру.

Если ни одно из этих решений не помогло вам, обратитесь к нашей статье о проблемах со звуком в Windows 10, возможно, это будет полезно.

Однако мы надеемся, что эта статья помогла вам решить проблему с USB-гарнитурой в Windows 10. Если у вас есть какие-либо комментарии или вопросы, просто обратитесь к комментариям ниже.


Во второй части публикации о составном устройстве USB я расскажу о том, как работает звуковое устройство USB, которое STM32CubeMX генерирует по умолчанию «из коробки», а также как подготовить проект и настроить параметры звукового устройства перед запуском генерации кода.

В первой части публикации были описаны предпосылки запуска проекта по разработке составного устройства USB и приведены общие сведения о назначении и составе устройства.

Ссылка на первую часть публикации:
Составное устройство USB на STM32. Часть 1: Предпосылки

Проект был создан в STM32CubeIDE из шаблона для платы NUCLEO-F446ZE. Особенностью платы является наличие двух разъёмов USB, к одному из которых подключены встроенный в плату ST-Link V2.1 и виртуальный COM-порт с подключенным к нему UART3. Через этот разъём USB может также осуществляться электропитание платы.

Пользовательское устройство USB Full Speed использует второй разъём USB. Для корректной работы порта USB в составе проекта опцию «Activate_VBUS» нужно отключить.


При настройке конфигурации порта была обнаружена интересная особенность: при включении опции «Low power» микроконтроллер терял связь с интерфейсом SWD. К счастью, встроенный в плату ST-Link поддерживает режим «Connect under reset», что позволяет выводить MCU из состояния «кирпича» без применения дополнительных аппаратных средств.

Приступим к созданию двухканального дуплексного звукового устройства USB, для чего переходим в раздел «Middleware» и выбираем IP «Audio Device Class». Задаём максимальное количество интерфейсов равное трём. Частоту дискретизации устанавливаем равной 48000 samples/s.


Сохраняем проект. Запускаем генерацию кода. Пытаемся разобраться, что получилось в результате.

Хочу отметить, что использование STM32CubeMX и библиотеки HAL позволяет прятать «под капот» большой объём кода. Для профессиональной разработки такой подход может быть и не приемлем, но для любительского проекта экономит много времени и сил.

Из всего проекта нас пока интересуют только файлы, расположенные в папках USB_DEVICE/App и Middlewares/ST/Class/AUDIO.

Для начала разберём, как в файле usb_device.c происходит процесс формирования и запуска устройства USB:


Сначала создаётся переменная hUsbDeviceFS. Тип USBD_HandleTypeDef объявлен в usbd_def.h.

Функция MX_USB_DEVICE_Init вызывается из main.c.

Вызовом функции USBD_Init задаются начальные значения переменной hUsbDeviceFS.

Вызовом функции USBD_RegisterClass в hUsbDeviceFS.pClass размещается указатель на созданную в usbd_audio.c переменную USBD_AUDIO, содержащую указатели на обработчики событий, относящихся к классу устройства. Тип USBD_ClassTypeDef объявлен в usbd_def.h.

Вызовом функции USBD_RegisterInterface в hUsbDeviceFS.pUserData размещается указатель на созданную в usbd_audio_if.c переменную USBD_AUDIO_fops_FS, содержащую указатели на обработчики событий, относящихся к пользовательскому интерфейсу устройства. Тип USBD_AUDIO_ItfTypeDef объявлен в usbd_audio.h.

Вызовом функции USBD_Start производится запуск устройства USB.

Дескрипторы устройств USB являются своеобразными «техническими паспортами» или «руководствами по эксплуатации», из которых хост получает всю необходимую информацию о составе устройства USB и режимах его работы.

Что именно хост получает от сгенерированного в STM32CubeMX звукового устройства, можно узнать с помощью бесплатной утилиты Thesycon USB Descriptor Dumper.

Данные из листинга становятся более понятными, если обратиться к следующим документам:

Из раздела Device Descriptor мы видим, что устройство поддерживает USB 2.0, имеет единственную конфигурацию, и что класс, подкласс и протокол устройства определяются классом, подклассом и протоколом интерфейса.

Из раздела Configuration Descriptor мы видим, что длина дескриптора конфигурации класса устройства составляет 109 байт, что в устройство входят два интерфейса, что устройство «самозапитанное» (self-powered) и не может потреблять от шины USB ток более 100 мА.

Далее идёт описание интерфейса управления (Audio Control Interface, AC), из которого мы узнаём, что структура устройства выглядит так:


Подробней об этой структуре можно прочитать в [2] на стр.15, 19 – 26.

Для связи с хостом интерфейс управления использует конечную точку 0 (EP0).

Данные дескриптора интерфейса воспроизведения (Audio Streaming Interface, AS) описаны в [2] на стр.30 – 34. Сначала идёт описание интерфейса, затем – описание используемых им конечных точек.

У интерфейса воспроизведения есть два состояния:

  • в состоянии Alternate Setting 0 интерфейс не использует ни одной конечной точки и имеет нулевую полосу пропускания;
  • в состоянии Alternate Setting 1 интерфейс использует одну конечную точку и принимает поток данных для воспроизведения по двум каналам 16-битного звука с частотой дискретизации 48 кГц.

Файлы сгенерированного в STM32CubeMX драйвера звукового устройства USB расположены в папках Middlewares/ST/Class/AUDIO и USB_DEVICE.

Функции, с помощью которых драйвер звукового устройства взаимодействует со своим оконечным оборудованием (например ЦАП или кодеком), содержатся в файле usbd_audio_if.c.

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

После первоначального заполнения циклического буфера звукового устройства драйвер формирует команду AUDIO_CMD_START и передаёт оконечному оборудованию указатель типа uint8_t* на начало буфера и число типа uint32_t, равное половине длины буфера в байтах.

В идеальном случае, когда скорость чтения данных оконечным устройством из буфера и скорость приёма данных по USB совпадают, было бы достаточно запустить оконечное оборудование на вывод данных с параметрами, переданными вместе с командой AUDIO_CMD_START, прямо из циклического буфера звукового устройства.

В реальном же мире потребуется синхронизация скорости потоков данных. В сгенерированном в STM32CubeMX звуковом устройстве это реализовано путём «подгонки» скорости вывода данных через оконечное оборудование под скорость приёма данных по USB.

Обратная связь организована через вызов оконечным оборудованием функции HalfTransfer_CallBack_FS после окончания чтения половины буфера, а затем вызов функции TransferComplete_CallBack_FS после полного окончания чтения буфера.

При запуске функции TransferComplete_CallBack_FS драйвер звукового устройства формирует команду AUDIO_CMD_PLAY и сравнивает скорости записи в буфер и чтения из буфера по положению указателей чтения и записи. Если расстояние между этими указателями меньше четверти размера буфера, оконечному оборудованию передаётся указатель типа uint8_t* на начало буфера, а также число типа uint32_t, равное уменьшенной на 4 половине длины буфера в байтах, если чтение происходит медленней записи, или увеличенной на 4 половине длины буфера в байтах, если чтение происходит быстрей.

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

Сегодня мы продолжим изучение нового интерфейса – шины I2S. И работать мы будем также, как и в прошлом уроке по I2S – с микросхемой CS43L22, установленной на плате STM32F4-DISCOVERY. Только в данном занятии мы попытаемся взять цифровой аудиопоток не из WAV-файла, а из ПК по шине USB, то есть мы попробуем из нашей платы создать звуковую карту. Звуковая карта получится, конечно, не полная, так как она будет работать только на воспроизведение (только в режиме ЦАП), но тем не менее, я думаю, работу с шиной I2S мы закрепим основательно, также коснёмся изучения другого класса USB – DEVICE Audio.

Откроем наш проект в Cube MX и произведём необходимые настройки.

Сначала выключим ненужные светодиоды, оставив только красный и зелёный.

image00

Включим саму шину I2S

image02

Ножки никакие не переопределяем. Оставим так как есть. Именно по этим ножкам и подключена микросхема Аудио ЦАП.

Отключим 6-й таймер

Включим USB_OTG_FS в режим Device_Only

image04

В USB_DEVICE в разделе Class For FS IP выберем пункт Audio Device Class

image03

Для работы лапки RESET микросхемы нам будет ещё необходимо включить на выход и настроить данную лапку порта (PD4)

image05

В разделе «Clock Configuration» включим всё на максимум

Внесем также некоторые корректировки в настройки I2S

image06

Также добавим и настроим DMA на шине I2S

image12

В USB Device увеличим частоту дискретизации

image09

Также желательно изменить дескриптор устройства, иначе если Вы уже использовали виртуальный порт, могут быть проблемы

image11

А так как управление микросхемой происходит в отличии от основного аудио-потока уже по шине I2C, то необходимо включить ещё и эту шину. Включим шину I2C1

image13

Лапку PB7 нужно будет переопределить на PB9. Я думаю, все уже умеют это делать. Сначала сбросим её, а затем переопределим

В Project -> Setting установим следующие настройки стека и кучи

image16

Сгенерируем проект для среды Keil, настроим программатор на авторезет и скомпилируем проект.

Добавим в проект файлы, предназначенные для работы со звуком, audioplay.c и audioplay.h из проекта I2S_AUDIO.

Подключим файл audioplay.c в дереве Application/User

Также добавим подключение данной нашей библиотеки в главный модуль main.h

Удалим здесь следующую строку:

Уберём полностью весь код из бесконечного цикла

/* USER CODE BEGIN 3 */

if(HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_0)==GPIO_PIN_SET)

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);

В файле audioplay.c удалим подключение ненужных библиотек

Также удалим ещё некоторые строки, связанные с использованием удалённых библиотек

static uint32_t WaveDataLength = 0;

extern FIL WavFile;

extern ApplicationTypeDef Appli_state;

extern WAVE_FormatTypeDef *waveformat;

/*Get Data from USB Flash Disk*/

Удалим ещё кое-какие ненужные объявления из файла audioplay.c

/* Position in the audio play buffer */

__IO BUFFER_StateTypeDef buffer_offset = BUFFER_OFFSET_NONE;

/* Defines for the Audio playing process */

/* Variables used in normal mode to manage audio file during DMA transfer */

uint32_t AudioTotalSize = 0xFFFF; /* This variable holds the total size of the audio file */

int32_t AudioRemSize = 0xFFFF; /* This variable holds the remaining data in audio file */

uint16_t *CurrentPos ; /* This variable holds the current position of audio pointer */

__IO uint32_t PauseResumeStatus = IDLE_STATUS;

static uint32_t WaveDataLength = 0;

uint32_t dur; //переменная для оставшегося времени воспроизведения файла

Функции AudioPlay_Init и AudioPlay_Start удалим со все содержимым

void AudioPlay_Init(uint32_t AudioFreq)

__IO uint8_t volume=70;

if(AudioOut_Init(OUTPUT_DEVICE_AUTO, volume, samplerate)!=0)

void AudioPlay_Start(uint32_t AudioFreq)

Также удалим содержимое функций-обработчиков событий и слегка их переименуем

void AudioPlay_HalfTransfer_Call B ack(void)

void AudioPlay_Transfer Complete _Call B ack(void)

Переименуем функцию также в файле audioplay.h в объявлении её прототипа

void AudioPlay_HalfTransfer_Call B ack(void);

void AudioPlay_Transfer Complete _Call B ack(void);

Также подключим в этом файле файл usbd_audio_if.h

Удалим из этого файла объявление функции

void AudioPlay_Start(uint32_t AudioFreq);

А объявление функции AudioPlay_Init откорректируем в объявление другой функции

uint8_t AudioOut_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);

Также удалим все объявления переменных и структур кроме SPI3, а вместо них добавим другие, взяв их из си-файла

/* Codec output DEVICE */

/* Audio status definition */

uint8_t AudioOut_Init(uint16_t OutputDevice, uint8_t Volume, uint32_t AudioFreq);

Добавим ещё пару макросов

/* Codec POWER DOWN modes */

Вставим обработчики прерываний в main.c

/* USER CODE BEGIN 4 */

void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s3)

void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)

/* USER CODE END 4 */

Подключим нашу плату к ПК, и ST-Link, и USB OTG

image11

Соберём проект, прошьём контроллер и убедимся, что драйвер нашей будущей звуковой карты у нас нормально установился

image18

В файл usbd_audio_if.c подключим нашу библиотеку

/* USER CODE BEGIN INCLUDE */

/* USER CODE END INCLUDE */

В этом же файле в функции AUDIO_Init_FS вызовем инициализацию микросхемы

static int8_t AUDIO_Init_FS(uint32_t AudioFreq, uint32_t Volume, uint32_t options)

/* USER CODE BEGIN 0 */

AudioOut_Init(OUTPUT_DEVICE_AUTO, Volume, AudioFreq);

/* USER CODE END 0 */

В следующей части занятия мы напишем ещё несколько функций и подключим их в обработчики команд драйвера звуковой карты.

Звуковая карта представляет собой электронное устройство, предназначенное для обработки звука, вывода его на акустические системы или наушники и для организации записи аудио файлов. Эти компоненты, используемые в персональных компьютерах, могут быть интегрированы в материнскую плату или поставляются в виде отдельного узла. Внешние аудио карты могут устанавливаться в разъём материнской платы, для стационарных моделей, или подключаться к устройству через USB порт. Иногда компьютер не видит устройство или оно работает некорректно. Для этого нужно знать, как правильно настроить внешнюю звуковую карту.

Компьютер не идентифицирует звуковую карту

После замены операционной системы или после ремонта компьютера, может возникнуть ситуация, когда звук в колонках пропал. Нет так же выхода на разъёме наушников. Причин может быть несколько. Чаще всего требуется переустановка драйвера, но бывает вариант, когда звуковая карта отключена в настройках BIOS. Отключение звуковой карты в BIOS, связано только с интегрированными устройствами. При использовании внешней карты нужно проверить наличие управляющей программы в диспетчере устройств. Для проверки драйверов нужно последовательно нажать следующие «кнопки»:

  • Пуск
  • Компьютер
  • Компьютер правой кнопкой мыши
  • Строка «Управление»
  • Диспетчер устройств
  • Звуковые устройства

На вкладке звуковых устройств будет указан тип акустической системы и установленный драйвер, например: Philips SPZ 2500 и Realtek High Definition Audio. Если слева от наименования продукта имеется жёлтый треугольник с восклицательным знаком внутри, это означает, что проблема или во внешнем звуковом устройстве или в драйверах, которые требуют обновления.

Перед установкой новых компонентов необходимо обязательно удалить старые драйверы. Для этого правой кнопкой мыши кликнуть по нужной строке и выбрать пункт «Удалить». После этого загрузить новый драйвер с сайта производителя или с диска. После переустановки операционной системы, интегрированная аудио карта может оказаться в выключенном состоянии. Включить её можно только через базовую систему ввода-вывода (BIOS). Независимо от производителя материнской платы вход в BIOS осуществляется быстрым и многократным нажатием одной из клавиш. Чаще всего используются клавиши F1, F2, F10, Del+F2 или Esc. В зависимости от системы на главной странице нужно выбрать и открыть раздел «Advanced» или «Integrated Peripherals». Далее найти строку «Onbord Audio Device» или «Onbord HD Audio» и поменять «Disabled» на «Enabled»

Настройка микрофона на звуковой карте

Прежде чем настраивать микрофон его нужно подключить, иначе устройство отображаться не будет. Для этого микрофонный штекер вставляется в гнездо розового цвета на звуковом контроллере. Затем нужно открыть «Диспетчер звука Realtek HD». Это можно сделать через панель управления, открыв строку с соответствующим значком, или нажать на символ цветного динамика в панели уведомлений.

Далее в основном окне нужно ползунковыми регуляторами выставить усиление микрофона и уровень записи. Усиление не стоит делать свыше +20.0 dB, так как могут возникнуть искажения. Желательно включить систему шумоподавления, поставив галочки напротив «Подавление шума» и «Подавление эхо». Можно сделать пробную запись и по результатам прослушивания подкорректировать усиление и уровень. Настройка внешней звуковой карты возможна только при подключённых устройствах и установленных драйверах.

Где настройки звуковой карты

Часто у неопытных пользователей возникает вопрос, как настроить купленную звуковую карту. Все операции по настройке выполняются в диспетчере звука. У каждой аудио платы имеются различные разъёмы для подключения внешних устройств. Они отличаются по цвету и конструкции. Цветовая маркировка гнёзд следующая:

  • Розовый – микрофонный вход
  • Голубой – линейный выход
  • Зелёный – акустические системы или наушники.

Кроме того на современных аудио платах имеются коаксиальные разъёмы, оптический выход и HDMI интерфейс. После подключения всех внешних устройств они будут видны при открытии диспетчера звука. Настройка выходов звуковой карты, как и настройки, находятся на главной странице диспетчера. Там есть пункт конфигурация динамиков, где можно выбрать стереофоническое или квадрафоническое звучание. Там же указаны подключенные к звуковой карте внешние устройства. Ползунками выставляется общий уровень звука и баланс между правым и левым каналами. Открыв вкладку «Звуковой эффект» можно выбрать любой тип окружающей обстановки от «Жилая комната» до «Канализационная труба». В списке имеется 24 доступных варианта. Для получения яркого и насыщенного звукового сопровождения, с помощью эквалайзера выбирается один из 14 тембров.

Читайте также: