I2s что это в магнитоле

Обновлено: 06.07.2024

Сегодня мы начинаем изучение нового для нас интерфейса – это шина I2S, чем то похожая на I2C, но заточенная непосредственно на передачу цифрового аудиопотока. Описание и диаграммы протокола данной шины можно найти на странице 894 STM32F4 Reference manual. Ну если кратко, данная шина является также синхронной, причем синхронизация обеспечивается не только для каждого переданного бита, как у I2C, а также поканально. То есть отдельный провод синхронизации задействован так, что при передачи полностью всех битов (их может быть 8, 16, 24) одного канала он находится в состоянии 1, а при передачи всех битов другого канала – в 0. Данное условие обеспечивает невозможность случайного обмена каналов между собой вследствие искажения сигнала потока.

Свой проект мы создадим из одного из предыдущих проектов USB_HOST_MSC_FATFS, так как работать мы будем с USB Flash Drive, ибо нам для изучения преобразования цифрового аудио надо это цифровое аудио откуда-то взять. Было принято решение взять его из WAV файлов, расположенных на данном носителе. Проект мы назовём по наименованию шины I2S_AUDIO. Так как мы ещё будем подключать к плате Discovery носитель USB Flash Drive, то необходимо туда скопировать для WAV-файла со звуком: Track1.wav и Track2.wav. Частота сэмплирования данных файлов может быть любая, но желательно не больше 48 кГц.

Посмотрим подключение аудио-микросхемы в плате Discovery (нажмите на картинку для увеличения изображения)

image00_0500

Данная микросхема именуется CS43L22. Основной её характеристикой является поддерживаемая частота дискретизации. Это от 4 кГц до 96 кГц. Откроем её даташит. Там существуют четыре вида протокола I2S. Мы используем самый первый стандарт. Единственное из даташита непонятно зачем нужен контакт MCLK. В даташите дано следующее описание данного контакта:

Пролистав несколько форумов, я нашел, что это ещё третий вид синхронизации – тактирование сэмплов.

Вот так у нас всё подключено к плате

Откроем наш проект в MS Cube и сделаем необходимое добавление определённых настроек. Включим первым делом саму шину I2S

image02

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

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

image01

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

image03

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

image06

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

image05

Только I2C3 мы отдадим под символьный дисплей, а I2C1 нам понадобится именно для аудио-микросхемы. Мало того, лапку PB7 нужно будет переопределить на PB9. Я думаю, все уже умеют это делать. Сначала сбросим её, а затем переопределим

Теперь переходник дисплея у нас будет подключен к другим лапкам портов:

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

Создадим и добавим в проект новые файлы, предназначенные для работы со звуком, audioplay.c и audioplay.h следующего содержания:

ЦАП I2S DSD256-PCM

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

ЦАП I2S DSD256-PCM

ЦАП I2S DSD256-PCM

Немного истории I2S

Этот стандарт был введен в 1986 году компанией Philips Semiconductor (в настоящее время NXP Semiconductors ) и в последний раз пересматривался 5 июня 1996 года

Протокол I²S описывает один конкретный тип цифровой аудиосвязи PCM с определенными параметрами, указанными в спецификации Philips.

Состоит он как минимум из трех линий:

И2С также может включать следующие строки:

  • Основные часы (обычно 256 x LRCLK)
  • Это не является частью стандарта I2S но обычно используется для синхронизации внутренней работы аналого-цифровых преобразователей.
  • Мультиплексированная строка данных для загрузки

Битовая тактовая частота пульсирует один раз для каждого дискретного бита данных в строках данных. Тактовая частота битов является воспроизведением частоты дискретизации , количества бит на канал и количества каналов. Так, например, CD Audio с частотой дискретизации 44,1 кГц, с точностью 16 бит и двумя каналами (стерео) имеет тактовую частоту:

44,1 кГц × 16 × 2 = 1,4112 МГц

Часы выбора слова позволяют устройству узнать, отправляется ли в данный момент канал 0 или канал 1, поскольку I²S позволяет отправлять два канала по одной и той же линии данных. Это сигнал с коэффициентом заполнения 50%, частота которого совпадает с частотой дискретизации. Для стерео материала спецификация I²S гласит, что левый звук передается в низком цикле тактового сигнала выбора слова, а правый канал передается в верхнем цикле. Обычно он синхронизируется с задним фронтом последовательных часов, так как данные фиксируются на переднем фронте.

I2S ЦАП

I2S ЦАП

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

