Grensesnitt RTC (DS1307) med Microcontroller og dens programmering

Prøv Instrumentet Vårt For Å Eliminere Problemer





RTC er en elektronisk enhet som spiller en viktig rolle i innebygd systemdesign i sanntid . Det gir en presis tid og dato i forskjellige applikasjoner som systemklokke, studentoppmøte og alarm osv. Som holder oversikt over gjeldende tid og gir jevnlig resultat til den respektive oppgaven. Denne artikkelen presenterer RTC-grensesnitt med 8051microcotroller og grunnleggende tilgang til interne registre.

RTC-grensesnitt med 8051 mikrokontroller

RTC-grensesnitt med 8051 mikrokontroller



RTC-programmering og grensesnitt

RTC-grensesnitt med 8051 mikrokontroller ligner på alle andre typer 'sanntidsklokker' som er grensesnittet til den. Så la oss se på enkel RTC-grensesnitt med 8051 mikrokontroller og programmeringsprosedyre som involverer det.


Trinn 1: Velg RTC-enhet

De forskjellige typene RTC-brikker er tilgjengelige i den sanntids innebygde verdenen, som er klassifisert basert på forskjellige kriterier som pakketype, forsyningsspenning og pin-konfigurasjon etc. Noen få typer RTC-enheter er



  • To-leder serielt grensesnitt (I2C-buss)
  • Tre-leder serielt grensesnitt (USB BUS)
  • Fire-leder serielt grensesnitt (SPI BUS)

Først må vi velge type RTC-enhet etter kategori basert på krav som I2C Bus RTC eller SPI Bus RTC eller annet, som passer for grensesnitt med respektive mikrokontroller. Deretter kan vi velge funksjoner på RTC-enheten avhengig av applikasjonskrav som batterilevetid, passende pakke og klokkefrekvens. La oss vurdere to-leders grensesnitt RTC med 8051 mikrokontroller som DS1307 .

Trinn 2: Internt register og adresse til RTC-enheten

RTC står for sanntidsklokke som gir år, måneder, uker, dager, timer, minutter og sekunder basert på krystallfrekvens. RTC består av innebygd RAM-minne for datalagring . En batterisikkerhetskopi vil bli gitt i tilfelle feil på hovedstrømforsyningen ved å koble et batteri til RTC-enheten.

RTC DB1307-konfigurasjon:

RTC interne blokker og stiftdiagram

RTC interne blokker og stiftdiagram

A0, A1, A2: er adressepinner på RTC DB1307-brikken, som kan brukes til å kommunisere med hovedenheten. Vi kan styre åtte enheter med RTC-grensesnitt 8051 mikrokontroller av A0, A1, A2 bits ved hjelp av I2C-protokollen.


VCC og GND: VCC og GND er henholdsvis strømforsyning og jordpinner. Denne enheten drives med 1,8V til 5,5V rekkevidde.

VBT: VBT er en strømforsyningsstift. Batterikilden må holdes mellom 2V og 3,5V.

SCL: SCL er en seriell klokkepinne og brukes til å synkronisere data på serielt grensesnitt.

SDL: Det er en seriell inngangs- og utgangsstift. Den brukes til å overføre og motta dataene på det serielle grensesnittet.

Stemple ut: Det er en valgfri firkantbølgeutgangsstift.

OSC0 og OSC1: Dette er krystalloscillatorpinner som brukes til å gi kloksignalene til RTC-enheten. Standard kvartskrystallfrekvens er 22.768KHz.

Enhetsadressering:

I2C bussprotokoll tillater mange slaveenheter om gangen. Hver slaveenhet må bestå av egen adresse for å representere på den. Hovedenheten kommuniserer med en bestemt slaveenhet via en adresse. RTC-enhetsadresse er '0xA2' hvor '1010' er gitt av produsent og A0, A1, A2 er brukerdefinert adresse, som brukes til å kommunisere åtte RTC-enheter på I2C bussprotokoll .

Enhetsadressering

Enhetsadressering

