Страница 1 из 2 12 Последняя
Показано с 1 по 20 из 33

Тема: I2S теория + STM32 с I2S практика.

  1. #1
    Зарегистрировался
    Автор темы

    Регистрация
    22.02.2023
    Сообщений
    4

    По умолчанию I2S теория + STM32 с I2S практика.

    Занялся темой USB -> STM32-> I2S. Много чего прочитал, в частности и на этом форуме, во многом разобрался, но вопросы остались.

    Первый это частота шины I2S, из каких соображений выбирается? Пишут так Fs*CountBit* NumberChannels. У мня не получается, если брать максимальное количество бит 32 и максимальное, условно, количество каналов 4, то получается коэффициент 128, а у меня правильно воспроизводится с коэффициентом 256. Это первое что мне не удалось понять, коэффициентов этих много, а какой для чего не понимаю.

    Второе. В STM32 через USB приходит только частота дискретизации, у меня 48 кГц и громкость 70, хотя везде и в систрее и в проигрывателе стоит 100%, числа бит нет, может компьютеры по умолчанию только 16 бит выдают, а всё что выше профессиональная аппаратура?

    Из функций файла usbd_audio_if.c не вызываются AUDIO_VolumeCtl_FS, AUDIO_MuteCtl_FS, AUDIO_GetState_FS или я их сам должен вызывать как TransferComplete_CallBack_FS и HalfTransfer_CallBack_FS? Если при воспроизведении какого-либо файла сменить воспроизводимый файл, то появляется короткой «гавканье», почему так понятно, но по каким признакам остановить воспроизведение на STM32 во время смены файла не знаю.

  2. #2
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Нужно в дескрипторе прописывать соответствующие feautures, после чего колл бэки будут вызываться
    Последний раз редактировалось maxssau; 27.02.2023 в 19:34.
    _________________
    Евгений

  3. #3
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,573

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от OlegIT Посмотреть сообщение
    Первый это частота шины I2S, из каких соображений выбирается? Пишут так Fs*CountBit* NumberChannels. У мня не получается, если брать максимальное количество бит 32 и максимальное, условно, количество каналов 4, то получается коэффициент 128, а у меня правильно воспроизводится с коэффициентом 256. Это первое что мне не удалось понять, коэффициентов этих много, а какой для чего не понимаю.
    I2S предусматривает передачу только 2-х каналов на одну шину данных (левый/правый). Смотри ДШ на любой аудио ЦАП. Обычно фрейм содержит 64 клока на период (по 32 на каждый канал).

    Цитата Сообщение от OlegIT Посмотреть сообщение
    Второе. В STM32 через USB приходит только частота дискретизации, у меня 48 кГц и громкость 70, хотя везде и в систрее и в проигрывателе стоит 100%, числа бит нет, может компьютеры по умолчанию только 16 бит выдают, а всё что выше профессиональная аппаратура?
    Кол-во бит задается в дескрипторах (Alt settings). Кроме частоты хост при запуске потока присылает номер конфигурации, к которой привязана разрядность, заданная в дескрипторах для данных альтернативных настроек.

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от OlegIT Посмотреть сообщение
    , условно, количество каналов 4,
    Если это SPI/I2S - то там только 2 канала всегда.
    Если это SAI, то для 4-х каналов она должно быть не в режиме I2S а в режиме TDM.

    (Под I2S подразумеваются все его варианты - I2S, LJ, RJ)/

    Цитата Сообщение от OlegIT Посмотреть сообщение
    может компьютеры по умолчанию только 16 бит выдают, а всё что выше профессиональная аппаратура?
    Компьютер выдаст то, что прописано в дескрипторах.
    USB я так думаю фудспил и в UAC1? Тогда 96/32 максимум (ну можно 192/16, но обычно так не делают).
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  5. #5
    Зарегистрировался
    Автор темы

    Регистрация
    22.02.2023
    Сообщений
    4

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от maxssau Посмотреть сообщение
    Нужно в дескрипторе прописывать соответствующие feautures, после чего колл бэки будут вызываться
    Туплю, не пойму где прописывать нужно, работаю в CubeIDE, пока на нём.

    Каюсь, пропустил, в настройках есть и частота и битность. И, как я понимаю, STM сообщает компьютеру что от может, какую частоту и сколько бит он может переварить.
    I2S предусматривает передачу только 2-х каналов на одну шину данных (левый/правый). Смотри ДШ на любой аудио ЦАП. Обычно фрейм содержит 64 клока на период (по 32 на каждый канал).
    Этот вопрос у меня пока в тумане. У меня дешёвый алишный I2S ЦАП без мастер клока, только для попробовать. Это именно он, ЦАП определяет частоту которую должна выдавать шина?

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от OlegIT Посмотреть сообщение
    где прописывать нужно,
    Все самому, ибо:

    Цитата Сообщение от OlegIT Посмотреть сообщение
    работаю в CubeIDE, пока на нём.
    Куб генерирует очень примитивную аппликацию дла USB Audio Class1, толком ни для чего не пригодную.
    Там, если память не изменяет, и асинхронной синхронизации с фидбеком нет, и дескриптор толко на один семплрейт и формат.



    Цитата Сообщение от OlegIT Посмотреть сообщение
    У меня дешёвый алишный I2S ЦАП без мастер клока,
    РСМ5102?

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

  7. #7
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    включение РГ и мути:

    Нажмите на изображение для увеличения. 

