Protocolo I2S: funcionamiento, diferencias y sus aplicaciones

Pruebe Nuestro Instrumento Para Eliminar Los Problemas





Los sistemas digitales y sus requisitos de datos de audio dentro de teléfonos móviles, computadoras y Automatización del hogar Los productos han cambiado drásticamente durante un período de tiempo. La señal de audio desde o hacia los procesadores se está digitalizando. Estos datos en diferentes sistemas se procesan a través de muchos dispositivos como DSP , ADC, DAC, interfaces de E/S digital, etc. Para que estos dispositivos comuniquen datos de audio entre sí, se requiere un protocolo estándar. Uno de ellos es el protocolo I2S. Es una interfaz de bus serie, diseñada por Philip Semiconductor en febrero de 1986 para la interfaz de audio digital entre los dispositivos. Este artículo analiza una descripción general de I protocolo 2S está trabajando con aplicaciones.


¿Qué es el Protocolo I2S?

El protocolo que se utiliza para transmitir datos de audio digital de un dispositivo a otro se conoce como protocolo de sonido I2S o Inter-IC. Este protocolo transmite datos de audio PCM (pulse-code modulated) de un IC a otro dentro de un dispositivo electrónico. I2S juega un papel clave en la transmisión de archivos de audio pregrabados desde una MCU a un DAC o amplificador. Este protocolo también se puede utilizar para digitalizar audio usando un micrófono. No hay compresión dentro de los protocolos I2S, por lo que no puede reproducir OGG o MP3 u otros formatos de audio que condensan el audio; sin embargo, puede reproducir archivos WAV.



Características

los Características del protocolo I2S Incluya lo siguiente.

  • Tiene de 8 a 32 bits de datos para cada muestra.
  • Interrupciones Tx y Rx FIFO.
  • Es compatible con DMA.
  • Período de selección de palabra de 16 bits, 32 bits, 48 ​​bits o 64 bits.
  • Streaming de audio bidireccional simultáneo.
  • Ancho de muestra de 8 bits, 16 bits y 24 bits.
  • Tiene diferentes frecuencias de muestreo.
  • La velocidad de datos es de hasta 96 kHz durante el período de selección de palabras de 64 bits.
  • FIFO estéreo intercalado o FIFO de canal derecho e izquierdo independientes
  • Habilitación independiente de Tx y Rx.

Funcionamiento del protocolo de comunicación I2S

El I2S Protocolo de comunicación es un protocolo de 3 hilos que simplemente maneja datos de audio a través de un bus serie de 3 líneas que incluye SCK (reloj serie continuo), WS (selección de palabras) y SD (datos serie).



Conexión de 3 hilos de I2S:

SCK

El SCK o Serial Clock es la primera línea del protocolo I2S, también conocido como BCLK o línea de reloj de bits, que se utiliza para obtener los datos en un ciclo similar. La frecuencia del reloj en serie se define simplemente usando la fórmula como Frecuencia = Tasa de muestreo x Bits para cada canal x no. de canales

SW

En el protocolo de comunicación I2S, el WS o selección de palabra es la línea que también se conoce como cable FS (Frame Select) que separa el canal derecho o izquierdo.

Si WS = 0, se utiliza el canal izquierdo o el canal 1.

Si WS = 1, se utiliza el canal derecho o el canal 2.

Dakota del Sur

El Serial Data o SD es el último cable donde la carga útil se transmite dentro de 2 complementos. Por lo tanto, es muy importante que primero se transfiera el MSB, porque tanto el transmisor como el receptor pueden incluir diferentes longitudes de palabra. Por lo tanto, el transmisor o el receptor debe reconocer cuántos bits se transmiten.

  • Si la longitud de la palabra del receptor es mayor que la del transmisor, la palabra se acorta (los bits LSB se establecen en cero).
  • Si la longitud de palabra del receptor es menor que la longitud de palabra del transmisor, los bits LSB se ignoran.

