Gränssnitt RTC (DS1307) med Microcontroller och dess programmering

Prova Vårt Instrument För Att Eliminera Problem





RTC är en elektronisk enhet som spelar en viktig roll i realtidsinbäddad systemdesign . Det ger en exakt tid och datum i olika applikationer som systemklocka, elevdeltagarsystem och larm etc. som håller koll på aktuell tid och ger konsekvent resultat för respektive uppgift. Den här artikeln presenterar RTC-gränssnitt med 8051microcotroller och grundläggande åtkomst till interna register.

RTC-gränssnitt med 8051 mikrokontroller

RTC-gränssnitt med 8051 mikrokontroller



RTC-programmering och gränssnitt

RTC-gränssnitt med 8051-mikrokontroller liknar alla andra typer av 'realtidsklockor' som är gränssnitt till den. Så låt oss titta på enkel RTC-gränssnitt med 8051 mikrokontroller och programmeringsförfarande som ingår i det.


Steg 1: Välj RTC-enhet

De olika typerna av RTC-chips finns i realtidsinbäddad värld, som klassificeras utifrån olika kriterier såsom pakettyp, matningsspänning och stiftkonfiguration etc. Några typer av RTC-enheter är



  • Två-tråds seriellt gränssnitt (I2C-buss)
  • Tre-tråds seriellt gränssnitt (USB BUS)
  • Fyra trådars seriellt gränssnitt (SPI BUS)

Först måste vi välja typ av RTC-enhet efter kategori baserat på krav som I2C Bus RTC eller SPI Bus RTC eller annat, vilket passar för gränssnitt med respektive mikrokontroller. Sedan kan vi välja funktioner på RTC-enheter beroende på applikationskrav som batteritid, lämpligt paket och klockfrekvens. Låt oss överväga gränssnitt med två trådar RTC med 8051 mikrokontroller som DS1307 .

Steg 2: Internt register och adress för RTC-enheten

RTC står för realtidsklocka som ger år, månader, veckor, dagar, timmar, minuter och sekunder baserat på kristallfrekvens. RTC består av inbyggd RAM-minne för datalagring . En batteribackup kommer att tillhandahållas om huvudströmförsörjningen går sönder genom att ansluta ett batteri till RTC-enheten.

RTC DB1307-konfiguration:

RTC-interna block och stiftdiagram

RTC-interna block och stiftdiagram

A0, A1, A2: är adressnålar på RTC DB1307-chip, som kan användas för att kommunicera med masterenheten. Vi kan styra åtta enheter med RTC-gränssnitt 8051 mikrokontroller av A0, A1, A2 bitar med I2C-protokollet.


VCC och GND: VCC och GND är strömförsörjning respektive jordstift. Enheten drivs med ett intervall på 1,8 till 5,5 volt.

VBT: VBT är en strömförsörjningsstift. Batterikällan måste hållas mellan 2V och 3,5V.

SCL: SCL är en seriell klockstift och används för att synkronisera data på det seriella gränssnittet.

SDL: Det är en seriell in- och utgångsstift. Den används för att sända och ta emot data på seriellt gränssnitt.

Stämpla ut: Det är en valfri utgångsstift för fyrkantvåg.

OSC0 och OSC1: Dessa är kristalloscillatorstift som används för att ge klocksignalerna till RTC-enheten. Standardkvartskristallfrekvensen är 22.768KHz.

Enhetsadressering:

I2C-bussprotokollet tillåter många slavenheter åt gången. Varje slavapparat måste bestå av egen adress för att representera den. Huvudenheten kommunicerar med en viss slavenhet via en adress. RTC-enhetsadress är '0xA2' vari '1010' ges av tillverkaren och A0, A1, A2 är användardefinierad adress, som används för att kommunicera åtta RTC-enheter på I2C-bussprotokoll .

Enhetsadressering

Enhetsadressering

R / W-bit används för att utföra läs- och skrivoperationer i RTC. Om R / W = 0 utförs skrivoperation och R / W = 1 för läsoperation.

Adress för avläsning av RTC = “0xA3”

Adress för skrivoperation av RTC = “0xA2”