Название:	2.png 
Просмотров:	167 
Размер:	49.8 Кб 
ID:	431668

    обработка события изменения громкости

    Нажмите на изображение для увеличения. 

Название:	3.png 
Просмотров:	119 
Размер:	57.4 Кб 
ID:	431669

    с муте примерно так же.

    Но я хочу сказать - изучите фреймворк самостоятельно, так будет больше понимания, что и как работает. Для изучения настоятельно рекомендую взять исходники от usb super prime, версии 1.4-1.6. Они довольно просты для понимания и адаптации под себя. Проц нужен 446. Исходники содержат в себе поддержку асинхроного режима, поэтому заново переписывать ничего не придется, у меня такой транспорт + ДСП трудится уже третий год.
    _________________
    Евгений

  8. #8
    Зарегистрировался
    Автор темы

    Регистрация
    22.02.2023
    Сообщений
    4

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от Alex Посмотреть сообщение
    РСМ5102?
    Нет, у меня CJMCU-1334 UDA1334A.

    С частотой шины всё равно не понятно, может документация есть по этому вопросу, направьте.

    С Кубом всё понятно, уходить от него нужно. Думаю с CubeIDE на Keil возвращаться нужно, похоже зря перешёл.

  9. #9
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    в даташитах на цап/ацп обычно указывают возможные комбинации частот, исходя из этого нужно подбирать делители

    Нажмите на изображение для увеличения. 