В качестве аудио-соединения I2S

В звуковом оборудовании I²S иногда используется как внешнее соединение между проигрывателем компакт-дисков и отдельным блоком ЦАП, в отличие от чисто внутреннего соединения внутри одного блока проигрывателя. Это может сформировать альтернативу обычно используемым стандартам AES / EBU или Toslink или S / PDIF.

Соединение I²S не предназначалось для использования через кабели, и большинство интегральных микросхем не будет иметь правильного сопротивления для коаксиальных кабелей. Поскольку ошибка адаптации импеданса, связанная с разной длиной линии, может привести к разнице в задержке распространения между тактовой линией и строкой данных, это может привести к проблеме синхронизации между SCK, WS и сигналами данных, в основном на высокой частоте дискретизации и битрейте. Поскольку I²S не имеет никакого механизма обнаружения ошибок, это может вызвать важную ошибку декодирования.

ЦАП 4398+2706

ЦАП 4398+2706

ЭТО ДОСТАТОЧНО ПРОСТОЙ ИНТЕРФЕЙС

i2s_dac

i2s_dac

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

Цифровой источник звука обычно создает два слова данных, одно для левого канала и одно для правого, один раз для каждого интервала выборки. Например, источник аудио CD с частотой дискретизации 44,1 кГц, который будет передавать два 16-битных слова 44 100 раз каждую секунду. На одной последовательной линии это колоссальные 1 411 200 бит в секунду (44100 x 16 x 2).

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

I2S решает обе эти проблемы с помощью дополнительных строк, предоставляя строку выбора слова (также иногда называемую тактовыми импульсами L / R) для выбора левого или правого отсчетов, а также битовую линию тактового сигнала для синхронизации всего. Вот и все, что есть в I 2 S: строка данных, строка синхронизации слов и строка синхронизации битов.

ЦАП Audio-gd Master 7 обзор

Спецификация была формализована Philips в документе 1986 года, благодаря которому подразделение полупроводников компании стало NXP, но, к сожалению, исчезло с веб-сайта NXP. К счастью, у Wayback Machine она есть , поэтому она все еще доступна. Читая документ, становится очевидным, что даже в 1980-х годах это был не сложный интерфейс для работы, и он даже дает базовые диаграммы для передатчика и приемника. Не исключено, что при наличии некоторых микросхем TTL и цепочки резисторов будет возможно создать ЦАП I2S из первых принципов на вашем стенде, хотя это и не очень высокопроизводительный пример.


Итак, у вас есть I2S

Все, что вам нужно знать о межкомпонентных аудиоразъемах, в четырех удобных параграфах.

ЦАП NFB28

Ответ заключается в модуляции плотности импульсов , форме аналого-цифрового преобразования, в которой число логических 1 битов в данный период времени зависит от уровня аналогового сигнала. Это необработанный вывод АЦП с дельта-сигмой , и он имеет удобное свойство, заключающееся в том, что при наличии только потока данных PDM этап цифроаналогового преобразования может быть выполнен только с помощью простого фильтра нижних частот. Если вы увеличите битрейт на интерфейсе I 2 S до максимума, а затем передадите ему слова, которые образуют поток данных PDM, вы можете добавить фильтр нижних частот, чтобы создать АЦП с максимальной пропускной способностью, равной половине его бита. темп.

ESP32 I2S намного сложнее, чем базовый стандарт.


Raspberry Pi 4 + клон дартЗил

Возможно, эта номенклатура имеет корни в ESP8266, имеющем периферийное устройство I 2 S на чипе, и общее периферийное устройство в более позднем устройстве.


Raspberry Pi 4 + клон Зил

Поскольку большинство интерфейсов I 2 S могут работать с тактовой частотой в несколько мегагерц, их пропускная способность может быть на удивление высокой. Это то же самое, что и принцип, заложенный в любой программно-определяемый радиопередатчик: одним махом и с очень небольшим количеством дополнительного оборудования вы перенесли задачу создания произвольных спектров в диапазоне МГц с аппаратного на программное обеспечение.

Даже самые современные микроконтроллеры обладают достаточной вычислительной мощностью для выполнения этой задачи, что делает относительно простыми некоторые приложения для I 2 S, которые были бы за гранью воображения тех инженеров Philips 1980-х годов. Однако, I2S к которой можно было только подключить аудио ЦАП, не останавливает аудиофилов от подключения, и этот интерфейс становится намного полезнее, а возможности безграничны.

ЦАП Audio-gd Master 7 купить

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

