Tutorial sobre protocol I2C, interfície amb aplicacions

Proveu El Nostre Instrument Per Eliminar Problemes





Avui en dia els protocols tenen un paper essencial en el disseny de sistemes incrustats . Sense anar als protocols, si voleu ampliar les funcions perifèriques del microcontrolador, augmentarà la complexitat i el consum d'energia. Hi ha diferents tipus de protocols de bus disponibles, com ara USART, SPI, CAN, Protocol bus I2C , etc., que s’utilitzen per transferir les dades entre dos sistemes.

Protocol I2C

Què és l'autobús I2C?




La transmissió i la recepció de la informació entre dos o més de dos dispositius requereixen un camí de comunicació anomenat sistema de bus. Un bus I2C és un bus serial bidireccional de dos cables que s’utilitza per transportar les dades entre circuits integrats. L'I2C significa 'Circuit integrat inter'. Va ser introduït per primera vegada pels semiconductors de Philips el 1982. El bus I2C consta de tres velocitats de transferència de dades com ara el mode estàndard, el mode ràpid i el mode d'alta velocitat. El bus I2C admet dispositius d'espai d'adreces de 7 i 10 bits i el seu funcionament difereix amb voltatges baixos.

Protocol de bus I2c

Protocol de bus I2c



Línies de senyal I2C

Línies de senyal I2C

Línies de senyal I2C

L'I2C és un protocol de bus sèrie format per dues línies de senyal, com ara línies SCL i SDL, que s'utilitzen per comunicar-se amb els dispositius. El SCL significa una 'línia de rellotge en sèrie' i aquest senyal sempre el condueix el 'dispositiu mestre'. El SDL significa 'línia de dades de sèrie', i aquest senyal és conduït pels perifèrics mestre o I2C. Ambdues línies SCL i SDL estan en estat de drenatge obert quan no hi ha transferència entre perifèrics I2C.

Sortides de drenatge obert


El desguàs obert és el concepte de transistor FET on el terminal de drenatge del transistor és obert. Els pins SDL i SCL del dispositiu mestre estan dissenyats amb els transistors en estat obert, de manera que la transferència de dades només és possible quan es duen a terme aquests transistors. Per tant, aquestes línies o terminals de drenatge estan connectats amb resistències de tracció completes a VCC per al mode de conducció.

Interfícies I2C

Molts els dispositius esclaus estan connectats al microcontrolador amb l'ajut del bus I2C a través del commutador de nivell I2C IC per transferir la informació entre ells. El protocol I2C utilitzat per connectar un màxim de 128 dispositius connectats per comunicar-se amb les línies SCL i SDL de la unitat mestra, així com amb els dispositius esclaus. Admet la comunicació Multimaster, el que significa que s’utilitzen dos mestres per comunicar els dispositius externs.

Tarifes de transferència de dades I2C

El protocol I2C opera tres modes, com ara: mode ràpid, mode d'alta velocitat i mode estàndard, en què la velocitat de les dades del mode estàndard oscil·la entre 0Hz i 100Hz i les dades del mode ràpid es poden transferir amb una velocitat de 0Hz a 400 KHz i el mode d'alta velocitat amb 10. KHz a 100KHz. Les dades de 9 bits s’envien per a cada transferència en què el transmissor MSB envia 8 bits a LSB, i el 9è bit és un bit de confirmació enviat pel receptor.

Tarifes de transferència de dades I2C

Tarifes de transferència de dades I2C

Comunicació I2C

El protocol de bus I2C s’utilitza amb més freqüència en la comunicació mestra i esclava, en què el mestre s’anomena “microcontrolador” i l’esclau s’anomena altres dispositius com ADC, EEPROM, DAC i dispositius similars del sistema incrustat. El nombre de dispositius esclaus es connecta al dispositiu mestre amb l'ajuda del bus I2C, on cada esclau consisteix en una adreça única per comunicar-lo. Els passos següents s’utilitzen per comunicar el dispositiu mestre a l’esclau:

Pas 1: En primer lloc, el dispositiu mestre emet una condició inicial per informar tots els dispositius esclaus perquè escoltin a la línia de dades sèrie.

Pas 2: El dispositiu mestre envia l’adreça del dispositiu esclau de destinació que es compara amb totes les adreces dels dispositius esclaus connectades a les línies SCL i SDL. Si algú adreça coincideix, aquest dispositiu està seleccionat i la resta de dispositius es desconnecten de les línies SCL i SDL.

Pas 3: El dispositiu esclau amb una adreça coincident rebuda del mestre, respon amb un reconeixement al mestre després, s'estableix la comunicació entre els dispositius mestre i esclau al bus de dades.

Pas 4: Tant el mestre com l'esclau reben i transmeten les dades en funció de si es llegeix o escriu la comunicació.

