Interfacing RTC (DS1307) med Microcontroller og dens programmering

Prøv Vores Instrument Til At Fjerne Problemer





RTC er en elektronisk enhed, der spiller en vigtig rolle i integreret systemdesign i realtid . Det giver et nøjagtigt tidspunkt og dato i forskellige applikationer såsom systemur, elevdeltagelsessystem og alarm osv., Der holder styr på det aktuelle tidspunkt og giver konsekvent resultat til den respektive opgave. Denne artikel præsenterer RTC-interface med 8051microcotrollerog grundlæggende adgang til interne registre.

RTC-grænseflade med 8051 mikrokontroller

RTC-grænseflade med 8051 mikrokontroller



RTC programmering og grænseflade

RTC-grænseflade med 8051-mikrocontroller svarer til alle andre slags 'Realtidsure', der er grænseflade til den. Så lad os se på enkel RTC-grænseflade med 8051 mikrokontroller og programmeringsprocedure involveret i den.


Trin 1: Vælg RTC-enhed

De forskellige typer RTC-chips er tilgængelige i den realtidsindlejrede verden, som klassificeres ud fra forskellige kriterier såsom pakke, forsyningsspænding og pin-konfiguration osv. Et par typer RTC-enheder er



  • To-leder serielt interface (I2C-bus)
  • Tre-leder serielt interface (USB BUS)
  • Fire-leder serielt interface (SPI BUS)

Først skal vi vælge type RTC-enhed efter kategori baseret på krav som I2C Bus RTC eller SPI Bus RTC eller andet, der passer til grænseflader med respektive mikrokontroller. Derefter kan vi vælge funktioner på RTC-enhed afhængigt af applikationskrav, såsom batterilevetid, passende pakke og urfrekvens. Lad os overveje totrådsgrænseflade RTC med 8051 mikrokontroller såsom DS1307 .

Trin 2: Internt register og adresse på RTC-enheden

RTC står for realtidsur, der giver år, måneder, uger, dage, timer, minutter og sekunder baseret på krystalfrekvens. RTC består af indbygget RAM-hukommelse til datalagring . En backup af batteriet vil blive leveret i tilfælde af svigt i hovedstrømforsyningen ved at slutte et batteri til RTC-enheden.

RTC DB1307-konfiguration:

RTC interne blokke og stiftdiagram

RTC interne blokke og stiftdiagram

A0, A1, A2: er adressestifter på RTC DB1307-chip, som kan bruges til at kommunikere med masterenheden. Vi kan styre otte enheder med RTC-interface til 8051 mikrokontroller af A0, A1, A2 bits ved hjælp af I2C-protokol.


VCC og GND: VCC og GND er henholdsvis strømforsyning og jordstifter. Denne enhed drives med 1,8V til 5,5V rækkevidde.

VBT: VBT er en strømforsyningsstift. Batterikilde skal holdes mellem 2V og 3,5V.

SCL: SCL er en seriel urstift, og den bruges til at synkronisere data på seriel grænseflade.

SDL: Det er en seriel input og output pin. Det bruges til at transmittere og modtage dataene på den serielle grænseflade.

Ur ud: Det er en valgfri firkantbølgeoutputstift.

OSC0 og OSC1: Disse er krystaloscillatorstifter, der bruges til at levere ursignalerne til RTC-enheden. Standardkvartskrystalfrekvensen er 22.768KHz.

Enhedsadressering:

I2C-busprotokol tillader mange slaveenheder ad gangen. Hver slaveindretning skal bestå af egen adresse for at repræsentere den. Master-enheden kommunikerer med en bestemt slave-enhed via en adresse. RTC-enhedsadresse er '0xA2', hvor '1010' er angivet af producenten, og A0, A1, A2 er brugerdefineret adresse, som bruges til at kommunikere otte RTC-enheder på I2C-busprotokol .

Enhedsadres

Enhedsadres

R / W-bit bruges til at udføre læse- og skriveoperationer i RTC. Hvis R / W = 0, udføres skrivning og R / W = 1 til læseoperation.

Adresse til læsning af RTC = “0xA3”

Adresse for skrivning af RTC = “0xA2”

Hukommelsesregistre og adresse:

