Interfície RTC (DS1307) amb microcontrolador i la seva programació

Proveu El Nostre Instrument Per Eliminar Problemes





RTC és un dispositiu electrònic que té un paper essencial a disseny de sistemes incrustats en temps real . Proporciona una data i hora precisa en diverses aplicacions, com ara el rellotge del sistema, el sistema d'assistència dels estudiants i l'alarma, etc., que fan un seguiment de l'hora actual i proporciona un resultat coherent a la tasca respectiva. En aquest article es presenta la interfície RTC amb el microcontrolador 8051 i l'accés bàsic als registres interns.

Interfície RTC amb microcontrolador 8051

Interfície RTC amb microcontrolador 8051



Programació i interfície RTC

La interfície RTC amb el microcontrolador 8051 és similar a la resta de tipus de 'Rellotges en temps real' que hi estan interfaciats. Vegem la interfície RTC senzilla amb Microcontrolador 8051 i procediment de programació que hi participa.


Pas 1: seleccioneu el dispositiu RTC

Els diversos tipus de xips RTC estan disponibles al món incrustat en temps real, que es classifiquen en funció de diversos criteris, com ara el tipus de paquet, la tensió d’alimentació i la configuració de pins, etc. Alguns tipus de dispositius RTC són:



  • Interfície sèrie de dos cables (bus I2C)
  • Interfície sèrie de tres cables (BUS USB)
  • Interfície sèrie de quatre fils (BUS SPI)

En primer lloc, hem de seleccionar el tipus de dispositiu RTC per categoria en funció de requisits com I2C Bus RTC o SPI Bus RTC o un altre, que s’adapti a la interfície amb els respectius microcontroladors. A continuació, podem seleccionar funcions del dispositiu RTC en funció del requisit d’aplicació, com ara la durada de la bateria, el paquet adequat i la freqüència de rellotge. Considerem la interfície de dos fils RTC amb microcontrolador 8051 com DS1307 .

Pas 2: registre intern i adreça del dispositiu RTC

RTC significa rellotge en temps real que proporciona anys, mesos, setmanes, dies, hores, minuts i segons segons la freqüència dels cristalls. RTC consisteix en incorporat Memòria RAM per emmagatzemar dades . Es proporcionarà una còpia de seguretat de la bateria en cas de fallada de la font d'alimentació principal mitjançant la connexió de la bateria al dispositiu RTC.

Configuració de RTC DB1307:

Blocs interns RTC i diagrama de pins

Blocs interns RTC i diagrama de pins

A0, A1, A2: són pins d'adreces del xip RTC DB1307, que es poden utilitzar per comunicar-se amb el dispositiu mestre. Podem controlar vuit dispositius amb interfície RTC amb Microcontrolador 8051 per bits A0, A1, A2 mitjançant el protocol I2C.


VCC i GND: VCC i GND són pins d'alimentació i de terra respectivament. Aquest dispositiu funcionava amb un rang d’1,8V a 5,5V.

VBT: VBT és un pin d'alimentació de la bateria. La font d'alimentació de la bateria s'ha de mantenir entre 2V i 3,5V.

SCL: SCL és un pin de rellotge sèrie i s’utilitza per sincronitzar les dades de la interfície sèrie.

SDL: És un pin d'entrada i sortida sèrie. S'utilitza per transmetre i rebre les dades en una interfície sèrie.

Rellotge: És un pin de sortida d'ona quadrada opcional.

OSC0 i OSC1: Es tracta de pins d'oscil·lador de cristall que s'utilitzen per proporcionar els senyals de rellotge al dispositiu RTC. La freqüència estàndard dels cristalls de quars és de 22.768 KHz.

Direcció del dispositiu:

El protocol de bus I2C permet dispositius esclaus a la vegada. Tots els dispositius esclaus han de consistir en una adreça pròpia per representar-hi. El dispositiu mestre es comunica amb un dispositiu esclau concret mitjançant una adreça. L'adreça del dispositiu RTC és '0xA2', en què '1010' és proporcionada pel fabricant i A0, A1, A2 són l'adreça de definició de l'usuari, que s'utilitza per comunicar vuit dispositius RTC a la Protocol bus I2C .

Addició de dispositius

Addició de dispositius

El bit R / W s’utilitza per realitzar operacions de lectura i escriptura a RTC. Si R / W = 0, es realitza l'operació d'escriptura i R / W = 1 per a l'operació de lectura.

Adreça de l'operació de lectura de RTC = '0xA3'

Adreça de l'operació d'escriptura de RTC = '0xA2'

Registres de memòria i adreça:

Els registres RTC es troben a ubicacions d’adreces de 00h a 0Fh i els registres de memòria RAM es troben a ubicacions d’adreces de 08h a 3Fh, tal com es mostra a la figura. Els registres RTC s’utilitzen per proporcionar la funcionalitat del calendari i l’hora del disc i mostrar els caps de setmana.

Registres de memòria i adreça

Registres de memòria i adreça

Registres de control / estat:

DB1307 consta de dos registres addicionals com control / status1 i control / status2 que s’utilitzen per controlar el rellotge en temps real i interromp .

Registre de control / estat 1:

Registre d’estat de control

Registre d’estat de control

  • TEST1 = 0 mode normal

= 1 mode de prova del rellotge EXT

  • STOP = 0 s'inicia RTC

= 1 parada RTC

  • TESTC = 0 restabliment d'encesa desactivat

= restabliment de l'engegada habilitat

Registre de control / estat2:

Registre d

Registre d'estat de control2

  • TI / TP = 0 INT actiu tot el temps

= 1 INT temps actiu necessari

  • AF = 0 L'alarma no coincideix

= 1 coincidència d'alarma

  • TF = 0 No es produeix un desbordament del temporitzador

= 1 Es produeix un desbordament del temporitzador

  • ALE = 0 Desactiva les interrupcions d'alarma

= 1 S'han activat les interrupcions d'alarma

  • TIE = 0 Desactiva les interrupcions del temporitzador

= 1 Activació de les interrupcions del temporitzador

Pas 3: Interfacer RTC ds1307 amb 8051

RTC pot ser interfície amb microcontrolador mitjançant diferents protocols de bus sèrie com I2C i Protocols SPI que proporcionen un vincle de comunicació entre ells. La figura mostra la interfície de rellotge en temps real amb el microcontrolador 8051 mitjançant el protocol de bus I2C. I2C és un protocol serial bidireccional, que consisteix en dos cables com SCL i SDA per transferir dades entre dispositius connectats al bus. El microcontrolador 8051 no té cap dispositiu RTC incorporat, per tant, ens hem connectat externament mitjançant un comunicació en sèrie per garantir les dades consistents.

Interfície RTC amb microcontrolador 8051

Interfície RTC amb microcontrolador 8051

Els dispositius I2C tenen sortides de drenatge obertes, per tant, s'han de connectar resistències de tracció a la línia de bus I2C amb una font de tensió. Si les resistències no estan connectades a les línies SCL i SDL, el bus no funcionarà.

Pas 4: format d’emmarcament de dades RTC

Com que la interfície RTC amb el microcontrolador 8051 utilitza bus I2C, per tant, la transferència de dades té la forma de bytes o paquets i cada byte va seguit d'un reconeixement.

Transmissió de marc de dades:

En mode de transmissió, el mestre allibera la condició d'inici després de seleccionar el dispositiu esclau per bit d'adreça. El bit d'adreça conté 7 bits, que indiquen els dispositius esclaus com a adreça ds1307. Les dades de sèrie i el rellotge de sèrie es transmeten a les línies SCL i SDL. Les condicions START i STOP es reconeixen com a inici i finalització d’una transferència en sèrie. Les operacions de recepció i transmissió van seguides del bit R / W.