los transmisor puede enviar los datos ya sea en el borde de ataque o borde de salida del pulso del reloj . Esto se puede configurar en el correspondiente registros de control . Pero el el receptor enclava los datos en serie y WS solo en el borde de ataque del pulso del reloj . El transmisor transmite datos solo después de un pulso de reloj después del cambio en WS. El receptor utiliza la señal WS para la sincronización de los datos en serie.

Componentes de red I2S

Cuando varios componentes I2S están conectados entre sí, esto se denomina red I2S. El componente de esta red incluye diferentes nombres y también diferentes funciones. Entonces, el siguiente diagrama muestra 3 redes diferentes. Aquí se utiliza una placa ESP NodeMCU como transmisor y una placa de conexión de audio I2S como receptor. Los tres cables utilizados para conectar el transmisor y el receptor son SCK, WS y SD.

  Componentes de red I2S
Componentes de red I2S

En el primer diagrama, el transmisor (Tx) es el maestro, por lo que controla las líneas SCK (reloj en serie) y WS (selección de palabra).

En el segundo diagrama, el receptor es el maestro. Entonces, las líneas SCK y WS comienzan desde el receptor y termina el transmisor.

En el tercer diagrama, un controlador exterior está conectado a los nodos dentro de la red que funciona como el dispositivo maestro. Entonces este dispositivo genera el SCK & WS.

En las redes I2S anteriores, solo hay un único dispositivo maestro disponible y muchos otros componentes que transmiten o reciben datos de sonido.

En I2S, cualquier dispositivo puede ser el maestro proporcionando la señal del reloj.

Diagrama de tiempo I2S

Para una mejor comprensión del I2S y su funcionalidad, tenemos el diagrama de tiempo del protocolo de comunicación I2S que se muestra a continuación. A continuación se muestra el diagrama de tiempo del protocolo I2S que incluye tres cables SCK, WS y SD.

  Diagrama de temporización del protocolo I2S
Diagrama de temporización del protocolo I2S

En el diagrama anterior, primero, el reloj serial tiene una Frecuencia = Tasa de muestreo * Bits para cada canal * no. de canales). La línea de selección de palabras es la segunda línea que cambia entre '1' para el canal derecho y '0' para el canal izquierdo.

La tercera línea es la línea de datos en serie donde los datos se transmiten en cada ciclo de reloj en el flanco descendente indicado con puntos de ALTO a BAJO.

Además, podemos notar que la línea WS varía un ciclo CLK antes de que se transmita el MSB, lo que le da tiempo al receptor para almacenar la palabra anterior y borrar el registro de entrada para la siguiente palabra. El MSB se envía cuando cambia SCK después de que cambia WS.

Cada vez que se transmiten datos entre el transmisor y el receptor, habría un retraso de propagación que sería

retardo de propagación = (diferencia de tiempo entre el reloj externo y el reloj interno del receptor) + (diferencia de tiempo entre el reloj interno y el momento en que se reciben los datos).

Para minimizar el retraso de propagación y para la sincronización de la transmisión de datos entre el transmisor y el receptor, se requiere que el transmisor tenga un período de reloj de

T > tr – Suponer que T es el período de reloj del transmisor y tr es el período de reloj mínimo del transmisor.

En las condiciones anteriores, si consideramos, por ejemplo, un transmisor con la velocidad de transmisión de datos de 2,5 MHz, entonces:

tr = 360ns

reloj Alto tHC (mínimo) >0,35 T.