RTC-registre er placeret i adresselokaliteter fra 00h til 0Fh, og RAM-hukommelsesregistre er placeret i adresselokationer fra 08h til 3Fh som vist i figuren. RTC-registre bruges til at give kalenderfunktionalitet og køretid på dagen og til at vise weekender.

Hukommelsesregistre og adresse

Hukommelsesregistre og adresse

Kontrol / statusregistre:

DB1307 består af to ekstra registre, såsom kontrol / status1 og kontrol / status2, der bruges til at styre realtidsur og afbryder .

Kontrol / statusregister1:

Kontrolstatusregister1

Kontrolstatusregister1

  • TEST1 = 0 normal tilstand

= 1 EXT-ur testtilstand

  • STOP = 0 RTC starter

= 1 RTC-stop

  • TESTC = 0 power on reset deaktiveret

= tændt ved nulstilling aktiveret

Kontrol / statusregister2:

Kontrolstatusregister2

Kontrolstatusregister2

  • TI / TP = 0 INT aktiv hele tiden

= 1 INT aktiv krævet tid

  • AF=0 Alarm does not match

= 1 Alarm match

  • TF = 0 Timeroverløb forekommer ikke

= 1 Timeroverløb opstår

  • ALE = 0 Alarm afbryder deaktivering

= 1 Alarmafbrydelser aktiveret

  • TIE = 0 Timer afbryder deaktivering

= 1 Timer afbryder aktiveret

Trin 3: Interfacing RTC ds1307 med 8051

RTC kan være grænseflade til mikrokontroller ved hjælp af forskellige serielle busprotokoller som I2C og SPI-protokoller der giver kommunikationsforbindelse mellem dem. Figuren viser, realtidsur grænseflade med 8051 mikrocontroller ved hjælp af I2C busprotokol. I2C er en tovejs seriel protokol, som består af to ledninger såsom SCL og SDA til at overføre data mellem enheder, der er tilsluttet en bus. 8051 mikrokontroller har ingen indbygget RTC-enhed, derfor har vi tilsluttet eksternt via en seriel kommunikation for at sikre de bestående data.

RTC-grænseflade med 8051 mikrokontroller

RTC-grænseflade med 8051 mikrokontroller

I2C-enheder har åbne afløbsudgange, og der skal derfor tilsluttes en pull-up-modstand til I2C-busledningen med en spændingskilde. Hvis modstandene ikke er tilsluttet SCL- og SDL-linjerne, fungerer bussen ikke.

Trin 4: RTC Data Framing Format

Da RTC-interface med 8051-mikrocontroller bruger I2C-bus, er dataoverførslen derfor i form af bytes eller pakker, og hver byte efterfølges af en bekræftelse.

Sender dataramme:

I transmissionstilstand frigiver master starttilstanden efter at have valgt slaveenhed efter adressebit. Adressebiten indeholder 7-bit, som angiver slaveenhederne som ds1307-adresse. Seriedata og serielt ur transmitteres på SCL- og SDL-linjer. START- og STOP-betingelser anerkendes som begyndelsen og slutningen af ​​en seriel overførsel. Modtagelses- og sendefunktioner efterfølges af R / W-bit.

Fremsendelse af dataramme

Fremsendelse af dataramme

Start: Primært dataoverførselssekvensen initieret af masteren, der genererer starttilstanden.

7-bit adresse: Derefter sender masteren slaveadressen i to 8-bit formater i stedet for en enkelt 16-bit adresse.

Kontrol / Status Register Adresse: Kontrol / statusregisteradressen er at tillade kontrolstatusregistrene.

Kontrol / statusregister1: Kontrolstatusregistret1 bruges til at aktivere RTC-enheden

Kontrol / statusregister2: Det bruges til at aktivere og deaktivere afbrydelser.

R / W: Hvis læse- og skrivebiten er lav, udføres skrivningen.

ALAS: Hvis der udføres skrivehandling i slaveenheden, sender modtageren 1-bit ACK til mikrokontroller.

Hold op: Efter afslutningen af ​​skriveoperationen i slaveenheden sender mikrocontroller stoptilstand til slaveenheden.

Modtagende dataramme:

Modtagelse af dataramme

Modtagelse af dataramme