Transmissió de marc de dades

Transmissió de marc 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.

Adreça del registre de control / estat: L'adreça del registre de control / estat permet permetre els registres d'estat de control.

Registre de control / estat 1: El registre d'estat de control1 utilitzat per habilitar el dispositiu RTC

Registre de control / estat2: S'utilitza per habilitar i desactivar les interrupcions.

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

ALAS: Si l’operació d’escriptura es realitza al dispositiu esclau, el receptor envia 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.

Marc de dades de recepció:

Marc de dades de recepció

Marc de dades de recepció

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.

Adreça del registre de control / estat: L'adreça del registre de control / estat permet permetre registres d'estat de control.

Registre de control / estat1: el registre d’estat de control1 utilitzat per habilitar el dispositiu RTC

Registre de control / estat2: S'utilitza per habilitar i desactivar les interrupcions.

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

ALAS: Si l’operació d’escriptura es realitza al dispositiu esclau, el receptor envia 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.

Pas 5: programació RTC

Escriu operació de mestre a esclau:

  1. Emet la condició inicial de mestre a esclau
  2. Transferiu l'adreça esclava en mode d'escriptura a la línia SDL
  3. Envieu l'adreça del registre de control
  4. Envieu el control / estat registre1valor
  5. Envieu el valor de registre / control2 d'estat
  6. Envieu la data dels minuts, segons i hores semblants
  7. Envieu el bit de parada

#incloure

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
inici buit ()
amfitrions buits (caràcter sense signar)
retard (caràcter sense signar)

void main ()
{

començar()
write (0xA2) // adreça esclava //
write (0x00) // control de l'adreça del registre //
write (0x00) // control registre 1 valor //
write (0x00) // control regiter2 vlaue //
write (0x28) // valor sec //
escriure (0x50) // valor de minut //
write (0x02) // valor de les hores //
}

inici buit ()
{

SDA = 1 // processament de les dades //
SCL = 1 // el rellotge és alt //
retard (100)
SDA = 0 // ha enviat les dades //
retard (100)
SCL = 0 // el senyal del rellotge és baix //
}
escriptura nul·la (caràcter d sense signar)
{

caràcter sense signe k, j = 0 × 80
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
}
retard nul (int p)
{
unsignedinta, b
Per a (a = 0a<255a++) //delay function//
Per a (b = 0b}

Llegiu Operació d’esclau a mestre:

#incloure
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
inici buit ()
escriptura nul·la (caràcter signat)
void read ()
void ack ()
retard nul (caràcter sense signar)
void main ()
{
començar()
write (0xA3) // adreça esclava en mode de lectura //
llegir ()
Ai ()
sec = valor
}
inici buit ()
{

SDA = 1 // processament de les dades //
SCL = 1 // el rellotge és alt //
retard (100)
SDA = 0 // ha enviat les dades //
retard (100)
SCL = 0 // el senyal del rellotge és baix //
}
escriptura nul·la (caràcter d sense signar)
{

caràcter sense signe k, j = 0 × 80
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
}
retard nul (int p)
{
unsignedinta, b
Per a (a = 0a<255a++) //delay function//
Per a (b = 0b}
Llegit buit ()
{
Caràcter j sense signar, z = 0 × 00, q = 0 × 80
SDA = 1
per a (j = 0j<8j++)
{
SCL = 1
retard (100)
flag = SDA
if (marca == 1)

z = (z
void ack ()
{
SDA = 0 // La línia SDA passa a la baixa //
SCL = 1 // el rellotge és més alt //
retard (100)
SCL = 0
}

Aquests són els passos necessaris per a la interfície RTC amb el microcontrolador 8051. A més d’aquests passos, també es discuteixen en aquest article els marcs de dades utilitzats per transferir i rebre les dades per entendre els usuaris amb una programació adequada. Per obtenir més ajuda sobre aquest concepte, podeu deixar un comentari a continuació.