Название:	2.png 
Просмотров:	139 
Размер:	111.6 Кб 
ID:	431681
    _________________
    Евгений

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от OlegIT Посмотреть сообщение
    С частотой шины всё равно не понятно,
    Что именно "непонятно"?
    Большинство микросхем ЦАПов может работать на разных частотах, в том числе и эти последние однобитники. Поскольку в 99% случаев ЦАП работает в слейве, то эту частоту физическаи определяет не он а источник, мастер, в данном случае СТМ, генерируя сигналы I2S.
    Эта-же частота (частоты) долдна быть прописаны в дескрипторе и передана компу, который и будет все гнать на этой частоте (если сможет).

    Цитата Сообщение от OlegIT Посмотреть сообщение
    Думаю с CubeIDE на Keil возвращаться
    Не могу ничего сказать, я на Кейле как сидел так сижу. Иногда на IAR приходится отвлекаться.
    А от Эклипса (а на нем тот куююбеиде) меня просто тошнит. Хватит с меня XMOS, где все на нем....
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  11. #11
    Зарегистрировался
    Автор темы

    Регистрация
    22.02.2023
    Сообщений
    4

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от Alex Посмотреть сообщение
    Что именно "непонятно"?
    maxssau привёл таблицу, в ней на мои 48 кГц аж три множителя, 256 рабочий (попробовал угадал) и два не рабочих. Как в общем случае определяется этот коэффициент?

  12. #12
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    это пример для лохматого CS4398:

    допустим рабочие частоты ЦАПа 44, 48, 88 и 96 кГц. Значит в таблице выбирается Single Speed и Double Speed. Далее выбираются совпадающие частоты при данных режимах: 11.2896, 16.9344, 22.5792 (для 48кГц всё тоже самое), 33.8688 МГц уже не подходит, значит можно выбрать любую из подходящих частот. Наиболее ходовые генераторы на 256 или 512 fs. Допустим под рукой оказалась пара 11.2896МГц и 12.288МГц. Значит предделитель для SAI нужно выбирать 256fs для частот 44/48 кГц и 128fs для 88/96кГц. Исходя из этого нужно обработать событие смены частот и выставить нужный делитель в регистре CR1 рабочего SAI.
    _________________
    Евгений

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    То табличка на ЦАП а не на порт проца.
    Семплрейт там - в зависимости от частоты MCLK, многие ЦАПы вобще умеют это автоматом, а UDA1334 в аудио моде не требует MCLK, ей только одну ножку надо перекючать, 0 для 44/48кгц и 1 для 88/96, насколько я помню.
    К настройкам порта в СТМ это отношения не имеет.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  14. #14
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,573

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от Alex Посмотреть сообщение
    Куб генерирует очень примитивную аппликацию дла USB Audio Class1, толком ни для чего не пригодную.
    Там, если память не изменяет, и асинхронной синхронизации с фидбеком нет, и дескриптор толко на один семплрейт и формат.
    Именно так. По крайней мере несколько лет тому тоже запускал на нем uac1, и обратную связь пришлось допиливать самому.

    Цитата Сообщение от OlegIT Посмотреть сообщение
    С частотой шины всё равно не понятно, может документация есть по этому вопросу, направьте.
    Да елы-палы, ну все же описано в даташитах. ЦАПы поддерживают на своем входе не какую-то одну частоту семплирования, а разные, обычно в диапазоне от 44,1кГц до 192к (новые до 384к или даже до 768к).
    Если частота дискретизации используется например 48кГц, то для I2S фрейма частота сигнала LRCK тоже 48кГц. А частота клока SCK, при длине фрейма 64 клока будет равна 48*64 = 3072кГц.
    Кроме того, для ЦАПа должна быть указана частота мастерклока. Если она указана как 256Fs, то это означает 256*48кГц = 12.288МГц.

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    dortonyan, у УДЫ нет мастерклока, она (как и РСМ5102) его внутри себя из битклока вырабатывает, ФАПЧем.

    P.S. Кстати был прикол когда-то - цепляю к Симедии эту РСМ-ку,без мастерклока, ну просто проверить надо было. Даю хайрез с генератора - на выходе синус, даю 44 - на выходе Х знай что.
    Ткнул скопом в шину - оказалось эта паскудная симедия, на 44/48 дает не 64 а 128 битклоков на семпл, а РСМ-ка без мастеркока такого авангардизъма не понимает. Завел на нее мастерклок - сразу поняла.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  16. #16
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    38
    Сообщений
    3,573

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Цитата Сообщение от Alex Посмотреть сообщение
    Ткнул скопом в шину - оказалось эта паскудная симедия, на 44/48 дает не 64 а 128 битклоков на семпл
    Некоторые микрухи АЦП тоже выдают на 44/48 ЧД 128 клоковый I2S. PCM4222, в частности. Я это увидел только когда собрал плату и начал запускать. Но на мое счастье I2S модуль проца съел такой фрейм без проблем.
    Соб-но для LJ и I2S форматов кол-во клоков строго не регламентируется, поэтому по правильному приемник должен уметь читать только N-ное кол-во бит вначале.

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

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

  18. #18
    Завсегдатай Аватар для maxssau
    Регистрация
    15.08.2015
    Адрес
    Самара
    Возраст
    40
    Сообщений
    2,624

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Есть и обратная ситуация, si cp2615, он "недодает" мастер клок, и разработчики видимо расчитывали подключать такой транспорт только к дакам без внешнего мастерклока. В итоге не заработало даже с ес9023
    _________________
    Евгений

  19. #19
    Завсегдатай Аватар для dyno
    Регистрация
    12.10.2010
    Адрес
    Минск
    Возраст
    47
    Сообщений
    1,047

    По умолчанию Re: I2S теория + STM32 с I2S практика.

    Попробую сюда. Если автор или администрация против - вынесу в отдельную тему.
    Достал себе игрушку - процессор Alto Mobile UCS pro. Процессор для автомобиля, питается от 9-16В постоянки.
    Вход у него аналоговый, через АЦП CS5361 цифра загоняется в процессор RED208N (даташит на него не нашел). Из обрывков информации в сети получается, что внутренняя обработка в процессоре происходит на 48кГц, по сему видимо АЦП подает именно их. Логично предположить, что 24бит, но может быть и 16, так как проц старый, хотя в случае с оцифровкой наверное не это играет роль и будет 24бит с вероятностью 99%.
    Так же такое устройство бывает на АЦП чипах TI, а именно PCM1800 (который имеет на выходе до 24/96), в других устройствах проц работает также с АЦП АК5383VS. Генератор рядом с процессором на 12.288

    Есть большое желание как-то подать цифру в виде I2S вместо АЦП. Под рукой есть Raspberry, на которую можно поставить Volumio (там есть и ресемплер, которым можно выставить нужные параметры потока), вывести I2S в виде LRCK, BCK и DATA. Питание 5В взять от питания проца через стабилизатор. Если взлетит, то можно так и оставить, будет встроенный стример.
    Хорошего ослика нет, чтоб пощупать, какой сигнал идет с АЦП в проц. Поэтому метод тыка. ES9023 сейчас работает так же в детской, от I2S получаемых с Малины+Volumio.
    Я прозванивал ноги АЦП, сигнал I2S идет прямо в проц. Да и по даташиту на другой девайс так и есть. MCLK на АЦП похоже не подается, что вселяет оптимизм.
    На плате процессора есть площадка под микросхему, которая не установлена (там круглая белая наклейка с цифрой 104). На неё тоже приходит I2S от АЦП, параллельно процессору, к этим площадкам и планирую подпаять сигнал от Raspberry для теста, максимально короткими проводами.


    Нажмите на изображение для увеличения. 

Название:	1.jpg 
Просмотров:	62 
Размер:	154.9 Кб 
ID:	433555

    Нажмите на изображение для увеличения. 

Название:	DSCN4164.JPG 
Просмотров:	70 
Размер:	2.24 Мб 
ID:	433556

    Нажмите на изображение для увеличения. 

Название:	6281194 5.png 
Просмотров:	98 
Размер:	84.0 Кб 
ID:	433557
    Последний раз редактировалось dyno; 28.03.2023 в 23:00.

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

    По умолчанию Re: I2S теория + STM32 с I2S практика.

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

Страница 1 из 2 12 Последняя

Метки этой темы

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

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

Ваши права

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