Протокол I2S: работа, отличия и приложения

Попробуйте наш инструмент устранения неполадок





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


Что такое протокол I2S?

Протокол, который используется для передачи цифровых аудиоданных с одного устройства на другое, известен как протокол I2S или Inter-IC Sound. Этот протокол передает аудиоданные PCM (с импульсно-кодовой модуляцией) от одной ИС к другой внутри электронного устройства. I2S играет ключевую роль в передаче предварительно записанных аудиофайлов с микроконтроллера на ЦАП или усилитель. Этот протокол также можно использовать для оцифровки звука с помощью микрофона. В протоколах I2S нет сжатия, поэтому вы не можете воспроизводить OGG или MP3 или другие аудиоформаты, которые сжимают звук, однако вы можете воспроизводить файлы WAV.



Функции

В Особенности протокола I2S включая следующее.

  • Он имеет от 8 до 32 битов данных для каждой выборки.
  • Прерывания Tx & Rx FIFO.
  • Он поддерживает ДМА.
  • 16-битный, 32-битный, 48-битный или 64-битный период выбора слова.
  • Одновременная двунаправленная потоковая передача звука.
  • 8-битная, 16-битная и 24-битная ширина выборки.
  • У него разные частоты дискретизации.
  • Скорость передачи данных составляет до 96 кГц в течение периода выбора 64-битного слова.
  • Чередующиеся стереоканалы FIFO или независимые правый и левый каналы FIFO
  • Независимое включение Tx & Rx.

Протокол связи I2S работает

I2S протокол связи представляет собой 3-проводной протокол, который просто обрабатывает аудиоданные через 3-линейную последовательную шину, которая включает в себя SCK (непрерывный последовательный тактовый сигнал), WS (выбор слов) и SD (последовательные данные).



3-проводное подключение I2S:

СКК

SCK или последовательные часы — это первая линия протокола I2S, также известная как BCLK или линия битовых часов, которая используется для получения данных в аналогичном цикле. Последовательная тактовая частота просто определяется с помощью такой формулы, как Частота = Частота дискретизации x Биты для каждого канала x количество. каналов.

WS

В протоколе связи I2S WS или выбор слова — это линия, также известная как провод FS (выбор кадра), которая разделяет правый и левый канал.

Если WS = 0, то используется левый канал или канал-1.

Если WS = 1, то используется правый канал или канал-2.

SD

Последовательные данные или SD — это последний провод, по которому полезная нагрузка передается в пределах 2 дополнений. Таким образом, очень важно, что сначала передается MSB, потому что и передатчик, и приемник могут включать в себя слова разной длины. Таким образом, передатчик или приемник должны распознавать, сколько битов передается.

  • Если длина слова приемника больше длины слова передатчика, то слово укорачивается (младшие биты устанавливаются равными нулю).
  • Если длина слова приемника меньше длины слова передатчика, то младшие биты игнорируются.

В передатчик может отправить данные либо на передний или задний фронт тактового импульса . Это можно настроить в соответствующем регистры управления . Но приемник фиксирует последовательные данные и WS только по переднему фронту тактового импульса . Передатчик передает данные только через один тактовый импульс после изменения WS. Приемник использует сигнал WS для синхронизации последовательных данных.

Сетевые компоненты I2S

Когда несколько компонентов I2S подключены друг к другу, это называется сетью I2S. Компонент этой сети включает разные имена, а также разные функции. Итак, на следующей диаграмме показаны 3 разные сети. Здесь в качестве передатчика используется плата ESP NodeMCU, а в качестве приемника — аудиоплата I2S. Для соединения передатчика и приемника используются три провода: SCK, WS и SD.

  Сетевые компоненты I2S
Сетевые компоненты I2S

На первой диаграмме передатчик (Tx) является ведущим, поэтому он управляет линиями SCK (последовательные часы) и WS (выбор слова).

На второй диаграмме получатель является ведущим. Таким образом, обе линии SCK и WS начинаются с приемника и заканчиваются передатчиком.

На третьей диаграмме к узлам внутри сети подключен внешний контроллер, который работает как ведущее устройство. Итак, это устройство генерирует SCK & WS.

В вышеперечисленных сетях I2S доступно только одно ведущее устройство и множество других компонентов, которые передают или получают звуковые данные.

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

Временная диаграмма I2S

Для лучшего понимания I2S и его функциональности у нас есть временная диаграмма протокола связи I2S, показанная ниже. Ниже показана временная диаграмма протокола I2S, которая включает три провода SCK, WS и SD.

  Временная диаграмма протокола I2S
Временная диаграмма протокола I2S

На приведенной выше диаграмме, во-первых, последовательные часы имеют частоту = частота дискретизации * биты для каждого канала * количество. каналов). Строка выбора слова — это вторая строка, которая меняется между «1» для правого канала и «0» для левого канала.

