Например TDA7294

Форум РадиоКот • Просмотр темы - stm32 аудиовывод, шум
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт янв 02, 2026 02:09:19

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 13:14:34 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Всем привет :) Решил вывести аудио на динамик, конкретнее WAV формат. Хочу использовать ШИМ. С выводом в целом все понятно, но есть вопрос. Как я понял на stm32 глубину звучания больше 8 бит не сделать. При глубине 16 бит аудио файл звучит чудесно. Когда я его конвертирую в 8 бит, то появляется шум. При воспроизведении на компе слышно потрескивание а-ля как будто на аудиозапись накладывается белый шум. Можно ли как-нибудь избавиться от этого или при воспроизведении тоже будет треск слышен? Пробовал использовать шумоподавление и трескоподавление в программе sound forge pro. Ваще не помогает. Мб есть какие-нибудь рабочие схемотехнические решения? Трещащий динамик ваще не тру


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 13:59:28 
Друг Кота
Аватар пользователя

Карма: 17
Рейтинг сообщений: 467
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Сообщений: 5587
Откуда: Воронеж
Рейтинг сообщения: 0
Если шум в аудиофайле, то никак. 8 бит проигрывал через ЦАП, качество приемлемое. Но и исходный файл звучал удовлетворительно.

_________________
"Привет!" - соврал он.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 14:09:10 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Вот список
Спойлер01 8бит моно 16000
02 8бит стерео 11025
03 8бит моно 22050
04 8бит стерео 22050
05 8бит моно 32000
06 8бит стерео 32000
07 8бит моно 44100
08 8бит стерео 44100
неигрушки 16бит стерео 44100
ненси 16бит стерео 44100

Сами файлы
оригинал
Запись на линейный вход компа с F100RB DAC 12бит


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 14:35:05 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Спасибо) Значит будет подпукивать динамик. И таааааак сойдет XD


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 18:19:30 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Как я понял на stm32 глубину звучания больше 8 бит не сделать.

Кто вам сказал такую глупость? Таймеры в stm32 имеют разрядность 16 бит, значит и ШИМ можете генерировать любой разрядности от 1 до 16 бит. Не увидел, что у вас за камень, но допустим, f103. Тактовая частота до 72 МГц. При частоте звука 44 кГц получаем модуль счета 1636. Если округлить, получим 1024, то есть 10 бит. При этом никто не заставляет вас брать именно 44 кГц, тогда можно еще поднять разрешение.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Чт апр 07, 2022 21:21:52 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 1
Существует способ получения 16 бит с помощью двух каналов 8 бит одного таймера.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Пт апр 08, 2022 08:38:20 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Кто вам сказал такую глупость? Таймеры в stm32 имеют разрядность 16 бит, значит и ШИМ можете генерировать любой разрядности от 1 до 16 бит. Не увидел, что у вас за камень, но допустим, f103. Тактовая частота до 72 МГц. При частоте звука 44 кГц получаем модуль счета 1636. Если округлить, получим 1024, то есть 10 бит. При этом никто не заставляет вас брать именно 44 кГц, тогда можно еще поднять разрешение.

Насколько понял из 16 бит берем старшие 10, а оставшиеся заполняем нулями. Отразится ли это на качестве звука? 44кГц самая ходовая, 8 не хотелось бы брать :) Про два канала таймера интересно звучит. Спасибо, подумаю над этим)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Пт апр 08, 2022 09:57:04 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Cheeseman писал(а):
Насколько понял из 16 бит берем старшие 10,
Берем 16 бит и сдвигаем вправо на 6 бит, получим 10 бит.
Cheeseman писал(а):
Отразится ли это на качестве звука?
ШИМ всегда отразится на качестве звука.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Пт апр 08, 2022 12:05:10 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Любая обработка отразится на качестве звука. Просто ШИМ (и последующее усиление класса D) наиболее простое и экономичное. А при хорошем выходном фильтре разницу по сравнению с "честным" ЦАПом вы не заметите. Хотя на 44 кГц даже без фильтра писка слышно не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Пт апр 08, 2022 14:27:18 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 188
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1665
Рейтинг сообщения: 0
Как я понял на stm32 глубину звучания больше 8 бит не сделать.
Что такое "глубина звучания"? И почему "не сделать"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Сб апр 09, 2022 09:56:28 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Что такое "глубина звучания"? И почему "не сделать"?

