Interfacciamento RTC (DS1307) con microcontrollore e sua programmazione

Prova Il Nostro Strumento Per Eliminare I Problemi





RTC è un dispositivo elettronico che svolge un ruolo essenziale in progettazione di sistemi embedded in tempo reale . Fornisce un'ora e una data precise in varie applicazioni come l'orologio di sistema, il sistema di presenza degli studenti e l'allarme, ecc., Che tengono traccia dell'ora corrente e forniscono risultati coerenti per la rispettiva attività. Questo articolo presenta l'interfacciamento RTC con il micro-controllore 8051 e l'accesso di base ai registri interni.

Interfacciamento RTC con microcontrollore 8051

Interfacciamento RTC con microcontrollore 8051



Programmazione e interfaccia RTC

L'interfacciamento dell'RTC con il microcontrollore 8051 è simile a tutti gli altri tipi di 'Real Time Clock' ad esso interfacciati. Quindi diamo un'occhiata alla semplice interfaccia RTC con Microcontrollore 8051 e procedura di programmazione che lo coinvolge.


Passaggio 1: selezionare il dispositivo RTC

I vari tipi di chip RTC sono disponibili nel mondo embedded in tempo reale, che sono classificati in base a vari criteri come il tipo di pacchetto, la tensione di alimentazione e la configurazione dei pin, ecc. Alcuni tipi di dispositivi RTC sono



  • Interfaccia seriale a due fili (bus I2C)
  • Interfaccia seriale a tre fili (USB BUS)
  • Interfaccia seriale a quattro fili (SPI BUS)

Innanzitutto, dobbiamo selezionare il tipo di dispositivo RTC per categoria in base a requisiti come I2C Bus RTC o SPI Bus RTC o altro, che si adatta all'interfacciamento con il rispettivo microcontrollore. Quindi possiamo selezionare le caratteristiche del dispositivo RTC in base ai requisiti dell'applicazione come la durata della batteria, il pacchetto adatto e la frequenza di clock. Consideriamo l'interfaccia a due fili RTC con microcontrollore 8051 come DS1307 .

Passaggio 2: registro interno e indirizzo del dispositivo RTC

RTC sta per orologio in tempo reale che fornisce anni, mesi, settimane, giorni, ore, minuti e secondi in base alla frequenza del cristallo. RTC è costituito da integrato Memoria RAM per l'archiviazione dei dati . Verrà fornito un backup della batteria in caso di guasto dell'alimentazione principale collegando una batteria al dispositivo RTC.

Configurazione RTC DB1307:

Blocchi interni RTC e diagramma dei pin

Blocchi interni RTC e diagramma dei pin

A0, A1, A2: sono pin di indirizzo del chip RTC DB1307, che possono essere utilizzati per comunicare con il dispositivo master. Possiamo controllare otto dispositivi con interfaccia RTC Microcontrollore 8051 da bit A0, A1, A2 utilizzando il protocollo I2C.


VCC e GND: VCC e GND sono rispettivamente alimentazione e pin di terra. Questo dispositivo funziona con una gamma da 1,8 V a 5,5 V.

VBT: VBT è un pin di alimentazione della batteria. La fonte di alimentazione della batteria deve essere mantenuta tra 2 V e 3,5 V.

SCL: SCL è un pin di clock seriale e viene utilizzato per sincronizzare i dati sull'interfaccia seriale.

SDL: È un pin di ingresso e uscita seriale. Serve per trasmettere e ricevere i dati su interfaccia seriale.

Uscita orologio: È un pin di uscita a onda quadra opzionale.

OSC0 e OSC1: Questi sono i pin dell'oscillatore a cristallo che vengono utilizzati per fornire i segnali di clock al dispositivo RTC. La frequenza standard dei cristalli di quarzo è 22,768 KHz.

Indirizzamento del dispositivo:

Il protocollo bus I2C consente l'utilizzo di più dispositivi slave contemporaneamente. Ogni dispositivo slave deve essere costituito da un proprio indirizzo da rappresentare su di esso. Il dispositivo master comunica con un particolare dispositivo slave tramite un indirizzo. L'indirizzo del dispositivo RTC è '0xA2' in cui '1010' è fornito dal produttore e A0, A1, A2 sono indirizzi definiti dall'utente, che viene utilizzato per comunicare otto dispositivi RTC sul Protocollo bus I2C .

Device Addresing

Device Addresing

Il bit R / W viene utilizzato per eseguire operazioni di lettura e scrittura in RTC. Se R / W = 0, viene eseguita l'operazione di scrittura e R / W = 1 per l'operazione di lettura.