Третья строка представляет собой линию последовательных данных, где данные передаются в каждом тактовом цикле по заднему фронту, обозначенному точками от ВЫСОКОГО до НИЗКОГО.

Кроме того, мы можем заметить, что линия WS изменяется на один цикл CLK перед передачей MSB, что дает приемнику время для сохранения предыдущего слова и очистки входного регистра для следующего слова. MSB отправляется, когда SCK изменяется после изменения WS.

Всякий раз, когда данные передаются между передатчиком и приемником, возникает задержка распространения, которая составляет

задержка распространения = (разница во времени между внешними часами и внутренними часами приемника) + (разница во времени между внутренними часами и моментом получения данных).

Для минимизации задержки распространения и для синхронизации передачи данных между передатчиком и приемником требуется, чтобы передатчик имел тактовый период

Т > тр — Предположим, что T — это тактовый период передатчика, а tr — минимальный тактовый период передатчика.

При вышеуказанном условии, если мы рассмотрим, например, передатчик со скоростью передачи данных 2,5 МГц, тогда:

тр = 360 нс

часы Высокий tHC (минимум) >0,35 Тл.

часы Low tLC (минимум > > 0,35T.

Приемник в качестве ведомого со скоростью передачи данных 2,5 МГц, тогда:

часы Высокий tHC (минимум) <0,35 Тл

часы Низкий tLC (минимум) <0,35T.

время установки tst(минимум) <0,20T.

Протокол I2S Ардуино

Основная цель этого проекта — создать интерфейс терменвокс I2S с использованием библиотеки Arduino I2S. Необходимые компоненты для создания этого проекта: Ардуино МКР Ноль, Макет , провода-перемычки, Adafruit MAX98357A, 3 Вт, динамик 4 Ом и слайдер RobotGeek.

Библиотека Arduino I2S позволяет просто передавать и получать цифровые аудиоданные по шине I2S. Таким образом, этот пример призван объяснить, как использовать эту библиотеку для управления ЦАП I2S для воспроизведения звука, вычисленного в конструкции Arduino.

Эта схема может быть подключена как; ЦАП I2S, используемый в этом примере, требует всего трех проводов, а также источника питания для шины I2S. Соединения для I2S на Arduino MKRZero следующие:

Серийные данные (SD) на контакте A6;

Последовательные часы (SCK) на контакте 2;

Фрейм или Word Select (FS) на контакте 3;

Работающий

По сути, терменвокс имеет два регулятора высоты тона и громкости. Таким образом, эти два параметра изменяются путем перемещения двух ползунковых потенциометров, однако вы также можете настроить их, чтобы прочитать их. Два потенциометра соединены в форме делителя напряжения, поэтому, перемещая эти потенциометры, вы получите значения от 0 до 1023. После этого эти значения отображаются между максимальной и минимальной частотой и наименьшей и максимальной громкостью.

  Схема I2S Термин
Схема I2S Термин

Звук, передаваемый по шине I2S, представляет собой простую синусоиду, амплитуда и частота которой изменяются в зависимости от показаний потенциометров.

Код

Ниже приведен код для сопряжения терменвокса с Arduino MKRZero, 2-ползунковыми потенциометрами и ЦАП I2S.

#include

const int maxFrequency = 5000; //максимальная генерируемая частота
const int minFrequency = 220; //минимальная генерируемая частота
const int maxVolume = 100; //максимальный объем генерируемой частоты
const int minVolume = 0; //минимальный объем генерируемой частоты
const int sampleRate = 44100; //выборка сгенерированной частоты
const int wavSize = 256; //размер буфера
короткий синус[wavSize]; //буфер, в котором хранятся значения синуса
const int частотаPin = A0; //контакт, подключенный к горшку, который определяет частоту сигнала
const int амплитудаPin = A1; //вывод, подключенный к горшку, который определяет амплитуду сигнала
кнопка const int = 6; //вывод, подключенный к кнопке, для отображения частоты

недействительная установка ()
{

Серийный.начать(9600); //настраиваем последовательный порт
// Инициализируем передатчик I2S.
если (!I2S.begin(I2S_PHILIPS_MODE, SampleRate, 16)) {
Serial.println('Не удалось инициализировать I2S!');

пока (1);
}

генерировать синус(); // заполняем буфер синусоидальными значениями
pinMode (кнопка, INPUT_PULLUP); // поместите контакт кнопки во входной подтягивающий

}
недействительный цикл () {

если (digitalRead (кнопка) == LOW)

{

частота с плавающей запятой = карта (аналоговое чтение (частота контакта), 0, 1023, minFrequency, maxFrequency); //частота карты
int амплитуда = карта (analogRead (amplitudePin), 0, 1023, minVolume, maxVolume); //отображение амплитуды
playWave(частота, 0,1, амплитуда); // воспроизвести звук
//выводим значения на серийный номер
Serial.print («Частота =»);
Serial.println(частота);
Serial.print('Амплитуда = ');
Serial.println(амплитуда);

}

}
пустота generateSine() {
for (int i = 0; i < wavSize; ++i) {
sine[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 используется, чтобы не было маленьких чисел
}
}
void playWave (частота с плавающей запятой, секунды с плавающей запятой, целая амплитуда) {
// Воспроизведение предоставленного буфера сигнала для указанного
// количество секунд.
// Сначала вычисляем, сколько семплов нужно воспроизвести для запуска
// на желаемое количество секунд.

беззнаковое целое число итераций = секунды * SampleRate;

// Затем вычисляем «скорость», с которой мы движемся по волне
// буфер на основе частоты воспроизводимого тона.

float delta = (частота * wavSize) / float(sampleRate);

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

for (unsigned int i = 0; i < итераций; ++i) {
короткая позиция = (целое без знака)(i * delta) % wavSize;
короткая выборка = амплитуда * синус[pos];

// Дублируем образец, чтобы он был отправлен как в левый, так и в правый каналы.
// Кажется, порядок - правый канал, левый канал, если вы хотите написать
// стереозвук.

в то время как (I2S.availableForWrite() < 2);
I2S.write(образец);
I2S.write(образец);

}
}

Разница между протоколами I2C и I2S

Разница между протоколами I2C и I2S заключается в следующем.

I2S

В I2C-протокол расшифровывается как протокол межсетевой шины I2S означает протокол Inter-IC Sound. .
Он в основном используется для передачи сигналов между интегральными схемами, размещенными на аналогичной печатной плате. Он используется для подключения цифровых аудиоустройств.
Он использует две линии между несколькими ведущими и ведомыми устройствами, такими как SDA и SCL. . Он использует три линии WS, SCK и SD.
Он поддерживает мульти-мастер и мульти-раб. Он поддерживает одного мастера.
Этот протокол поддерживает растяжение CLK. Этот протокол не имеет растяжения CLK.
I2C включает дополнительные служебные стартовые и стоповые биты. I2S не включает стартовые и стоповые биты.

Преимущества

В преимущества шины I2S включая следующее.

  • I2S использует отдельные линии CLK и последовательных данных. Таким образом, у него очень простая конструкция приемника по сравнению с асинхронными системами.
  • Это единственное ведущее устройство, поэтому проблем с синхронизацией данных нет.
  • Микрофон на основе I2S o/p не нуждается в аналоговом интерфейсе, но используется в беспроводном микрофоне с использованием цифрового передатчика. Используя это, вы можете иметь полностью цифровое соединение между передатчиком и преобразователем.

Недостатки

В недостатки шины I2S включая следующее.

  • I2S не предназначен для передачи данных по кабелям.
  • I2S не поддерживается в высокоуровневых приложениях.
  • Этот протокол имеет проблему синхронизации между тремя сигнальными линиями, которая наблюдается при высокой скорости передачи данных и частоте дискретизации. Таким образом, эта проблема в основном возникает из-за различий в задержках распространения между линиями синхронизации и линиями данных.
  • I2S не включает механизм обнаружения ошибок, поэтому он может вызвать ошибки при декодировании данных.
  • Он в основном используется для связи между микросхемами на аналогичной печатной плате.
  • Для I2S нет типичных разъемов и соединительных кабелей, поэтому разные разработчики используют разные разъемы.

Приложения

В приложения протокола I2S включая следующее.

  • I2S используется для подключения цифровых аудиоустройств.
  • Этот протокол широко используется при передаче аудиоданных от DSP или микроконтроллера к аудиокодеку для воспроизведения звука.
  • Первоначально интерфейс I2S использовался в конструкциях проигрывателей компакт-дисков. Теперь можно найти, где цифровые аудиоданные передаются между микросхемами.
  • I2S используется в DSP, аудио АЦП, ЦАП, микроконтроллерах, преобразователях частоты дискретизации и т. д.
  • I2S специально разработан для использования между интегральными схемами для передачи цифровых аудиоданных.
  • Этот протокол играет ключевую роль в подключении микроконтроллера и его периферийных устройств, когда I2S фокусируется на передаче аудиоданных между цифровыми аудиоустройствами.

Таким образом, это все о обзоре Спецификация протокола I2S который включает в себя работу, различия и его приложения. I²S — это трехпроводной синхронный последовательный протокол. используется для передачи цифрового стереозвука между двумя интегральными схемами. В Анализатор протокола I2S представляет собой декодер сигналов, который включает в себя все логические анализаторы DigiView. Это программное обеспечение DigiView просто обеспечивает широкие возможности поиска, навигации, экспорта, измерения, построения графиков и печати для всех типов сигналов. Вот вопрос к вам, что такое протокол I3C?