Лови ссылку. Всё подробно расписано. http://avr-start.ru/?p=1747 .
Не сделать. т.к. если возьмем частоту тактирования 72МГц и частоту дискретизации 8кГц, то получим счет до 9000, что соответствует 14 битам. для 16 бит счет же должен быть равным 65535. Но выше предложили пару способов не сильно терять в качестве звука. На днях сделаю программку и напишу что как получилось и слышны ли шумы


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Сб апр 09, 2022 10:19:21 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 14
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 202
Рейтинг сообщения: 0
Cheeseman писал(а):
Решил вывести аудио на динамик

Назовите плиз полное название чипа.
Я не верю что там нет DAC контактов.

_________________
sRtoS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Сб апр 09, 2022 10:26:26 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 48
Рейтинг сообщения: 0
Есть канеш. Просто прочитал, что пофиг на чем делать на ЦАП или ШИМе. ЦАП тоже смотрел. Там реистр тоже на 12 бит в который данные пихаем
DAC->DHR12R1 = data;
Может и через DAC сделаю. Проблема была в том, что шумы слышал, но сейчас +- имею представление как сделать лучше качество :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Сб апр 09, 2022 18:46:16 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Cheeseman писал(а):
Не сделать. т.к. если возьмем частоту тактирования 72МГц и частоту дискретизации 8кГц, то получим счет до 9000, что соответствует 14 битам. для 16 бит счет же должен быть равным 65535.
Возьмем частоту тактирования 72МГц, пред делитель на 7, глубина ШИМ 8 Бит, частота дискретизации получается 40,178кГц.
MSB 8 бит грузишь в один канал таймера, LSB 8 бит грузишь в другой канал таймера, на выходе каналов таймера делитель из двух резисторов, результат DAC ШИМ 16 бит.

Не верите? Проверьте.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Ср апр 13, 2022 17:10:45 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 188
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1665
Рейтинг сообщения: 0
Не сделать. т.к. если возьмем частоту тактирования 72МГц и частоту дискретизации 8кГц, то получим счет до 9000, что соответствует 14 битам. для 16 бит счет же должен быть равным 65535.
И что??? :dont_know:
Как из этого следует что "на stm32 глубину звучания больше 8 бит не сделать"? Что именно мешает? Ведь 9000 - это намного! больше чем 8 бит. Если что.

Добавлено after 1 minute 9 seconds:
Назовите плиз полное название чипа.
Я не верю что там нет DAC контактов.
Автор хочет на ШИМ. Причём тут ЦАП? :dont_know:

Добавлено after 7 minutes 10 seconds:
MSB 8 бит грузишь в один канал таймера, LSB 8 бит грузишь в другой канал таймера, на выходе каналов таймера делитель из двух резисторов, результат DAC ШИМ 16 бит.
Чем такой комбайн ваять, лучше сделать интерполяцию входного потока сэмплов на более высокую частоту сэмплирования ШИМ. Фиксированную частоту. Единую для всех форматов и частот входных WAV. Чтобы для каждой возможной частоты WAV не надо было отдельный код писать.
Так будет гораздо проще, а результат - не хуже.

Хотя конечно если уж хочется совсем супер-пупер качества, и возможны высокие разрядности входных WAV + с высокими частотами дискретизации, то можно сделать и так, как Вы предлагаете. Но интерполяция на единую частоту от всех возможных входных частот WAV всё-же - очень полезна. Она позволит не прибивать гвоздями частоту МК к требуемой конкретным форматом WAV.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Ср апр 13, 2022 18:17:55 
Потрогал лапой паяльник
Аватар пользователя

Карма: -6
Рейтинг сообщений: -2
Зарегистрирован: Вс апр 03, 2022 07:01:29
Сообщений: 362
Рейтинг сообщения: 0
Взяв STM-ку с I2S интерфейсом (не путать с I2C!) или с SAI и поставив внешний аудиокодек, избавимся от всех шумов и получим труъ-24-битный звук :) При условии некосячной разводки.
А коль ШИМом пытаетесь получить высокие показатели битности и частоты дискретизации, то не стоит и мучиться, не выйдет. Лучше попробуйте хорошенько отфильтровать высокочастотные составляющие ШИМа. Ну и лучше конечно же использовать встроенный DAC, при одинаковых параметрах битности/частоты он даст более лучший звук с меньшими затратами ресурсов.