R / W-bit brukes til å utføre lese- og skriveoperasjoner i RTC. Hvis R / W = 0, utføres skrivoperasjon og R / W = 1 for leseoperasjon.

Adresse for leseoperasjon av RTC = “0xA3”

Adresse for skrivedrift av RTC = “0xA2”

Minneregistre og adresse:

RTC-registre er lokalisert i adresselokasjoner fra 00h til 0Fh og RAM-minnesregister er lokalisert i adresselokasjoner fra 08h til 3Fh som vist i figuren. RTC-registre brukes til å gi kalenderfunksjonalitet og kjøretid på dagen og til å vise helgene.

Minneregistre og adresse

Minneregistre og adresse

Kontroll / statusregistre:

DB1307 består av to tilleggsregistre som kontroll / status1 og kontroll / status2 som brukes til å kontrollere sanntidsklokke og avbryter .

Kontroll / statusregister1:

Kontrollstatusregister 1

Kontrollstatusregister 1

  • TEST1 = 0 normal modus

= 1 EXT-klokke testmodus

  • STOP = 0 RTC starter

= 1 RTC-stopp

  • TESTC = 0 strøm på tilbakestilling deaktivert

= strøm på tilbakestilling aktivert

Kontroll / statusregister2:

Kontrollstatusregister2

Kontrollstatusregister2

  • TI / TP = 0 INT aktiv hele tiden

= 1 INT aktiv nødvendig tid

  • AF = 0 Alarm samsvarer ikke

= 1 Alarmkamp

  • TF = 0 Timeroverløp oppstår ikke

= 1 Timeroverløp oppstår

  • ALE = 0 Alarmavbrudd deaktiver

= 1 Alarmavbrudd aktivert

  • TIE = 0 Timer avbryter deaktivering

= 1 Timer avbryter aktivering

Trinn 3: Grensesnitt RTC ds1307 med 8051

RTC kan være grensesnitt til mikrokontroller ved å bruke forskjellige serielle bussprotokoller som I2C og SPI-protokoller som gir kommunikasjonsforbindelse mellom dem. Figuren viser sanntidsklokke grensesnitt med 8051 mikrokontroller ved bruk av I2C bussprotokoll. I2C er en toveis seriell protokoll, som består av to ledninger som SCL og SDA for å overføre data mellom enheter som er koblet til buss. 8051 mikrokontroller har ingen innebygd RTC-enhet, derfor har vi koblet eksternt gjennom en seriell kommunikasjon for å sikre bestående data.

RTC-grensesnitt med 8051 mikrokontroller

RTC-grensesnitt med 8051 mikrokontroller

I2C-enheter har åpne dreneringsutganger, derfor må en trekkmotstand være koblet til I2C-bussledningen med en spenningskilde. Hvis motstandene ikke er koblet til SCL- og SDL-linjene, vil ikke bussen fungere.

Trinn 4: RTC Data Framing Format

Siden RTC-grensesnitt med 8051 mikrokontroller bruker I2C-buss, er dataoverføringen i form av byte eller pakker, og hver byte blir fulgt av en bekreftelse.

Sender dataramme:

I overføringsmodus frigjør master starttilstanden etter å ha valgt slaveenhet etter adressebit. Adressebiten inneholder 7-bit, som indikerer slaveenhetene som ds1307-adresse. Seriedata og seriell klokke overføres på SCL- og SDL-linjer. START- og STOP-forhold blir anerkjent som begynnelse og slutt på en seriell overføring. Mottaks- og overføringsoperasjoner blir fulgt av R / W-biten.

Sender dataramme

Sender dataramme

Start: Primært dataoverføringssekvensen initiert av mesteren som genererer starttilstanden.

7-biters adresse: Etter det sender masteren slaveadressen i to 8-biters formater i stedet for en enkelt 16-biters adresse.

Kontroll / Status Register Adresse: Kontroll- / statusregisteradressen er å tillate kontrollstatusregistrene.

Kontroll / statusregister1: Kontrollstatusregistret1 brukes til å aktivere RTC-enheten

Kontroll / statusregister2: Den brukes til å aktivere og deaktivere avbrudd.