Не забывайте сохранять нас в закладках! (CTRL+SHiFT+D) Подписывайтесь, комментируйте, делитесь в соц.сетях. Желаю удачи в поиске своего звука!

Вам нужен хороший фонокорректор, новый ламповый усилитель или отличный ЦАП, плеер, наушники, АС или другую звуковую технику, (усилитель, ресивер и т.д.) то пишите в ВК, помогу выгодно и с гарантией приобрести хорошую звуковую технику…

Учимся передавать звук с использованием протокола I2S

13 августа 2018

На базе устройств, использующих I2S, существует немало готовых плат, в частности:

Модуль PmodI2S на базе чипа CS4344

Типичный I2S-сигнал выглядит в PulseView как-то так:

I2S-сигнал в PulseView

Здесь SCK представляет собой тактовый сигнал. WS (он же LRCLK) отвечает за выбор канала. Через SDA (он же SDIN) передаются сами данные. Сигнала MCLK, строго говоря, нет в спецификации I2S [PDF]. Но на практике многие устройства используют его для синхронизации своих внутренних операций. Обычно сюда идет тактовый сигнал с частотой в 256 раз больше частоты дискретизации звука.

Fun fact! Если хочется извлечь звук из записанного I2S-сигнала, это можно сделать такой командой:

sigrok-cli -i i2s.sr -P i2s: sd =SDA: ws =WS: sck =SCK -A i2s =right | \
cut -c27-30 | xxd -r -p | \
sox -t raw -B -b 16 -c 1 -e signed-integer -r 48k - audio.wav

Для экспериментов с модулем я воспользовался отладочной платой Nucleo-F411RE. Микроконтроллер, используемый в этой плате, имеет аппаратную поддержку I2S, которой и было решено воспользоваться. Какие настройки доступны в STM32CubeMX и к каким пинам микроконтроллера следует подключать модуль, вы без труда разберетесь самостоятельно по полной версии проекта. Поговорим лучше непосредственно о коде.

Например, генерация синусоидального сигнала с частотой 100 Гц осуществляется так:

Интересно, что по каким-то причинам микроконтроллеры STM32 не могут использовать традиционные значения частоты дискретизации, такие, как 44100 Гц или 48000 Гц. В частности, при выборе частоты 48000 Гц реальная частота составит 46876 Гц (на 2.34% меньше). Впрочем, на слух такая разница совершенно незаметна. Все эти различия между желаемой и реальной частотой отображаются прямо в STM32CubeMX.

Проверяем звук, переданный по I2S, с помощью осциллографа

volatile uint16_t * temp = signal_play_buff ;
signal_play_buff = signal_read_buff ;
signal_read_buff = temp ;

read_next_chunk = false ;
end_of_file_reached = false ;
signal_play_buff = signal_buff1 ;
signal_read_buff = signal_buff2 ;

Передача данных по I2S осуществляется асинхронно при помощи процедуры HAL_I2S_Transmit_IT . По завершении передачи данных вызывается коллбэк HAL_I2S_TxCpltCallback . Если это известно, то остальная часть кода становится тривиальной.

Напомню, что с форматом WAV-файлов и библиотекой FatFs мы ранее познакомились в рамках статей Парсинг заголовка и проигрывание WAV-файла на Scala и Работа с FAT32 и exFAT с помощью библиотеки FatFs соответственно.

Вот и все, о чем я хотел сегодня рассказать. Исходники к этому посту вы найдете на GitHub. Если у вас есть вопросы или дополнения, используйте комментарии, не стесняйтесь!

Теория SPDIF, I2S или как все это это работает

Итак! Представим схему: ПК - взуковая карта со SPDIF выходом - SPDIF ресивер (например DIR9001) - ЦАП (например PCM5102). Что такое PCM, частота дискретихации и разрядность я понимаю.

Так вот имеет у нас на ПК несколько разных аудиофайлов с разной частотой дискретизации и разрядностью. В настройках аудиокарты мы так же можем поставить частоту дискретизации и разрядность. И тут возникоет вопрос: что при этом происходит на выходе SPDIF? Предполагаю, что где-то на уровне драйвера происходит программный пересчет (ресемплинг) частоты и разрядности и на выходе получаем всегда одинаковую частоту и разрядность, установленную в настройках аудиокарты вне зависимости от того, какой файл мы будем слушать. Далее наша звуковая карта преобразует наш цифровой аудио сигнал в какую-то последовательность импульсов SPDIF стандарта передачи.

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