Protocolo I2S: Funcionamento, Diferenças e Suas Aplicações

Experimente Nosso Instrumento Para Eliminar Problemas





Sistemas digitais e seus requisitos de dados de áudio em telefones celulares, computadores e Automação residencial produtos mudaram drasticamente ao longo de um período de tempo. O sinal de áudio de ou para os processadores está se tornando digitalizado. Esses dados em diferentes sistemas são processados ​​através de muitos dispositivos como DSPs , ADCs, DACs, interfaces de E/S digitais, etc. Para que esses dispositivos comuniquem dados de áudio entre si, é necessário um protocolo padrão. Um deles é o protocolo I2S. É uma interface de barramento serial, projetada pela Philip Semiconductor em fevereiro de 1986 para interface de áudio digital entre os dispositivos. Este artigo discute uma visão geral de I protocolo 2S seu trabalho com aplicativos.


O que é o protocolo I2S?

O protocolo usado para transmitir dados de áudio digital de um dispositivo para outro é conhecido como protocolo I2S ou Inter-IC Sound. Este protocolo transmite dados de áudio PCM (modulado por código de pulso) de um IC para outro dentro de um dispositivo eletrônico. O I2S desempenha um papel fundamental na transmissão de arquivos de áudio pré-gravados de um MCU para um DAC ou amplificador. Este protocolo também pode ser utilizado para digitalizar áudio usando um microfone. Não há compactação nos protocolos I2S, portanto, você não pode reproduzir OGG ou MP3 ou outros formatos de áudio que condensam o áudio, no entanto, você pode reproduzir arquivos WAV.



Características

o Características do protocolo I2S inclui o seguinte.

  • Possui de 8 a 32 bits de dados para cada amostra.
  • Interrupções Tx & Rx FIFO.
  • Ele suporta DMA.
  • Período de seleção de palavras de 16 bits, 32 bits, 48 ​​bits ou 64 bits.
  • Streaming de áudio bidirecional simultâneo.
  • Largura de amostra de 8 bits, 16 bits e 24 bits.
  • Tem diferentes taxas de amostragem.
  • A taxa de dados é de até 96 kHz durante o período de seleção de palavras de 64 bits.
  • FIFOs estéreo intercalados ou FIFOs independentes de canal direito e esquerdo
  • Ativação independente de Tx & Rx.

Funcionamento do protocolo de comunicação I2S

O I2S protocolo de comunicação é um protocolo de 3 fios que simplesmente lida com dados de áudio através de um barramento serial de 3 linhas que inclui SCK (Relógio Serial Contínuo), WS (Seleção de Palavras) e SD (Dados Seriais).



Conexão de 3 fios do I2S:

SCK

O SCK ou Serial Clock é a primeira linha do protocolo I2S que também é conhecido como BCLK ou bit clock line que é usado para obter os dados em um ciclo semelhante. A frequência do relógio serial é simplesmente definida usando a fórmula como Frequência = Taxa de Amostragem x Bits para cada canal x não. de canais.

WS

No protocolo de comunicação I2S, o WS ou word select é a linha que também é conhecida como fio FS (Frame Select) que separa o canal direito ou esquerdo.

Se WS = 0, então o canal esquerdo ou o canal 1 é usado.

Se WS = 1, então o canal direito ou o canal 2 é usado.

SD

O Serial Data ou SD é o último fio onde a carga útil é transmitida dentro de 2 complementos. Portanto, é muito significativo que o MSB seja transferido primeiro, porque tanto o transmissor quanto o receptor podem incluir diferentes comprimentos de palavra. Assim, o transmissor ou o receptor tem que reconhecer quantos bits são transmitidos.

  • Se o comprimento da palavra do receptor for maior que o do transmissor, a palavra será encurtada (os bits LSB são definidos como zero).
  • Se o comprimento da palavra do receptor for menor que o comprimento da palavra do transmissor, os bits LSB serão ignorados.