R / W: Hvis lese- og skrivebiten er lav, utføres skrivingen.

ALAS: Hvis skriveoperasjon utføres i slaveenheten, sender mottakeren 1-biters ACK til mikrokontroller.

Stoppe: Etter at skrivingen er fullført i slaveenheten, sender mikrokontroller stopptilstand til slaveenheten.

Motta dataramme:

Motta dataramme

Motta dataramme

Start: Primært dataoverføringssekvensen initiert av mesteren som genererer starttilstanden.

7-biters adresse: Etter det sender masteren slave-adresse i to 8-biters formater i stedet for en enkelt 16-biters adresse.

Kontroll / Status Register Adresse: Kontroll- / statusregisteradressen er å tillate kontrollstatusregistre.

Kontroll / statusregister1: Kontrollstatusregistret1 som brukes til å aktivere RTC-enheten

Kontroll / statusregister2: Den brukes til å aktivere og deaktivere avbrudd.

R / W: Hvis lese- og skrivebiten er høy, utføres leseoperasjonen.

ALAS: Hvis skriveoperasjon utføres i slaveenheten, sender mottakeren 1-biters ACK til mikrokontroller.

Stoppe: Etter at skrivingen er fullført i slaveenheten, sender mikrokontroller stopptilstand til slaveenheten.

Trinn 5: RTC-programmering

Skriv operasjon fra mester til slave:

  1. Utsted startbetingelsen fra mester til slave
  2. Overfør slave-adressen i skrivemodus på SDL-linje
  3. Send kontrollregisteradressen
  4. Send kontroll- / statusregisteret1verdi
  5. Send kontroll- / statusregister2-verdien
  6. Send datoen for lignende minutter, sekunder og timer
  7. Send stopp-biten

#inkludere

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ugyldig start ()
ugyldige verter (usignert røye)
forsinkelse (usignert røye)

ugyldig hoved ()
{

start()
skriv (0xA2) // slave-adresse //
skriv (0x00) // kontrollregisteradresse //
skriv (0x00) // kontrollregister 1 verdi //
skriv (0x00) // kontroll regiter2 vlaue //
skriv (0x28) // sek verdi //
skriv (0x50) // minuttverdi //
skriv (0x02) // timerverdi //
}

ugyldig start ()
{

SDA = 1 // behandler dataene //
SCL = 1 // klokken er høy //
forsinkelse (100)
SDA = 0 // sendte dataene //
forsinkelse (100)
SCL = 0 // klokkesignalet er lavt //
}
ugyldig skriving (usignert tegn d)
{

usignert røye 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, f
For (a = 0a<255a++) //delay function//
For (b = 0b}

Les Operasjon fra slave til mester:

#inkludere
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ugyldig start ()
ugyldig skriving (usignert røye)
ugyldig lese ()
ugyldig ack ()
ugyldig forsinkelse (usignert røye)
ugyldig hoved ()
{
start()
skriv (0xA3) // slave-adresse i lesemodus //
lese()
Alas ()
sek = verdi
}
ugyldig start ()
{

SDA = 1 // behandler dataene //
SCL = 1 // klokken er høy //
forsinkelse (100)
SDA = 0 // sendte dataene //
forsinkelse (100)
SCL = 0 // klokkesignalet er lavt //
}
ugyldig skriving (usignert tegn d)
{

usignert røye 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, f
For (a = 0a<255a++) //delay function//
For (b = 0b}
Annullert lese ()
{
Utegnet røye j, z = 0 × 00, q = 0 × 80
SDA = 1
for (j = 0j<8j++)
{
SCL = 1
forsinkelse (100)
flagg = SDA
hvis (flagg == 1)

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

Dette er de nødvendige trinnene for RTC-grensesnitt med 8051 mikrokontroller. I tillegg til disse trinnene blir datarammer som brukes til overføring og mottak av dataene også diskutert i denne artikkelen for brukerforståelse med passende programmering. For ytterligere hjelp med dette konseptet kan du legge igjen en kommentar nedenfor.