Цитата:
Когда я его конвертирую в 8 бит, то появляется шум.

Да, так и будет, это нормально. Почитайте про шумы квантования и прочие "прелести" дискретизованного сигнала.
Посему, 8 бит - это речевое применение для систем оповещения и тому подобных "говорилок". Частота дискретизации при этом составляет 8 кГц или 11 кГц.
Ни на какую "музыку" тут надеяться не следует, особенно если хотите "без шумов и тресков". Для музыки - внешний аудиокодек типа AC'97 или WM8994 через интерфейс SAI или I2S.

А при ШИМ схемотехнически нужно отфильтровывать высокочастотные импульсы, лежащие выше половины частоты дискретизации. Причем, хорошо так отфильтровывать, фильтром 2-го порядка, поскольку при Fs = 8 кГц это всё попадает в звуковой слышимый диапазон.
Кстати, именно по этой причине в супер-пупер аудио стараются задрать частоту дискретизации до 192 кГц и выше - чтобы уменьшить порядок фильтров и уменьшить фазовые искажения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Ср апр 13, 2022 20:48:22 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
НовыйДень писал(а):
поскольку при Fs = 8 кГц это всё попадает в звуковой слышимый диапазон.
Не попадет.
jcxz, имеет ввиду запустить ШИМ на более высокой частоте, сколько это возможно, к примеру 72МГц ШИМ 8 бит частота получается 281,250кГц, и вот в него уже трамбовать поток с нужной частотой дискретизации.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Ср апр 13, 2022 21:36:15 
Потрогал лапой паяльник
Аватар пользователя

Карма: -6
Рейтинг сообщений: -2
Зарегистрирован: Вс апр 03, 2022 07:01:29
Сообщений: 362
Рейтинг сообщения: 0
В этом нет практического смысла, в задирании настолько высоко Fs. Всё равно исходные 8 бит разрядности всю эту вашу музыку уконтрапупят вхлам. Вы еще попробуйте с такой скоростью готовить и отправлять данные то. Да и частота передискретизации должна быть кратной исходной частоте, чтобы не получить еще больше мусора и не перегрузить вычислениями.
Вообще, вся эта затея не стоит смысла в плане получения вменяемой "музыки" из-за некратных частот передискретизации и слишком низкой разрядности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Ср апр 13, 2022 21:50:30 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
НовыйДень писал(а):
и слишком низкой разрядности.
FM-модулятор в плане звучания музыки так же ни чего не стоит, хотя те же 8 бит.
НовыйДень писал(а):
Да и частота передискретизации должна быть кратной исходной частоте,
Здесь я пожалуй соглашусь, будет некая ошибка, но вот на сколько она будет проявляться на слух ...
НовыйДень писал(а):
не перегрузить вычислениями
Какими вычислениями?, тупое копирование из точки А в точку Б с помощью DMA.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 аудиовывод, шум
СообщениеДобавлено: Пт апр 15, 2022 18:34:11 
Говорящий с текстолитом

Карма: -7
Рейтинг сообщений: 188
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1665
Рейтинг сообщения: 0
В этом нет практического смысла, в задирании настолько высоко Fs.
Чем выше - тем проще фильтровать. И качественнее.
Вы еще попробуйте с такой скоростью готовить и отправлять данные то.
А что в этом сложного? Не на такой, но на 98кГц у меня вполне нормально работает. Да и выше - не проблема поднять.
Да и частота передискретизации должна быть кратной исходной частоте, чтобы не получить еще больше мусора и не перегрузить вычислениями.
Не должна. А перегрузить - это только если руки кривые. На такой высокой частоте дискретизации достаточно простейшей кусочно-линейной интерполяции.
Вообще, вся эта затея не стоит смысла в плане получения вменяемой "музыки" из-за некратных частот передискретизации и слишком низкой разрядности.
Открою вам страшную тайну: У реал-тайм потоков передискретизация почти всегда некратная. Так уж устроена природа. 8)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y