Protocol I2S: funcionament, diferències i les seves aplicacions

Proveu El Nostre Instrument Per Eliminar Problemes





Sistemes digitals i els seus requisits de dades d'àudio dins de telèfons mòbils, ordinadors i Domòtica productes han canviat dràsticament durant un període de temps. El senyal d'àudio des o cap als processadors s'està digitalitzant. Aquestes dades en diferents sistemes es processen a través de molts dispositius com DSP , ADC, DAC, interfícies d'E/S digital, etc. Per tal que aquests dispositius es comuniquin dades d'àudio entre si, cal un protocol estàndard. Un d'aquests és el protocol I2S. És una interfície de bus sèrie, dissenyada per Philip Semiconductor el febrer de 1986 per a la interfície d'àudio digital entre els dispositius. Aquest article tracta una visió general de I Protocol 2S està treballant amb aplicacions.


Què és el protocol I2S?

El protocol que s'utilitza per transmetre dades d'àudio digital d'un dispositiu a un altre dispositiu es coneix com a protocol I2S o Inter-IC Sound. Aquest protocol transmet dades d'àudio PCM (modulació de codi de pols) d'un IC a un altre dins d'un dispositiu electrònic. I2S té un paper clau en la transmissió de fitxers d'àudio que s'enregistren prèviament des d'un MCU a un DAC o amplificador. Aquest protocol també es pot utilitzar per digitalitzar àudio mitjançant un micròfon. No hi ha compressió dins dels protocols I2S, de manera que no podeu reproduir OGG o MP3 ni altres formats d'àudio que condensin l'àudio, però podeu reproduir fitxers WAV.



Característiques

El Característiques del protocol I2S incloure el següent.

  • Té de 8 a 32 bits de dades per a cada mostra.
  • Tx & Rx FIFO interrupcions.
  • És compatible amb DMA.
  • Període de selecció de paraules de 16 bits, 32 bits, 48 ​​bits o 64 bits.
  • Transmissió d'àudio bidireccional simultània.
  • Amplada de mostra de 8 bits, 16 bits i 24 bits.
  • Té diferents freqüències de mostreig.
  • La velocitat de dades és de fins a 96 kHz durant el període de selecció de paraules de 64 bits.
  • FIFO estèreo intercalats o FIFO de canal dret i esquerre independents
  • Habilitació independent de Tx & Rx.

Protocol de comunicació I2S funcionant

El I2S protocol de comunicació és un protocol de 3 fils que gestiona simplement dades d'àudio a través d'un bus sèrie de 3 línies que inclou SCK (Continuous Serial Clock), WS (Word Select) i SD (Serial Data).



Connexió de 3 fils d'I2S:

SCK

El SCK o rellotge sèrie és la primera línia del protocol I2S que també es coneix com a BCLK o línia de rellotge de bits que s'utilitza per obtenir les dades en un cicle similar. La freqüència del rellotge en sèrie es defineix simplement utilitzant la fórmula com Freqüència = Freqüència de mostreig x Bits per a cada canal x núm. de canals.

WS

En el protocol de comunicació I2S, el WS o la selecció de paraules és la línia que també es coneix com a cable FS (Frame Select) que separa el canal dret o esquerre.

Si WS = 0, s'utilitza el canal esquerre o el canal-1.

Si WS = 1, s'utilitza el canal dret o el canal-2.

SD

Les dades en sèrie o SD són l'últim cable on es transmet la càrrega útil en 2 complements. Per tant, és molt significatiu que el MSB es transfereixi primer, perquè tant el transmissor com el receptor poden incloure longituds de paraules diferents. Així, l'emissor o el receptor ha de reconèixer quants bits es transmeten.

  • Si la longitud de la paraula del receptor és més gran que la del transmissor, la paraula s'escurça (els bits LSB es posen a zero).
  • Si la longitud de la paraula del receptor és menor que la longitud de la paraula del transmissor, els bits LSB s'ignoren.