Indirizzo dell'operazione di lettura dell'RTC = '0xA3'

Indirizzo dell'operazione di scrittura dell'RTC = '0xA2'

Registri di memoria e indirizzo:

I registri RTC si trovano nelle posizioni degli indirizzi da 00h a 0Fh e i registri della memoria RAM si trovano nelle posizioni degli indirizzi da 08h a 3Fh come mostrato in figura. I registri RTC vengono utilizzati per fornire la funzionalità del calendario e l'ora del giorno di guida e per visualizzare i fine settimana.

Registri di memoria e indirizzo

Registri di memoria e indirizzo

Registri di controllo / stato:

DB1307 è costituito da due registri aggiuntivi come control / status1 e control / status2 che vengono utilizzati per controllare l'orologio in tempo reale e interrompe .

Registro di controllo / stato1:

Registro dello stato di controllo 1

Registro dello stato di controllo 1

  • TEST1 = 0 modalità normale

= 1 Modalità test EXT-clock

  • STOP = 0 RTC inizia

= 1 arresto RTC

  • TESTC = 0 power on reset disabilitato

= power on reset abilitato

Registro di controllo / stato2:

Registro dello stato di controllo 2

Registro dello stato di controllo 2

  • TI / TP = 0 INT sempre attivo

= 1 INT tempo richiesto attivo

  • AF = 0 L'allarme non corrisponde

= 1 Partita allarme

  • TF = 0 L'overflow del timer non si verifica

= 1 Si verifica un overflow del timer

  • ALE = 0 Disabilitazione interruzioni allarme

= 1 Allarmi interrupt abilitati

  • TIE = 0 Il timer interrompe la disabilitazione

= 1 Il timer interrompe l'abilitazione

Step3: interfacciamento dell'RTC ds1307 con 8051

RTC può essere interfacciato al microcontrollore utilizzando diversi protocolli di bus seriale come I2C e Protocolli SPI che forniscono un collegamento di comunicazione tra di loro. La figura mostra l'interfaccia in tempo reale dell'orologio con il microcontrollore 8051 utilizzando il protocollo bus I2C. I2C è un protocollo seriale bidirezionale, costituito da due fili come SCL e SDA per trasferire i dati tra i dispositivi collegati al bus. Il microcontrollore 8051 non ha un dispositivo RTC integrato, quindi abbiamo collegato esternamente tramite un comunicazione seriale per garantire i dati consistenti.

Interfacciamento RTC con microcontrollore 8051

Interfacciamento RTC con microcontrollore 8051

I dispositivi I2C hanno uscite open drain, quindi è necessario collegare una resistenza di pull-up alla linea bus I2C con una sorgente di tensione. Se le resistenze non sono collegate alle linee SCL e SDL, il bus non funzionerà.

Passaggio 4: formato frame dati RTC

Poiché l'interfaccia RTC con il microcontrollore 8051 utilizza il bus I2C, il trasferimento dei dati è sotto forma di byte o pacchetti e ogni byte è seguito da un riconoscimento.

Trasmissione del frame di dati:

In modalità di trasmissione, il master rilascia la condizione di avvio dopo aver selezionato il dispositivo slave tramite il bit di indirizzo. Il bit di indirizzo contiene 7 bit, che indicano i dispositivi slave come indirizzo ds1307. I dati seriali e il clock seriale vengono trasmessi su linee SCL e SDL. Le condizioni di START e STOP vengono riconosciute come inizio e fine di un trasferimento seriale. Le operazioni di ricezione e trasmissione sono seguite dal bit R / W.

Trasmissione del frame di dati

Trasmissione del frame di dati

Inizio: In primo luogo, la sequenza di trasferimento dati avviata dal master che genera la condizione di avvio.

Indirizzo a 7 bit: Dopodiché il master invia l'indirizzo dello slave in due formati a 8 bit invece di un unico indirizzo a 16 bit.

Indirizzo del registro di controllo / stato: L'indirizzo del registro di controllo / stato serve per consentire i registri dello stato di controllo.

Registro di controllo / stato1: Il registro dello stato di controllo1 utilizzato per abilitare il dispositivo RTC

Registro di controllo / stato2: Viene utilizzato per abilitare e disabilitare gli interrupt.

R / W: Se il bit di lettura e scrittura è basso, viene eseguita l'operazione di scrittura.

ALAS: Se l'operazione di scrittura viene eseguita nel dispositivo slave, il ricevitore invia un ACK a 1 bit al microcontrollore.