Pas 5: Aleshores, el mestre pot transmetre dades de 8 bits al receptor, que respon amb una confirmació d’1 bit.

I2C Tutorial

Transmetre i rebre la informació pas a pas en sèrie respecte als polsos de rellotge s’anomena protocol I2C. És un protocol entre sistemes i de distància curta, el que significa que s’utilitza a la placa de circuits per comunicar els dispositius mestre i esclau.

Conceptes bàsics del protocol I2C

En general, el sistema de bus I2C consta de dos cables que s’utilitzen fàcilment per ampliar les funcions perifèriques d’entrada i sortida, com ara ADC, EEROM i RTC, i altres components bàsics fer un sistema la complexitat del qual sigui molt menor.

Exemple: Com que el microcontrolador 8051 no té cap ADC integrat, per tant, si volem connectar cap sensor analògic al microcontrolador 8051, hem d’utilitzar dispositius ADC com ADC0804-1 ADC de canal, ADC0808- ADC de 8 canals, etc. podem connectar els sensors analògics al microcontrolador.

Sense utilitzar el protocol per ampliar les funcions d'E / S de cap microcontrolador o processador, podem anar al dispositiu 8255 ICit de 8 pins. El El microcontrolador 8051 és un microcontrolador de 40 pins mitjançant l'IC 8255, podem ampliar els ports de 3-I / O amb 8 pins a cada port. Mitjançant l’ús de tots els dispositius com RTC, ADC, EEPROM, temporitzadors, etc., per ampliar els circuits perifèrics, també augmenten la complexitat, el cost, el consum d’energia i la mida del producte.

Per superar aquest problema, apareix el concepte de protocol per reduir la complexitat del maquinari i el consum d'energia. Mitjançant aquest protocol I2C podem ampliar més funcions, com perifèrics I / 0, ADC, T / C i dispositius de memòria fins a 128 dispositius.
Terminologia utilitzada en protocols I2C

Emissor: El dispositiu que envia dades al bus s’anomena transmissor.

Receptor: El dispositiu que rep dades del bus s’anomena receptor.

Mestre: El dispositiu que inicia transferències per generar senyals de rellotge i finalitzar una transferència s’anomena mestre.

Esclau: El dispositiu dirigit per un mestre s’anomena esclau.

Multimaster: Més d'un mestre pot intentar controlar el bus alhora sense danyar el missatge que s'anomena Multimaster.

Arbitratge: Procediment per assegurar que, si més d'un mestre simultàniament intenta controlar el bus, només se'n permet un, el missatge guanyador no es corromp.

Sincronització: El procediment per sincronitzar els rellotges de dos o més dispositius s’anomena sincronització.

Seqüència d’ordres bàsiques I2C

  1. Estat de bits inicials
  2. Condició Stop Bit
  3. Condició de reconeixement
  4. Operació d'escriptura de mestre a esclau
  5. Llegiu Operació Esclau al mestre

Condició d'inici i aturada del bit

Quan el mestre (microcontrolador) vol parlar amb un dispositiu esclau (per exemple, ADC), comença la comunicació emetent una condició d’inici al bus I2C i després emet una condició d’aturada. Els nivells lògics d’inici i parada I2C es mostren a la figura.

La condició inicial I2C es defineix com una transició alta a baixa de la línia SDA mentre que la línia SCL és alta. Una condició de parada I2C es produeix quan la línia SDA canvia de menor a major mentre que la línia SCL és alta.

El mestre I2C sempre genera les condicions S i P. Quan el mestre I2C inicia una condició START, es considera que el bus I2c es troba en estat ocupat.

Condició d

Condició d'inici i aturada del bit

Programació:

INICI Condició:

sbit SDA = P1 ^ 7 // inicialitza els pins SDA i SCL del microcontrolador //
sbit SCL = P1 ^ 6
retard nul (int sense signar)
void main ()
{
SDA = 1 // processament de les dades //
SCL = 1 // el rellotge és alt //
retard()
SDA = 0 // ha enviat les dades //
retard()
SCL = 0 // el senyal del rellotge és baix //
}
Retard buit (int p)
{
unsignedinta, b
Per a (a = 0a<255a++) //delay function//
Per a (b = 0b}

Condició STOP:

void main ()
{
SDA = 0 // Deixa de processar les dades //
SCL = 1 // el rellotge és alt //
retard()
SDA = 1 // Aturat //
retard()
SCL = 0 // el senyal del rellotge és baix //
}
Retard buit (int p)
{
unsignedinta, b
Per a (a = 0a<255a++) //delay function//
Per a (b = 0b}

Condició de reconeixement (ACK) i de no reconeixement (NCK)

Cada byte transmès a través del bus I2C va seguit d'una condició de confirmació del receptor, el que significa que, després que el mestre estiri SCL per completar la transmissió de 8 bits, l'SDA serà baixat pel receptor al mestre. Si, després de la transmissió del receptor, la línia SDA BAIXA es considera una condició NCK.

Reconeixement (ACK)

Reconeixement (ACK)

Programació

Reconeixement
void main ()
{
SDA = 0 // La línia SDA passa a la baixa //
SCL = 1 // el rellotge és més alt //
retard (100)
SCL = 0
}
Sense reconeixement:
void main ()
{
SDA = 1 // La línia SDA passa a la pujada //
SCL = 1 // el rellotge és més alt //
retard (100)
SCL = 0
}

Escriu l’operació Master to Slave

El protocol I2C transfereix les dades en forma de paquets o bytes. A cada byte li segueix un bit de confirmació.

Format de transferència de dades

Format de transferència de dades

Format de transferència de dades

Començar: Principalment, la seqüència de transferència de dades iniciada pel mestre que genera la condició inicial.

Adreça de 7 bits: Després, el mestre envia l'adreça esclava en dos formats de 8 bits en lloc d'una única adreça de 16 bits.

R / N: Si el bit de lectura i escriptura és alt, es realitza l'operació d'escriptura.

ALAS: Si l’operació d’escriptura es realitza al dispositiu esclau, el receptor envia l’ACK d’1 bit al microcontrolador.

Atura: Després de completar l'operació d'escriptura al dispositiu esclau, el microcontrolador envia la condició d'aturada al dispositiu esclau.

Programació

Operació d’escriptura

voidwrite (caràcter sense signar d)
{
Caràcter k sense signar, j = 0x80
Per a (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
retard (4)
SCL = 0
}
SDA = 1
SCL = 1
retard (2)
c = SDA
retard (2)
SCL = 0
}

Operació de lectura de mestre a esclau

Les dades es tornen a llegir des del dispositiu esclau en forma de bits o bytes: llegiu primer el bit més significatiu i llegiu el bit menys important.

El format de lectura de dades

Format de lectura de dades

Format de lectura de dades

Començar: Principalment, la seqüència de transferència de dades la inicia el mestre que genera la condició inicial.

Adreça de 7 bits: Després, el mestre envia l'adreça esclava en dos formats de 8 bits en lloc d'una única adreça de 16 bits.

R / N: Si el bit de lectura i escriptura és baix, es realitzarà l'operació de lectura.

ALAS: Si l’operació d’escriptura es realitza al dispositiu esclau, el receptor envia l’ACK d’1 bit al microcontrolador.

Atura: Després de completar l'operació d'escriptura al dispositiu esclau, el microcontrolador envia la condició d'aturada al dispositiu esclau.

Programació

Llegit buit ()
{
Caràcter sense signe j, z = 0x00, q = 0x80
SDA = 1
per a (j = 0j<8j++)
{
SCL = 1
retard (100)
flag = SDA
if (marca == 1)
q)
q = q >> 1
retard (100)
SCL = 0

Exemple pràctic d'interfície d'ADC amb el microcontrolador 8051

L’ADC és un dispositiu que s’utilitza per convertir les dades analògiques en forma de digital i digital a analògic. El microcontrolador 8051 no té un ADC integrat, de manera que hem d’afegir externament mitjançant el protocol I2C. El PCF8591 està basat en I2C analògic a digital i convertidor digital a analògic. Aquest dispositiu pot suportar un màxim de 4 canals d'entrada analògics juntament amb voltatges de 2,5 a 6v.

Sortides analògiques

Les sortides analògiques es presenten en forma de tensions. Per exemple, el sensor analògic de 5v proporciona una lògica de sortida de 0,01v a 5v.
El valor digital màxim de 5v és = 256.
El valor de 2,5 v és = 123 segons el valor màxim de la tensió.

La fórmula de la sortida analògica és:

La fórmula de les sortides digitals:

Interfície d

Interfície d'ADC amb el microcontrolador 8051

La figura anterior mostra la transferència de dades mitjançant el protocol I2C des del dispositiu ADC al microcontrolador 8051. Els pins ADC de SCL i SDA estan connectats als pins 1.7 i 1.6 del microcontrolador per establir la comunicació entre ells. Quan el sensor dóna valors analògics a l'ADC, es converteix en digital i transfereix dades al microcontrolador mitjançant el protocol I2C.

Es tracta del tutorial de protocol de bus I2C amb els programes adequats. Esperem que el contingut donat us doni un concepte pràctic d’interfacar diversos dispositius amb microcontroladors mitjançant la comunicació I2C. Si teniu cap dubte sobre el procediment d'interfície d'aquest protocol, podeu contactar amb nosaltres fent un comentari a continuació.