El transmissor pot enviar les dades tant al front davanter o posterior del pols del rellotge . Això es pot configurar en el corresponent registres de control . Però el el receptor tanca les dades en sèrie i WS només a la vora del pols del rellotge . El transmissor transmet dades només després d'un pols de rellotge després del canvi en WS. El receptor utilitza el senyal WS per a la sincronització de les dades en sèrie.

Components de xarxa I2S

Quan es connecten diversos components I2S entre si, això s'anomena xarxa I2S. El component d'aquesta xarxa inclou diferents noms i també diferents funcions. Per tant, el diagrama següent mostra 3 xarxes diferents. Aquí s'utilitza una placa ESP NodeMCU com a transmissor i una placa d'interrupció d'àudio I2S com a receptor. Els tres cables utilitzats per connectar el transmissor i el receptor són SCK, WS i SD.

  Components de xarxa I2S
Components de xarxa I2S

Al primer diagrama, el transmissor (Tx) és el mestre, de manera que controla les línies SCK (rellotge sèrie) i WS (selecció de paraula).

En el segon diagrama, el receptor és el mestre. Així, les dues línies SCK i WS comencen des del receptor i acaba l'emissor.

Al tercer diagrama, un controlador exterior està connectat als nodes de la xarxa que funciona com el dispositiu mestre. Així, aquest dispositiu genera el SCK & WS.

A les xarxes I2S sobretot, només hi ha un únic dispositiu mestre disponible i molts altres components que transmeten o reben dades de so.

A I2S qualsevol dispositiu pot ser el mestre proporcionant el senyal del rellotge.

Diagrama de temps I2S

Per a una millor comprensió de l'I2S i la seva funcionalitat, tenim el diagrama de temps del protocol de comunicació I2S que es mostra a continuació. A continuació es mostra el diagrama de temps del protocol I2S que inclou tres cables SCK, WS i SD.

  Diagrama de temporització del protocol I2S
Diagrama de temporització del protocol I2S

Al diagrama anterior, primer, el rellotge sèrie  té una freqüència = freqüència de mostreig * bits per a cada canal * núm. de canals). La línia de selecció de paraules és la segona línia que canvia entre '1' per al canal dret i '0' per al canal esquerre.

La tercera línia és la línia de dades en sèrie on les dades es transmeten en cada cicle de rellotge a la vora descendent indicada amb punts d'ALT a BAIX.

A més, podem notar que la línia WS varia un cicle CLK abans que es transmeti el MSB, cosa que dóna temps al receptor per emmagatzemar la paraula anterior i esborrar el registre d'entrada de la paraula següent. L'MSB s'envia quan SCK canvia després de canvis de WS.

Sempre que es transmeten dades entre l'emissor i el receptor hi hauria un retard de propagació que seria

retard de propagació = (diferència de temps entre el rellotge extern i el rellotge intern del receptor) + (diferència de temps entre el rellotge intern i quan es reben les dades).

Per minimitzar el retard de propagació i per a la sincronització de la transmissió de dades entre el transmissor i el receptor, cal que el transmissor tingui un període de rellotge de

T > tr  – Suposar que T és el període de rellotge del transmissor i tr és el període de rellotge mínim del transmissor.

Sota la condició anterior si considerem per exemple a transmissor amb la velocitat de transmissió de dades de 2,5 MHz i després:

tr = 360ns

rellotge Alt tHC (mínim) > 0,35 T.