o transmissor pode enviar os dados tanto no borda de ataque ou borda de fuga do pulso de clock . Isso pode ser configurado no respectivo registros de controle . Mas o receptor trava os dados seriais e WS apenas na borda de ataque do pulso de clock . O transmissor transmite dados somente após um pulso de clock após a mudança no WS. O receptor usa o sinal WS para sincronização dos dados seriais.

Componentes de rede I2S

Quando vários componentes I2S estão conectados uns aos outros, isso é chamado de rede I2S. O componente desta rede inclui nomes diferentes e também funções diferentes. Assim, o diagrama a seguir mostra 3 redes diferentes. Aqui, uma placa ESP NodeMCU é usada como transmissor e uma placa de interrupção de áudio I2S é usada como receptor. Os três fios usados ​​para conectar o transmissor e o receptor são SCK, WS e SD.

  Componentes de rede I2S
Componentes de rede I2S

No primeiro diagrama, o transmissor (Tx) é o mestre, então ele controla as linhas SCK (relógio serial) e WS (seleção de palavra).

No segundo diagrama, o receptor é o mestre. Assim, ambas as linhas SCK e WS começam no receptor e o transmissor termina.

No terceiro diagrama, um controlador externo é conectado aos nós dentro da rede que funciona como o dispositivo mestre. Portanto, este dispositivo gera o SCK & WS.

Nas redes I2S acima de tudo, há apenas um único dispositivo mestre disponível e muitos outros componentes que transmitem ou recebem dados de som.

Em I2S qualquer dispositivo pode ser o mestre fornecendo o sinal de clock.

Diagrama de Temporização I2S

Para uma melhor compreensão do I2S e sua funcionalidade, temos o diagrama de temporização do protocolo de comunicação I2S mostrado abaixo. O diagrama de temporização do protocolo I2S é mostrado abaixo, que inclui três fios SCK, WS e SD.

  Diagrama de temporização do protocolo I2S
Diagrama de temporização do protocolo I2S

No diagrama acima, primeiro, o relógio serial  tem uma frequência = taxa de amostragem * bits para cada canal * não. de canais). A linha de seleção de palavras é a segunda linha que muda entre '1' para o canal direito e '0' para o canal esquerdo.

A terceira linha é a linha de dados serial onde os dados são transmitidos em cada ciclo de clock na borda descendente denotada com pontos de HIGH a LOW.

Além disso, podemos notar que a linha WS varia um ciclo CLK antes que o MSB seja transmitido, o que dá ao receptor tempo para armazenar a palavra anterior e limpar o registro de entrada para a próxima palavra. O MSB é enviado quando o SCK muda após o WS mudar.

Sempre que um dado é transmitido entre o transmissor e o receptor, haveria um atraso de propagação  que seria

atraso de propagação = (diferença de tempo entre o relógio externo e o relógio interno do receptor)+(diferença de tempo entre o relógio interno e quando os dados são recebidos).

Para minimizar o atraso de propagação e para sincronização da transmissão de dados entre o transmissor e o receptor, é necessário que o transmissor tenha um período de relógio de

T > tr  – Assumir que T é o período de clock do transmissor e tr é o período de clock mínimo do transmissor.

Na condição acima, se considerarmos, por exemplo, um transmissor  com a taxa de transmissão de dados de 2,5 MHz, então:

tr = 360ns

clock THC alto (mínimo) >0,35 T.

