Перейти к содержанию
    

stm32l476 usb audio class

Добрый день, пытаюсь реализовать usb звуковую аудио карту на stm32l476 с использованием встроенного DAC. Само usb устройство определяется в системе без ошибок(для его реализации использовал CubeMX). Судя по документу UM1734 нужно использовать i2s dac с использованием dma, но я хочу использовать встроенный ЦАП, да и вообще в ней скудновато описана работа аудио класса. Возможно кто-то такое уже реализовывал, либо может подсказать куда копать. Я знаю, что звук через встроенный ЦАП будет не очень, мне качество звука не главное. Использую плату Nucleo-64(stm32l476), среда разработки STM32CubeIDE. Заранее спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

47 минут назад, l_fin_l сказал:

может подсказать куда копать.

Копайте user manual.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 minutes ago, l_fin_l said:

 Судя по документу UM1734 нужно использовать i2s dac с использованием dma, но я хочу использовать встроенный ЦАП, 

Найдите в коде где идет вывод в I2S и подмените его выводом в DAC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, dimka76 сказал:

Найдите в коде где идет вывод в I2S и подмените его выводом в DAC.

Пробовал, подключал осциллограф к ножке ЦАПа - тишина

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, l_fin_l said:

Пробовал, подключал осциллограф к ножке ЦАПа - тишина

Значит ЦАП не так настроили или не так в него данные отсылате. Читайте руководство на МК и ищите ошибку в коде.

Или у вас HOST в эту звуковую карту вообще ничего не отправляет, а отправляет в другую звуковую карту.

Запустите проект в исходном варианте с I2S и посмотрите осциллографом есть ли сигналы на выходе I2S/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, dimka76 сказал:

Запустите проект в исходном варианте с I2S и посмотрите осциллографом есть ли сигналы на выходе I2S/

Точно, что-то сразу до меня дошло так попробовать, спасибо за совет. Буду пробовать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, l_fin_l said:

Пробовал, подключал осциллограф к ножке ЦАПа - тишина

У Чип и Дип есть свой проект для USB Audio с открытыми исходниками.

Попробуйте его.

https://www.chipdip.ru/product0/9000569733

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, dimka76 сказал:

У Чип и Дип есть свой проект для USB Audio с открытыми исходниками.

Попробуйте его.

https://www.chipdip.ru/product0/9000569733

Спасибо, посмотрю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на МК отсутствует i2s шина. Эта шина используется для передачи данных между аудиоустройствами. А мне интересен именно ЦАП подключенный через ДМА. Возможно у кого-то есть более-менее понятное описание usb audio classs. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разделите задачу...
Для начала на целевом устройстве получите работающий ЦАП обслуженный по DMA (Например пилу выдайте).
Следующим этапом перейдете к USB AUDIO.

Тут вас ждет одна особенность... DMA STM32F446-го из демоплаты имеет dual buffer режим, весьма удобный для безшумной склейки отдельных буферов аудиоданных. 
У L4 серии такого нет, придется тратить производительность на пересылку половинок буфера работающего в циклическом режиме DMA.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за рекомендации.

5 минут назад, GenaSPB сказал:

Для начала на целевом устройстве получите работающий ЦАП обслуженный по DMA (Например пилу выдайте).

ЦАП по таймеру я реализовал - работает. USB audio class заработал почти сразу из коробки(CubeMX), за исключением пары правок. Как я понял из документации данные передаются в AUDIO_AudioCmd_FS, далее в зависимости от состояния(AUDIO_CMD_START, AUDIO_CMD_PLAY) передаются данные в нужную функцию. Т.к. у меня встроенный ЦАП настроен заранее, то состояние AUDIO_CMD_START меня не интересует(опять же это мои догадки), меня интересует только AUDIO_CMD_PLAY в которой я и буду передавать данные в ЦАП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не будете реализовывать канал обратной связи для подстройки скорости - то Вам надо обеспечить resample приходящего от компьютера потока к скорости работающего от вашего локального тактового генератора ЦАП.
Про AUDIO API того что сделано в кубе не подскажу, я от куба только инициализацию и обработчики стандартных состояний енумерации оставил.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую.

Удалось победить?

То же пробую usb audio  intDAC stm32h743

Выводит но с искажениями, которые не могу победить.

Вот проект, может подскажите где косяк?

H7USBaudio.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...