rellotge TLC baix (mínim> > 0,35 T.

Receptor com a esclau amb una velocitat de transmissió de dades de 2,5 MHz, llavors:

rellotge THC alt (mínim) < 0,35 T

rellotge TLC baix (mínim) < 0,35 T.

temps de configuració tst (mínim) < 0,20 T.

Protocol I2S Arduino

L'objectiu principal d'aquest projecte és fer una interfície I2S  theremin utilitzant la biblioteca Arduino I2S. Els components necessaris per fer aquest projecte són; Arduino MKR Zero, Tauler , cables de pont, Adafruit MAX98357A, 3W, altaveu de 4 ohms i RobotGeek Slider.

La biblioteca Arduino I2S simplement us permet transmetre i rebre dades d'àudio digital a través del bus I2S. Per tant, aquest exemple té com a objectiu explicar com utilitzar aquesta biblioteca per conduir un DAC I2S per reproduir el so calculat en el disseny d'Arduino.

Aquest circuit es pot connectar com; El DAC I2S utilitzat en aquest exemple requereix només tres cables, així com una font d'alimentació per al bus I2S. Les connexions per a l'I2S a l'Arduino MKRZero segueixen com;

Dades en sèrie (SD) al pin A6;

Rellotge sèrie (SCK) al pin2;

El marc o Word Select (FS) al pin3;

Treball

Bàsicament, el theremin té dos controls de to i volum. Per tant, aquests dos paràmetres es modifiquen movent dos potenciòmetres lliscants, però també podeu ajustar-los per llegir-los. Els dos potenciòmetres estan connectats en forma de divisor de tensió, de manera que movent aquests potenciòmetres obtindreu valors de 0 a 1023. Després d'això, aquests valors es mapegen entre la freqüència màxima i mínima i el volum mínim i més alt.

  Diagrama I2S Thermin
Diagrama I2S Thermin

El so transmès al bus I2S és una ona sinusoïdal simple l'amplitud i freqüència de la qual es modifica en funció de la lectura dels potenciòmetres.

Codi

A continuació es mostra el codi per connectar un Theremin amb un Arduino MKRZero, potenciòmetres de 2 lliscants i un DAC I2S.

#inclou

const int maxFrequency = 5000; //freqüència màxima generada
const int minFrequency = 220; //freqüència mínima generada
const int maxVolume = 100; //volum màxim de la freqüència generada
const int minVolum = 0; //min volum de la freqüència generada
const int sampleRate = 44100; //taxa de mostreig de la freqüència generada
const int wavSize = 256; //mida del buffer
sinus curt[wavSize]; //búfer on s'emmagatzemen els valors del sinus
const int frequencyPin = A0; //pin connectat al pot que determina la freqüència del senyal
const int amplitudPin = A1; //pin connectat al pot que determina l'amplitud del senyal
botó const int = 6; //pin connectat al control del botó per mostrar la freqüència

void setup ()
{

Serial.begin(9600); //configurem el port sèrie
// Inicialitzar el transmissor I2S.
if (!I2S.begin(I2S_PHILIPS_MODE, sampleRate, 16)) {
Serial.println('No s'ha pogut inicialitzar I2S!');

mentre que (1);
}

generaSine(); // ompliu la memòria intermèdia amb valors sinus
pinMode(botó, INPUT_PULLUP); //posar el pin del botó a l'entrada pullup

}
bucle buit() {

if (digitalRead(botó) == BAIX)

{

freqüència flotant = map(analogRead(frequencyPin), 0, 1023, minFrequency, maxFrequency); //freqüència del mapa
int amplitud = map(analogRead(amplitudePin), 0, 1023, minVolume, maxVolume); // amplitud del mapa
playWave (freqüència, 0,1, amplitud); //reprodueix el so
//imprimeix valors en sèrie
Serial.print ('Freqüència = ');
Serial.println(freqüència);
Serial.print ('Amplitud = ');
Serial.println(amplitud);

}

}
void generateSine() {
per (int i = 0; i
sine[i] = ushort(float(100) * sin(2.0 * PI * (1.0 / wavSize) * i)); //100 s'utilitza per no tenir nombres petits
}
}
void playWave (freqüència flotant, segons float, amplitud int) {
// Reprodueix el buffer de forma d'ona proporcionat per a l'especificat
// quantitat de segons.
// Calculeu primer quantes mostres s'han de reproduir per executar
// durant la quantitat de segons desitjada.

unsigned int iteracions = segons * sampleRate;

// A continuació, calculeu la ‘velocitat’ a la qual ens movem per l’ona
// buffer basat en la freqüència del to que s'està reproduint.

float delta = (freqüència * wavSize) / float (sampleRate);

// Ara recorre totes les mostres i reprodueix-les, calculant el
// posició dins del buffer d'ones per a cada moment en el temps.

for (unsigned int i = 0; i < iteracions; ++i) {
short pos = (unsigned int)(i * delta) % wavSize;
mostra curta = amplitud * sinus[pos];

// Dupliqueu la mostra perquè s'enviï tant als canals esquerre com dret.
// Sembla que l'ordre és el canal dret, el canal esquerre si voleu escriure
// so estèreo.

mentre que (I2S.availableForWrite() <2);
I2S.write(mostra);
I2S.write(mostra);

}
}

Diferència entre el protocol I2C i I2S

La diferència entre el protocol I2C i I2S inclou el següent.

2C

I2S

El Protocol I2C significa protocol inter-IC bus L'I2S significa Protocol Inter-IC Sound .
S'utilitza principalment per executar senyals entre circuits integrats col·locats en un PCB similar. S'utilitza per connectar dispositius d'àudio digital.
Utilitza dues línies entre diversos mestres i esclaus com SDA i SCL . Utilitza tres línies WS, SCK  i SD.
Admet multi-mestre i multi-esclau. Admet un únic mestre.
Aquest protocol admet estiraments CLK. Aquest protocol no té estirament CLK.
I2C inclou bits d'inici i parada addicionals. I2S no inclou cap bit d'inici i parada.

Avantatges

El avantatges del bus I2S incloure el següent.

  • I2S utilitza línies de dades CLK i sèrie separades. Per tant, té dissenys de receptors molt simples en comparació amb els sistemes asíncrons.
  • És un únic dispositiu mestre, de manera que no hi ha cap problema amb la sincronització de dades.
  • El micròfon basat en I2S o/p no necessita una part frontal analògica, però s'utilitza dins d'un micròfon sense fil mitjançant un transmissor digital. Amb això, podeu tenir una connexió totalment digital entre el transmissor i el transductor.

Desavantatges

El desavantatges del bus I2S incloure el següent.

  • I2S no es proposa per transferir dades a través de cables.
  • I2S no és compatible amb les aplicacions d'alt nivell.
  • Aquest protocol té un problema de sincronització entre tres línies de senyal que es nota a alta velocitat de bits i freqüència de mostreig. Per tant, aquest problema es produeix principalment a causa de la variació dels retards de propagació entre les línies de rellotge i les línies de dades.
  • I2S no inclou un mecanisme de detecció d'errors, de manera que pot provocar errors en la descodificació de dades.
  • S'utilitza principalment per a la comunicació inter-IC en un PCB similar.
  • No hi ha connectors i cables d'interconnexió típics per a I2S, de manera que diferents dissenyadors utilitzen connectors diferents.

Aplicacions

El aplicacions del protocol I2S incloure el següent.

  • I2S s'utilitza per connectar dispositius d'àudio digital.
  • Aquest protocol s'utilitza àmpliament per transferir dades d'àudio des d'un DSP o microcontrolador a un còdec d'àudio per reproduir àudio.
  • Inicialment, la interfície I2S s'utilitza en dissenys de reproductors de CD. Ara, es pot trobar on s'envien dades d'àudio digital entre circuits integrats.
  • I2S s'utilitza en DSP, ADC d'àudio, DAC, microcontroladors, convertidors de freqüència de mostreig, etc.
  • I2S està especialment dissenyat per utilitzar-se entre circuits integrats per comunicar dades d'àudio digital.
  • Aquest protocol juga un paper clau a l'hora de connectar el microcontrolador i els seus dispositius perifèrics quan l'I2S se centra en la transmissió de dades d'àudio entre dispositius d'àudio digitals.

Per tant, tot es tracta d'una visió general del Especificació del protocol I2S que inclou el treball, les diferències i les seves aplicacions. I²S és un protocol sèrie síncron de 3 cables s'utilitza per transferir àudio estèreo digital entre dos circuits integrats. El Analitzador de protocols I2S és un descodificador de senyal que inclou tots els analitzadors lògics DigiView. Aquest programari DigiView només proporciona capacitats de cerca, navegació, exportació, mesura, traçat i impressió àmplia a tot tipus de senyals. Aquí teniu una pregunta per a vosaltres, què és el protocol I3C?