clock Baixo tLC (mínimo> > 0,35T.

Receptor como escravo com taxa de transmissão de dados de 2,5 MHz então:

clock THC alto (mínimo) < 0,35 T

clock Baixo tLC (mínimo) < 0,35T.

tempo de configuração tst(mínimo) < 0,20T.

Protocolo I2S Arduino

O objetivo principal deste projeto é fazer uma interface I2S  theremin usando a biblioteca Arduino I2S. Os componentes necessários para fazer este projeto são; Arduino MKR Zero, Protoboard , Fios jumper, Adafruit MAX98357A, 3W, alto-falante de 4 ohms e RobotGeek Slider.

A biblioteca Arduino I2S simplesmente permite que você transmita e receba dados de áudio digital pelo barramento I2S. Portanto, este exemplo tem como objetivo explicar como utilizar esta biblioteca para conduzir um I2S DAC para reproduzir o som calculado no design do Arduino.

Este circuito pode ser conectado como; O DAC I2S utilizado neste exemplo requer apenas três fios, bem como uma fonte de alimentação para o barramento I2S. As conexões para o I2S no Arduino MKRZero seguem como;

Dados seriais (SD) no pino A6;

Relógio serial (SCK) no pino2;

O quadro ou Word Select (FS) no pin3;

Trabalhando

Basicamente, o theremin tem dois controles de tom e volume. Assim, esses dois parâmetros são modificados movendo dois potenciômetros deslizantes, no entanto, você também pode ajustá-los para lê-los. Os dois potenciômetros são conectados em forma de divisor de tensão, então movendo esses potenciômetros você obterá valores de 0 a 1023. Depois disso, esses valores são mapeados entre a frequência máxima e mínima e o volume mínimo e máximo.

  Diagrama I2S Thermin
Diagrama I2S Thermin

O som transmitido no barramento I2S é uma onda senoidal simples cuja amplitude e frequência são modificadas com base na leitura dos potenciômetros.

Código

O código para fazer a interface de um Theremin com um Arduino MKRZero, potenciômetros de 2 controles deslizantes e um I2S DAC é fornecido abaixo.

#include

const int maxFrequência = 5000; //frequência máxima gerada
const int minFrequência = 220; //frequência mínima gerada
const int maxVolume = 100; //volume máximo da frequência gerada
const int minVolume = 0; //volume min da frequencia gerada
const int sampleRate = 44100; //amostra da frequência gerada
const int wavSize = 256; //tamanho do buffer
seno curto[wavSize]; //buffer no qual os valores do seno são armazenados
const int frequênciaPin = A0; //pino conectado ao potenciômetro que determina a frequência do sinal
const int amplitudePin = A1; //pino conectado ao potenciômetro que determina a amplitude do sinal
botão const int = 6; //pin conectado ao controle do botão  para exibir a frequência

void configuração()
{

Serial.begin(9600); //configura a porta serial
// Inicializa o transmissor I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println(“Falha ao inicializar I2S!”);

enquanto (1);
}

gerarSeno(); // preenche buffer com valores de seno
pinMode(botão, INPUT_PULLUP); //coloca o pino do botão no pullup de entrada

}
void loop() {

if (digitalRead(botão) == BAIXO)

{

frequência float = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //frequência do mapa
int amplitude = map(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); //amplitude do mapa
playWave(frequência, 0,1, amplitude); //tocar música
//imprime valores em serial
Serial.print(“Frequência = “);
Serial.println(frequência);
Serial.print(“Amplitude = “);
Serial.println(amplitude);

}

}
void gerarSeno() {
for (int i = 0; i < wavSize; ++i) {
seno[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 é usado para não ter números pequenos
}
}
void playWave(frequência flutuante, segundos flutuantes, amplitude int) {
// Reproduz o buffer de forma de onda fornecido para o
// quantidade de segundos.
// Primeiro calcule quantas amostras precisam ser reproduzidas para serem executadas
// para a quantidade desejada de segundos.

iterações sem sinal = segundos * sampleRate;

// Em seguida, calcule a 'velocidade' na qual nos movemos pela onda
// buffer baseado na frequência do tom que está sendo tocado.

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

// Agora faça um loop por todas as amostras e as reproduza, calculando o
// posição dentro do buffer de onda para cada momento no tempo.

for (unsigned int i = 0; i < iterações; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
amostra curta = amplitude * seno[pos];

// Duplique a amostra para que ela seja enviada para os canais esquerdo e direito.
// Parece que a ordem é o canal direito, canal esquerdo se você quiser escrever
// som estéreo.

while (I2S.availableForWrite() < 2);
I2S.write(amostra);
I2S.write(amostra);

}
}

Diferença entre o protocolo I2C e I2S

A diferença entre o protocolo I2C e I2S inclui o seguinte.

2C

I2S

o protocolo I2C significa protocolo de barramento inter-IC O I2S significa protocolo Inter-IC Sound .
É usado principalmente para executar sinais entre circuitos integrados colocados em um PCB semelhante. É utilizado para conectar dispositivos de áudio digital.
Ele usa duas linhas entre vários mestres e escravos como SDA e SCL . Ele usa três linhas WS, SCK  & SD.
Ele suporta multi-master e multi-slave. Ele suporta um único mestre.
Este protocolo suporta alongamento CLK. Este protocolo não possui alongamento CLK.
O I2C inclui bits adicionais de início e parada de overhead. O I2S não inclui nenhum bit de partida e parada.

Vantagens

o vantagens do barramento I2S inclui o seguinte.

  • O I2S utiliza linhas de dados CLK e seriais separadas. Portanto, possui designs de receptores muito simples em comparação com sistemas assíncronos.
  • É um único dispositivo mestre, portanto, não há problemas com a sincronização de dados.
  • O microfone baseado em I2S o/p não precisa de um front-end analógico, mas é utilizado em um microfone sem fio usando um transmissor digital. Ao usar isso, você pode ter uma conexão totalmente digital entre o transmissor e o transdutor.

Desvantagens

o desvantagens do barramento I2S inclui o seguinte.

  • O I2S não é proposto para transferência de dados através de cabos.
  • I2S não é suportado em aplicativos de alto nível.
  • Este protocolo tem um problema de sincronização entre três linhas de sinal que é notado em alta taxa de bits e frequência de amostragem. Portanto, esse problema ocorre principalmente devido à variação dos atrasos de propagação entre as linhas de clock e as linhas de dados.
  • O I2S não inclui um mecanismo de detecção de erros, portanto, pode causar erros na decodificação de dados.
  • É utilizado principalmente para comunicação inter-IC em um PCB semelhante.
  • Não há conectores e cabos de interconexão típicos para I2S, portanto, designers diferentes usam conectores diferentes.

Formulários

o aplicações do protocolo I2S inclui o seguinte.

  • I2S é usado para conectar dispositivos de áudio digital.
  • Este protocolo é amplamente utilizado na transferência de dados de áudio de um DSP ou microcontrolador para um codec de áudio para reproduzir áudio.
  • Inicialmente, a interface I2S é utilizada em projetos de CD player. Agora, ele pode ser encontrado onde os dados de áudio digital estão sendo enviados entre os ICs.
  • I2S é usado em DSPs, ADCs de áudio, DACs, microcontroladores, conversores de taxa de amostragem, etc.
  • O I2S foi especialmente projetado para uso entre circuitos integrados para comunicação de dados de áudio digital.
  • Esse protocolo desempenha um papel fundamental na conexão do microcontrolador e seus dispositivos periféricos quando o I2S se concentra na transmissão de dados de áudio entre dispositivos de áudio digital.

Assim, trata-se de uma visão geral do Especificação do protocolo I2S que inclui trabalho, diferenças e suas aplicações. I²S é um protocolo serial síncrono de 3 fios usado para transferir áudio estéreo digital entre dois circuitos integrados. o Analisador de protocolo I2S é um decodificador de sinal que inclui todos os Analisadores Lógicos DigiView. Este software DigiView simplesmente fornece recursos amplos de pesquisa, navegação, exportação, medição, plotagem e impressão para todos os tipos de sinais. Aqui está uma pergunta para você, qual é o protocolo I3C?