reloj Low tLC (mínimo > > 0.35T.

Receptor como esclavo con una velocidad de transmisión de datos de 2,5 MHz, entonces:

reloj Alto tHC (mínimo) < 0,35 T

reloj Low tLC (mínimo) < 0.35T.

tiempo de configuración tst (mínimo) < 0.20T.

Protocolo I2S Arduino

El objetivo principal de este proyecto es hacer una interfaz de theremin I2S utilizando la biblioteca Arduino I2S. Los componentes necesarios para realizar este proyecto son; arduino mkr cero, Tablero de circuitos , cables de puente, Adafruit MAX98357A, 3 W, altavoz de 4 ohmios y deslizador RobotGeek.

La biblioteca Arduino I2S simplemente le permite transmitir y recibir datos de audio digital a través del bus I2S. Entonces, este ejemplo tiene como objetivo explicar cómo utilizar esta biblioteca para controlar un DAC I2S para reproducir el sonido calculado en el diseño de Arduino.

Este circuito se puede conectar como; El DAC I2S utilizado en este ejemplo requiere simplemente tres cables y una fuente de alimentación para el bus I2S. Las conexiones para el I2S en el Arduino MKRZero siguen como;

Datos en serie (SD) en el pin A6;

Reloj serial (SCK) en pin2;

El marco o Word Select (FS) en pin3;

Laboral

Básicamente, el theremin tiene dos controles de tono y volumen. Entonces, estos dos parámetros se modifican moviendo dos potenciómetros deslizantes, sin embargo, también puede ajustarlos para leerlos. Los dos potenciómetros están conectados en forma de divisor de voltaje, por lo que al mover estos potenciómetros obtendrá valores de 0 a 1023. Después de eso, estos valores se asignan entre la frecuencia máxima y mínima y el volumen mínimo y máximo.

  Diagrama I2S Thermin
Diagrama I2S Thermin

El sonido transmitido en el bus I2S es una onda sinusoidal simple cuya amplitud y frecuencia se modifican en función de la lectura de los potenciómetros.

Código

El código para conectar un Theremin con un Arduino MKRZero, dos potenciómetros deslizantes y un DAC I2S se muestra a continuación.

#incluir

const int maxFrequency = 5000; //frecuencia máxima generada
const int minFrecuencia = 220; //frecuencia mínima generada
const int maxVolume = 100; // volumen máximo de la frecuencia generada
const int minVolume = 0; // volumen mínimo de la frecuencia generada
const int sampleRate = 44100; //tasa de muestreo de la frecuencia generada
const int wavSize = 256; //tamaño del búfer
seno corto[tamañowav]; //búfer en el que se almacenan los valores de seno
const int frecuenciaPin = A0; //pin conectado al potenciómetro que determina la frecuencia de la señal
const int amplitudePin = A1; //pin conectado al potenciómetro que determina la amplitud de la señal
botón const int = 6; // pin conectado al botón de control para mostrar la frecuencia

configuración vacía ()
{

Serial.begin(9600); //configuramos el puerto serial
// Inicializar el transmisor I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, tasa de muestra, 16)) {
Serial.println(“¡Error al inicializar I2S!”);

mientras (1);
}

generarSeno(); // llenar el búfer con valores sinusoidales
pinMode(botón, INPUT_PULLUP); // poner el pin del botón en el pullup de entrada

}
bucle vacío () {

si (lectura digital (botón) == BAJO)

{

frecuencia flotante = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //frecuencia del mapa
int amplitud = map(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //amplitud del mapa
playWave(frecuencia, 0.1, amplitud); //reproducir sonido
//imprimir valores en serie
Serial.print(“Frecuencia = “);
Serial.println(frecuencia);
Serial.print(“Amplitud = “);
Serial.println(amplitud);

}

}
void generarSeno() {
for (int i = 0; i < tamaño wav; ++i) {
sine[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 se usa para no tener números pequeños
}
}
void playWave(frecuencia flotante, segundos flotantes, amplitud int) {
// Reproducir el búfer de forma de onda proporcionado para el especificado
// cantidad de segundos.
// Primero calcule cuántas muestras necesita reproducir para ejecutar
// por la cantidad deseada de segundos.

iteraciones int sin firmar = segundos * sampleRate;

// Luego calcule la 'velocidad' a la que nos movemos a través de la ola
// búfer basado en la frecuencia del tono que se está reproduciendo.

float delta = (frecuencia * wavSize) / float(sampleRate);

// Ahora recorra todas las muestras y reprodúzcalas, calculando el
// posición dentro del búfer de onda para cada momento en el tiempo.

for (int sin signo i = 0; i < iteraciones; ++i) {
short pos = (int sin signo)(i * delta) % wavSize;
muestra corta = amplitud * seno[pos];

// Duplica la muestra para que se envíe a los canales izquierdo y derecho.
// Parece que el orden es el canal derecho, el canal izquierdo si quieres escribir
// sonido estéreo.

while (I2S.disponibleParaEscribir() < 2);
I2S.write(muestra);
I2S.write(muestra);

}
}

Diferencia entre el protocolo I2C e I2S

La diferencia entre el protocolo I2C e I2S incluye lo siguiente.

2C

I2S

los protocolo I2C significa protocolo de bus inter-IC El I2S significa protocolo de sonido Inter-IC .
Se utiliza principalmente para ejecutar señales entre circuitos integrados colocados en una placa de circuito impreso similar. Se utiliza para conectar dispositivos de audio digital.
Utiliza dos líneas entre varios maestros y esclavos como SDA y SCL . Utiliza tres líneas WS, SCK y SD.
Admite multimaestro y multiesclavo. Admite un solo maestro.
Este protocolo admite el estiramiento de CLK. Este protocolo no tiene estiramiento CLK.
I2C incluye bits adicionales de inicio y parada de sobrecarga. I2S no incluye bits de inicio y parada.

Ventajas

los ventajas del bus I2S Incluya lo siguiente.

  • I2S utiliza CLK y líneas de datos seriales separadas. Por lo tanto, tiene diseños de receptor muy simples en comparación con los sistemas asíncronos.
  • Es un dispositivo maestro único, por lo que no hay problema con la sincronización de datos.
  • El micrófono basado en I2S o/p no necesita una interfaz analógica, sino que se utiliza dentro de un micrófono inalámbrico mediante el uso de un transmisor digital. Al usar esto, puede tener una conexión totalmente digital entre el transmisor y el transductor.

Desventajas

los desventajas del bus I2S Incluya lo siguiente.

  • I2S no se propone para transferir datos a través de cables.
  • I2S no es compatible con aplicaciones de alto nivel.
  • Este protocolo tiene un problema de sincronización entre tres líneas de señal que se nota a alta tasa de bits y frecuencia de muestreo. Entonces, este problema ocurre principalmente debido a la variación de los retrasos de propagación entre las líneas de reloj y las líneas de datos.
  • I2S no incluye un mecanismo de detección de errores, por lo que puede causar errores en la decodificación de datos.
  • Se utiliza principalmente para la comunicación entre circuitos integrados en una placa de circuito impreso similar.
  • No hay conectores típicos ni cables de interconexión para I2S, por lo que diferentes diseñadores usan diferentes conectores.

Aplicaciones

los aplicaciones del protocolo I2S Incluya lo siguiente.

  • I2S se utiliza para conectar dispositivos de audio digital.
  • Este protocolo se utiliza ampliamente para transferir datos de audio desde un DSP o microcontrolador a un códec de audio para reproducir audio.
  • Inicialmente, la interfaz I2S se utiliza en los diseños de reproductores de CD. Ahora, se puede encontrar donde se envían datos de audio digital entre circuitos integrados.
  • I2S se utiliza en DSP, ADC de audio, DAC, microcontroladores, convertidores de frecuencia de muestreo, etc.
  • I2S está especialmente diseñado para usarse entre circuitos integrados para comunicar datos de audio digital.
  • Este protocolo juega un papel clave en la conexión del microcontrolador y sus dispositivos periféricos cuando el I2S se enfoca en la transmisión de datos de audio entre dispositivos de audio digital.

Por lo tanto, se trata de una visión general de la Especificación del protocolo I2S que incluye el trabajo, las diferencias y sus aplicaciones. I²S es un protocolo serie síncrono de 3 hilos Se utiliza para transferir audio estéreo digital entre dos circuitos integrados. los Analizador de protocolo I2S es un decodificador de señal que incluye todos los analizadores lógicos DigiView. Este software DigiView simplemente brinda amplias capacidades de búsqueda, navegación, exportación, medición, trazado e impresión para todo tipo de señales. Aquí hay una pregunta para usted, ¿qué es el protocolo I3C?