Fermare: Dopo il completamento dell'operazione di scrittura nel dispositivo slave, il microcontrollore invia la condizione di arresto al dispositivo slave.

Ricezione di frame di dati:

Ricezione di frame di dati

Ricezione di frame di dati

Inizio: In primo luogo, la sequenza di trasferimento dati avviata dal master che genera la condizione di avvio.

Indirizzo a 7 bit: Dopodiché il master invia l'indirizzo dello slave in due formati a 8 bit invece di un singolo indirizzo a 16 bit.

Indirizzo del registro di controllo / stato: L'indirizzo del registro di controllo / stato serve per consentire i registri dello stato di controllo.

Registro1 di controllo / stato: il registro1 dello stato di controllo utilizzato per abilitare il dispositivo RTC

Registro di controllo / stato2: Viene utilizzato per abilitare e disabilitare gli interrupt.

R / W: Se il bit di lettura e scrittura è alto, viene eseguita l'operazione di lettura.

ALAS: Se l'operazione di scrittura viene eseguita nel dispositivo slave, il ricevitore invia un ACK a 1 bit al microcontrollore.

Fermare: Dopo il completamento dell'operazione di scrittura nel dispositivo slave, il microcontrollore invia la condizione di arresto al dispositivo slave.

Step5: programmazione RTC

Scrivi operazione da Master a Slave:

  1. Emette la condizione di avvio da master a slave
  2. Trasferisce l'indirizzo slave in modalità di scrittura sulla linea SDL
  3. Invia l'indirizzo del registro di controllo
  4. Inviare il controllo / stato register1value
  5. Invia il valore del registro di controllo / stato2
  6. Invia la data di minuti, secondi e ore simili
  7. Invia il bit di stop

#includere

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
host void (carattere non firmato)
ritardo (carattere non firmato)

void main ()
{

inizio()
write (0xA2) // indirizzo slave //
write (0x00) // indirizzo del registro di controllo //
write (0x00) // control register 1 value //
scrivi (0x00) // controlla regiter2 vlaue //
write (0x28) // valore sec //
scrivi (0x50) // valore minuto //
write (0x02) // valore ore //
}

void start ()
{

SDA = 1 // elaborazione dei dati //
SCL = 1 // il clock è alto //
ritardo (100)
SDA = 0 // ha inviato i dati //
ritardo (100)
SCL = 0 // il segnale di clock è basso //
}
void write (unsigned char d)
{

carattere senza segno k, j = 0 × 80
per (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
ritardo (4)
SCL = 0
}
SDA = 1
SCL = 1
ritardo (2)
c = SDA
ritardo (2)
SCL = 0
}
void delay (int p)
{
unsignedinta, b
Per (a = 0a<255a++) //delay function//
Per (b = 0b}

Leggere l'operazione da Slave a Master:

#includere
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void write (usigned char)
void read ()
void ack ()
void delay (unsigned char)
void main ()
{
inizio()
write (0xA3) // indirizzo slave in modalità di lettura //
leggere()
Ahimè ()
sec = valore
}
void start ()
{

SDA = 1 // elaborazione dei dati //
SCL = 1 // il clock è alto //
ritardo (100)
SDA = 0 // ha inviato i dati //
ritardo (100)
SCL = 0 // il segnale di clock è basso //
}
void write (unsigned char d)
{

carattere senza segno k, j = 0 × 80
per (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
ritardo (4)
SCL = 0
}
SDA = 1
SCL = 1
ritardo (2)
c = SDA
ritardo (2)
SCL = 0
}
void delay (int p)
{
unsignedinta, b
Per (a = 0a<255a++) //delay function//
Per (b = 0b}
Void read ()
{
Carattere senza segno j, z = 0 × 00, q = 0 × 80
SDA = 1
per (j = 0j<8j++)
{
SCL = 1
ritardo (100)
flag = SDA
if (flag == 1)

z = (z
void ack ()
{
SDA = 0 // La linea SDA diventa bassa //
SCL = 1 // il clock va dal più alto al più basso //
ritardo (100)
SCL = 0
}

Questi sono i passaggi necessari per l'interfacciamento RTC con il microcontrollore 8051. Oltre a questi passaggi, in questo articolo vengono discussi anche i frame di dati utilizzati per il trasferimento e la ricezione dei dati per la comprensione da parte dell'utente con una programmazione appropriata. Per ulteriore aiuto su questo concetto puoi lasciare un commento qui sotto.