Показано с 1 по 20 из 20

Тема: Вывод звука i2s в spdif через WM8804

  1. #1
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Вывод звука i2s в spdif через WM8804

    Всем добрый день. Долго читал форум, но так и не смог найти ответ на несколько вопросов (возможно, искал неправильно), связанных с клоком в SPDIF. Буду очень благодарен за помощь и совет.

    Задача выводить звук Android головного устройства (ГУ) в обход встроенного аудио процессора. Приемником сигнала является кастомный проект, разработанный на базе микроконтроллера STM32F413VG (подробнее можно почитать здесь, далее - usb2most). Плата usb2most является связующим звеном ряда аудио блоков в автомобиле и оснащена SPDIF входом. Сейчас к этому входу подключен штатный SPDIF выход магнитолы и эта связка работает без нареканий, не считая наличия встроенного в ГУ аудио процессора, который портит звук.

    Процессор получает "необработанные" данные в i2s формате. Мне удалось достать плату, которую один умелец делал для аналогичного ГУ на трансивере WM8804 от Wolfson. По замыслу автора, WM8804 работает в Hardwear Mode в режиме Slave. Сигналы в формате i2s (DATA, LRCLK и BCLK) берутся с чипа транспорта. MCLK, который нужен для SPDIF, но которого нет в транспорте создается путем умножения BCLK. Сейчас стоит умножение х3. В данном конфиге все работает, за исключением одной детали: как только аудио поток прекращается, то принимающее SPDIF сигнал плата usb2most выпадает в ошибку и начинает перезагружаться до того момента, пока аудио поток не возобновится.

    В моем понимании происходящее связано с тем, что MCLK для SPDIF создается путем умножения BCLK. Если нет аудио потока, то нет и BCLK, следовательно и MCLK = 0.

    Соответственно, нужно логику умножения заменить на генератор клока. Насколько я понял, это можно сделать, используя кварцевый генератор. И вот здесь у меня есть несколько вопросов:
    1) Какой резонансной частотой должен обладать генератор? Звуковой поток который идет по i2s это 16 бит/44,1кГц. Так понимаю, что для WM8804 при таких параметрах используют 22,5792 МГц. Это эквивалентно 512fs. Сейчас, путем умножения, как я понимаю, получается порядка 96fs. Не стоит ли использовать меньшую резонансную частоту?
    2) Нужно ли как-то синхронизировать генерируемый MCLK с BCLK?
    3) Нужно ли ставить какие-то дополнительные элементы на выход генератора или можно подключать его напрямую к WM8804?
    4) Может быть есть какие-то другие более правильные варианты генерации клока в данной конструкции, чем применение генератора?

    Сори, что много буков. Заранее благодарен за ответы!

  2. #2
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,545

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Nome Посмотреть сообщение
    Нужно ли как-то синхронизировать генерируемый MCLK с BCLK?
    Разумеется.

    Я не очень понял, STM32 получает по USB и выдает I2S, которое и идет на SPDIF-трансмиттер? Почему не брать MCLK с STM?
    Последний раз редактировалось Alex; 11.06.2023 в 19:52.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  3. #3
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Нет, не совсем так. На базе STM32 стоит ресивер SPDIF, поэтому там брать клок не получится. I2s сигнал берется с Android магнитолы.

  4. #4
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,545

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Можно умножить битклок на 8, чтобы получить 512фс, но если в паузе битлок пропадает, то пропадет и спдиф.
    Но есть и другой вопрос - почему спдиф-приемник впадает в ступор при отсутствии сигнала на входе? Обычный приемник в таком случае продолжает генерить I2S с каким-то дефолтным значением. Может ну его, спдиф-применик в STM, они там все кривые, и поставить отдельный?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  5. #5
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Я правильно понял, что spdif ресивер должен сам себе какой-то сигнал генерить на время паузы? Может быть есть какая-то документация где это прописано?

    Но тут другой еще момент: у STM ресивера проблема только с Wolfson передатчиком. Если использовать стоковый передатчик ГУ, STM ресивер прекрасно себя чувствует в паузах.

    От STM ресивера отказаться возможности нет, к сожалению. Так получилось, что это ядро большой системы и потребуется очень много переделок, чтобы его убрать.

  6. #6
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,545

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Nome Посмотреть сообщение
    Если использовать стоковый передатчик ГУ, STM ресивер прекрасно себя чувствует в паузах.
    Со стокового, спдиф тоже пропадает в паузах?

    Цитата Сообщение от Nome Посмотреть сообщение
    От STM ресивера отказаться возможности нет, к сожалению.
    Если сам STM нужен для других целей, то поставить рядом и ввести по I2S в STM нельзя?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  7. #7
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Alex Посмотреть сообщение
    Со стокового, спдиф тоже пропадает в паузах?
    Нет, со стокового все нормально. Тестировали это на нескольких ГУ
    Цитата Сообщение от Alex Посмотреть сообщение
    Если сам STM нужен для других целей, то поставить рядом и ввести по I2S в STM нельзя?
    Тоже, не вариант, к сожалению. Разработка не моя и автор фактически уже не занимается проектом.

    ---------- Сообщение добавлено 12:18 ---------- Предыдущее сообщение было 11:41 ----------

    Немного дополню. В ГУ стоит чип bu32107efv, который умеет spdif, рядом с ним визуально виден кварц на 18 МГц(если не изменяет память), но в рамках этого чипа происходит обработка сигнала софтом ГУ, который его сильно портит. Отключить обработчики возможности нет.

  8. #8
    Завсегдатай Аватар для Pest
    Регистрация
    02.07.2009
    Адрес
    Архангельск
    Возраст
    36
    Сообщений
    2,125

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Иными словами нужен SPDIF трансмиттер, который работает без подачи MCLK. Я таких не знаю, может кто подскажет, но кмк таких нет.

  9. #9
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Pest Посмотреть сообщение
    Иными словами нужен SPDIF трансмиттер, который работает без подачи MCLK
    Желательно доработать имеющийся. Насколько я знаю, все подобные платы требуют клока. Как-то же его генерят. У меня банально не хватает знаний в этой области.

  10. #10
    Завсегдатай Аватар для Pest
    Регистрация
    02.07.2009
    Адрес
    Архангельск
    Возраст
    36
    Сообщений
    2,125

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Вы пробовали на вашей андроид плате поискать MCLK? Обычно в самом CPU он есть, но не для всех устройств требуется так что может быть не распаян или не разведен. Кстати сейчас разбираюсь с некоей платой на rockchip PX3 от магнитолы платформы Microntek MTCx. В ней мастерклок выведен и не пропадает, в отличии от BCLK который пропадает без воспроспроизведения. Это все я выяснил, просто тыкаясь в плату осциллографом.

  11. #11
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

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

    В 2012 на форуме была тема (https://forum.vegalab.ru/showthread....=1#post1504790), где предлагалось синтезировать все клоки (MCLK, BCLK и LRCLK) связкой генератора и делителя. Кто-то с таким сталкивался? Рабочий вариант?

  12. #12
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,545

    По умолчанию Re: Вывод звука i2s в spdif через WM8804


    Offтопик:
    Цитата Сообщение от Nome Посмотреть сообщение
    Осциллографом, к сожалению, не располагаю
    Ммммм дасссс.



    Цитата Сообщение от Nome Посмотреть сообщение
    где предлагалось синтезировать все клоки (MCLK, BCLK и LRCLK) связкой генератора и делителя.
    Там вольфсон в слейве.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  13. #13
    Старый знакомый Аватар для Mishich
    Регистрация
    13.03.2013
    Адрес
    Орел
    Возраст
    52
    Сообщений
    630

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Nome Посмотреть сообщение
    который идет, из bu32107efv
    ну а взять MCKL, который поступает на вход на 42-ногу этого "чуда"? Или туда ничего не заходит?
    Дмитрий.

  14. #14
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Alex Посмотреть сообщение
    Ммммм дасссс.
    Так сказать, не по своей воле пришел в эту тему ) обладаю начальными навыками пайки, но не более того. Найти спеца, который может решить задачу, мне не удалось. Поэтому самому копаться приходится. Инструментарий - соответствующий.
    Цитата Сообщение от Alex Посмотреть сообщение
    Там вольфсон в слейве.
    У меня тоже. Иначе он не воспринимал бы входящий BCLK и LRCLK

    Цитата Сообщение от Mishich Посмотреть сообщение
    ну а взять MCKL, который поступает на вход на 42-ногу этого "чуда"? Или туда ничего не заходит?
    Там стоит генератор (?) на 18,432 МГц и эта частота вообще никак не соотносится с 16 бит/44,1кГц. Насколько я понимаю, этот генератор используется для генерации клока внутри bu32107efv. Вовне он уходит только с сигналами. Тем же SPDIF, т.е. его надо разбирать. Подстройка под стандартные 256fS/384fS/512fS происходит внутри чипа. Т.е. опять же не вариант.

  15. #15
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    37,545

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Nome Посмотреть сообщение
    У меня тоже. Иначе он не воспринимал бы входящий BCLK и LRCLK
    Да, но он и MCLK от DIR-ки получает, которая и делает с другого спдифа.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  16. #16
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Alex Посмотреть сообщение
    Да, но он и MCLK от DIR-ки получает, которая и делает с другого спдифа.
    Да, это я как-то не учел. Выходит, что тоже нерабочий вариант. Жаль, спасибо.

  17. #17
    Завсегдатай Аватар для Pest
    Регистрация
    02.07.2009
    Адрес
    Архангельск
    Возраст
    36
    Сообщений
    2,125

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Цитата Сообщение от Nome Посмотреть сообщение
    Там стоит генератор (?) на 18,432 МГц и эта частота вообще никак не соотносится с 16 бит/44,1кГц. Насколько я понимаю, этот генератор используется для генерации клока внутри bu32107efv. Вовне он уходит только с сигналами. Тем же SPDIF, т.е. его надо разбирать. Подстройка под стандартные 256fS/384fS/512fS происходит внутри чипа. Т.е. опять же не вариант.
    В BD32107 на сколько я понял на входе есть ASRC, значит скорее всего внутренняя частота дискретизации там своя, не зависимо от поступающей.
    Кстати с помощью чипа ASRC, если не ошибаюсь, можно решить проблему приёма I2S без MCLK, в таком случае выходные клоки будут вырабатываться локальным для этого ASRC генератором так же не зависимо от поступающих, в т.ч. и нужный вам MCLK возьмете прямо от этого кварцевого генератора и он будет чистый. Нормальный ASRC в рамках автомобильной системы вряд ли на звук как-то может повлиять, а учитывая то что изначальные тактовые сигналы извлекаются из огромного андроид проца и гарантированно им зашумлены, а так же проходят через умножитель, что вероятно тоже не полезно, то может даже стать лучше.
    Кстати где-то у Bruno Putzeys читал, что он ставил в систему с ASRC мастерклок не кратный ни одной частотной сетке. На сколько понял чтобы не было разницы по искажениям в обоих частотных сетках и еще по каким-то причинам (могу приврать, очень давно читал).


    Offтопик:
    Цитата Сообщение от Nome Посмотреть сообщение
    Осциллографом, к сожалению, не располагаю. Единственный вариант по получению клока с андроид платы вижу в разборе spdif сигнала, который идет, из bu32107efv. Правда, не ясно, будет ли он синхронизирован с BCLK, который в транспорте.
    Приобретите хотя бы один из самых дешевых китайских, иначе это почти как без глаз.

  18. #18
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Кажется я нашел то что нужно: ASRC на базе CS8421 (https://aliexpress.ru/item/100500280...5b404aa6NfXyCA). На необходимость ASRC также ссылается Михаил Послыхалин в своих статьях https://halin-kvd.blogspot.com/2014/...7-kmm-357.html и https://halin-kvd.blogspot.com/2018/11/blog-post.html. Как только попробую, отпишусь.

  19. #19
    Новичок
    Автор темы
    Аватар для Nome
    Регистрация
    11.06.2023
    Сообщений
    10

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    По итогу все заработало. ASRC плата действительно решила проблему. Спасибо Pest за подсказку. Были сложности с настройкой CS8421, но и их решил.

  20. #20
    Новичок Аватар для vartan
    Регистрация
    11.05.2010
    Сообщений
    14

    По умолчанию Re: Вывод звука i2s в spdif через WM8804

    Добрый вечер, раскажите пожалуйста как решили вашу проблему? Я тоже сделал как и вы на этих китайских платах. Вроде работает звук есть, но присутствует треск когда есть сигнал. Если кто знает поскажите, пожалуйста, в чем причина и что делать?
    Поменял пару резисторов, чтобы выходной сигнал cs8421 был 16 бит 48 кГц, но все равно треск присутствует. Заметил, что когдо прикасаюсь пинцетом к выходу lrcl, треск становится реже но громче.
    Последний раз редактировалось vartan; 23.09.2024 в 09:21.

Социальные закладки

Социальные закладки

Ваши права

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