Minnesregister och adress:

RTC-register finns i adressplatser från 00h till 0Fh och RAM-minnesregister finns i adressplatser från 08h till 3Fh som visas i figuren. RTC-register används för att tillhandahålla kalenderfunktioner och körtid på dagen och för att visa helgerna.

Minnesregister och adress

Minnesregister och adress

Kontroll / statusregister:

DB1307 består av ytterligare två register, såsom styrning / status1 och styrning / status2, som används för att styra realtidsklocka och avbryter .

Kontroll / statusregister1:

Kontrollstatusregister1

Kontrollstatusregister1

  • TEST1 = 0 normalt läge

= 1 EXT-klocka testläge

  • STOP = 0 RTC startar

= 1 RTC-stopp

  • TESTC = 0 ström vid återställning avaktiverad

= ström vid återställning aktiverad

Kontroll / statusregister2:

Kontrollstatusregister2

Kontrollstatusregister2

  • TI / TP = 0 INT aktiv hela tiden

= 1 INT aktiv erforderlig tid

  • AF = 0 Larmet matchar inte

= 1 Larmmatchning

  • TF = 0 Timeröverflöde sker inte

= 1 Timeröverflöde inträffar

  • ALE = 0 Larmavbrott inaktivera

= 1 Larmavbrott aktiverat

  • TIE = 0 Timern avbryter inaktiveringen

= 1 Timeravbrott aktiverat

Steg 3: Gränssnitt RTC ds1307 med 8051

RTC kan vara gränssnitt till mikrokontroller genom att använda olika seriella bussprotokoll som I2C och SPI-protokoll som ger kommunikationslänk mellan dem. Bilden visar realtidsklocka som gränssnitt med 8051 mikrokontroller med I2C-bussprotokoll. I2C är ett dubbelriktat seriellt protokoll, som består av två ledningar som SCL och SDA för att överföra data mellan enheter anslutna till buss. 8051 mikrokontroller har ingen inbyggd RTC-enhet, därför har vi anslutit externt via en seriell kommunikation för att säkerställa bestående data.

RTC-gränssnitt med 8051 mikrokontroller

RTC-gränssnitt med 8051 mikrokontroller

I2C-enheter har öppna utloppsutgångar, därför måste ett uppdragningsmotstånd anslutas till I2C-bussledningen med en spänningskälla. Om motstånden inte är anslutna till SCL- och SDL-linjerna fungerar bussen inte.

Steg 4: RTC Data Framing Format

Eftersom RTC-gränssnitt med 8051 mikrokontroller använder I2C-buss är dataöverföringen därför i form av byte eller paket och varje byte följs av en bekräftelse.

Sänder dataram:

I sändningsläge släpper master startvillkoren efter att ha valt slavenhet efter adressbit. Adressbiten innehåller 7-bitars, som indikerar slavenheterna som ds1307-adress. Seriedata och seriell klocka överförs på SCL- och SDL-linjer. START- och STOP-villkor känns igen som början och slut på en serieöverföring. Mottagnings- och sändningsoperationer följs av R / W-biten.

Sänder dataram

Sänder dataram

Start: Primärt dataöverföringssekvensen initierad av mastern som genererar startvillkoret.

7-bitars adress: Därefter skickar mastern slavadressen i två 8-bitarsformat istället för en enda 16-bitarsadress.

Kontroll- / statusregisteradress: Kontroll / statusregisteradressen är att tillåta kontrollstatusregistren.

Kontroll / statusregister1: Kontrollstatusregistret1 som används för att aktivera RTC-enheten

Kontroll / statusregister2: Den används för att aktivera och inaktivera avbrott.

R / W: Om läs- och skrivbiten är låg utförs skrivoperationen.

ACK: Om skrivning utförs i slavenheten skickar mottagaren 1-bitars ACK till mikrokontrollern.

Sluta: Efter avslutad skrivoperation i slavenheten skickar mikrokontrollern stoppvillkor till slavenheten.

Ta emot dataram:

Ta emot dataram

Ta emot dataram

Start: Primärt dataöverföringssekvensen initierad av mastern som genererar startvillkoret.