Start: Primært dataoverførselssekvensen initieret af masteren, der genererer starttilstanden.

7-bit adresse: Derefter sender masteren slave-adresse i to 8-bit formater i stedet for en enkelt 16-bit adresse.

Kontrol / Status Register Adresse: Kontrol / statusregisteradressen er at tillade kontrolstatusregistre.

Kontrol / statusregister1: Kontrolstatusregistret1, der bruges til at aktivere RTC-enheden

Kontrol / statusregister2: Det bruges til at aktivere og deaktivere afbrydelser.

R / W: Hvis læse- og skrivebit er høj, udføres læseoperationen.

ALAS: Hvis der udføres skrivehandling i slaveenheden, sender modtageren 1-bit ACK til mikrokontroller.

Hold op: Efter afslutningen af ​​skriveoperationen i slaveenheden sender mikrocontroller stoptilstand til slaveenheden.

Trin 5: RTC-programmering

Skriv operation fra mester til slave:

  1. Udsted startbetingelsen fra master til slave
  2. Overfør slave-adressen i skrivetilstand på SDL-linjen
  3. Send kontrolregisterets adresse
  4. Send kontrol- / statusregisteret1værdi
  5. Send kontrol- / statusregister2-værdien
  6. Send datoen for lignende minutter, sekunder og timer
  7. Send stopbit

#omfatte

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ugyldig start ()
ugyldige værter (usigneret char)
forsinkelse (usigneret char)

ugyldig hoved ()
{

Start()
skriv (0xA2) // slave-adresse //
skriv (0x00) // kontrolregistreringsadresse //
skriv (0x00) // kontrolregister 1-værdi //
skriv (0x00) // kontrol regiter2 vlaue //
skriv (0x28) // sek værdi //
skriv (0x50) // minutværdi //
skriv (0x02) // timer værdi //
}

ugyldig start ()
{

SDA = 1 // behandling af data //
SCL = 1 // uret er højt //
forsinkelse (100)
SDA = 0 // sendte data //
forsinkelse (100)
SCL = 0 // urets signal er lavt //
}
ugyldig skrivning (usigneret tegn d)
{

usigneret char k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
forsinkelse (4)
SCL = 0
}
SDA = 1
SCL = 1
forsinkelse (2)
c = SDA
forsinkelse (2)
SCL = 0
}
ugyldig forsinkelse (int p)
{
unsignedinta, b
For (a = 0a<255a++) //delay function//
For (b = 0b}

Læs Operation fra Slave til Master:

#omfatte
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ugyldig start ()
ugyldig skrivning (usigneret char)
ugyldig læsning ()
ugyldig ack ()
ugyldig forsinkelse (usigneret char)
ugyldig hoved ()
{
Start()
skriv (0xA3) // slave-adresse i læsetilstand //
Læs()
Ak ()
sek = værdi
}
ugyldig start ()
{

SDA = 1 // behandling af data //
SCL = 1 // uret er højt //
forsinkelse (100)
SDA = 0 // sendte data //
forsinkelse (100)
SCL = 0 // urets signal er lavt //
}
ugyldig skrivning (usigneret tegn d)
{

usigneret char k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
forsinkelse (4)
SCL = 0
}
SDA = 1
SCL = 1
forsinkelse (2)
c = SDA
forsinkelse (2)
SCL = 0
}
ugyldig forsinkelse (int p)
{
unsignedinta, b
For (a = 0a<255a++) //delay function//
For (b = 0b}
Annulleret læsning ()
{
Usigneret kultegn j, z = 0 × 00, q = 0 × 80
SDA = 1
for (j = 0j<8j++)
{
SCL = 1
forsinkelse (100)
flag = SDA
hvis (flag == 1)

z = (z
ugyldig ack ()
{
SDA = 0 // SDA-linjen går til lav //
SCL = 1 // uret er højt til lavt //
forsinkelse (100)
SCL = 0
}

Dette er de nødvendige trin til RTC-grænseflade med 8051 mikrokontroller. Ud over disse trin diskuteres datarammer, der bruges til overførsel og modtagelse af data, også i denne artikel til brugerforståelse med passende programmering. For yderligere hjælp til dette koncept kan du efterlade en kommentar nedenfor.