7-bitars adress: Därefter skickar mastern slavadressen i två 8-bitarsformat istället för en enda 16-bitarsadress.

Kontroll- / statusregisteradress: Kontroll / statusregisteradressen är att tillåta kontrollstatusregister.

Kontroll / statusregister1: Kontrollstatusregistret1 som används för att aktivera RTC-enheten

Kontroll / statusregister2: Den används för att aktivera och inaktivera avbrott.

R / W: Om läs- och skrivbiten är hög utförs läsoperationen.

ACK: Om skrivning utförs i slavenheten skickar mottagaren 1-bitars ACK till mikrokontrollern.

Sluta: Efter avslutad skrivoperation i slavenheten skickar mikrokontrollern stoppvillkor till slavenheten.

Steg 5: RTC-programmering

Skriv operation från Master till Slave:

  1. Utfärda startvillkor från mästare till slav
  2. Överför slavadressen i skrivläge på SDL-linjen
  3. Skicka kontrollregisteradressen
  4. Skicka kontroll- / statusregistret1värde
  5. Skicka kontroll- / statusregister2-värdet
  6. Skicka datumet för liknande minuter, sekunder och timmar
  7. Skicka stoppbit

#omfatta

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ogiltig start ()
ogiltiga värdar (osignerad char)
fördröjning (osignerad röding)

ogiltigt huvud ()
{

Start()
skriv (0xA2) // slavadress //
skriv (0x00) // kontrollregisteradress //
skriv (0x00) // kontrollregister 1 värde //
skriv (0x00) // kontrollregiter2 vlaue //
skriv (0x28) // sek värde //
skriv (0x50) // minutvärde //
skriv (0x02) // timmar värde //
}

ogiltig start ()
{

SDA = 1 // bearbetning av data //
SCL = 1 // klockan är hög //
fördröjning (100)
SDA = 0 // skickade data //
fördröjning (100)
SCL = 0 // klocksignalen är låg //
}
ogiltig skrivning (osignerad char d)
{

osignerad char k, j = 0 × 80
för (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
fördröjning (4)
SCL = 0
}
SDA = 1
SCL = 1
fördröjning (2)
c = SDA
fördröjning (2)
SCL = 0
}
tomrumsfördröjning (int p)
{
unsignedinta, f
För (a = 0a<255a++) //delay function//
För (b = 0b}

Läs operation från slav till mästare:

#omfatta
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
ogiltig start ()
ogiltig skrivning (usignerad char)
ogiltig läsning ()
ogiltig ack ()
ogiltig fördröjning (osignerad char)
ogiltigt huvud ()
{
Start()
skriv (0xA3) // slavadress i läsläge //
läsa()
ack()
sek = värde
}
ogiltig start ()
{

SDA = 1 // bearbetning av data //
SCL = 1 // klockan är hög //
fördröjning (100)
SDA = 0 // skickade data //
fördröjning (100)
SCL = 0 // klocksignalen är låg //
}
ogiltig skrivning (osignerad char d)
{

osignerad char k, j = 0 × 80
för (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
fördröjning (4)
SCL = 0
}
SDA = 1
SCL = 1
fördröjning (2)
c = SDA
fördröjning (2)
SCL = 0
}
tomrumsfördröjning (int p)
{
unsignedinta, f
För (a = 0a<255a++) //delay function//
För (b = 0b}
Ogiltig läsning ()
{
Osignerad röd j, z = 0 × 00, q = 0 × 80
SDA = 1
för (j = 0j<8j++)
{
SCL = 1
fördröjning (100)
flagga = SDA
if (flagga == 1)

z = (z
ogiltig ack ()
{
SDA = 0 // SDA-linjen går till låg //
SCL = 1 // klockan är hög till låg //
fördröjning (100)
SCL = 0
}

Dessa är de nödvändiga stegen för RTC-gränssnitt med 8051 mikrokontroller. Utöver dessa steg diskuteras även dataramar som används för överföring och mottagning av data i den här artikeln för användarförståelse med lämplig programmering. För ytterligare hjälp med detta koncept kan du lämna en kommentar nedan.