Povezovanje RTC (DS1307) z mikrokrmilnikom in njegovim programiranjem

Preizkusite Naš Instrument Za Odpravo Težav





RTC je elektronska naprava, ki igra bistveno vlogo pri oblikovanje vgrajenega sistema v realnem času . Zagotavlja natančen čas in datum v različnih aplikacijah, kot so sistemska ura, sistem za udeležbo študentov in alarm itd., Ki spremljajo trenutni čas in zagotavljajo dosledne rezultate za vsako nalogo. Ta članek predstavlja povezavo RTC z 8051mikrokontrolerom in osnovnim dostopom do notranjih registrov.

Vmesnik RTC z mikrokrmilnikom 8051

Vmesnik RTC z mikrokrmilnikom 8051



RTC programiranje in povezovanje

Povezava RTC z mikrokrmilnikom 8051 je podobna vsem drugim vrstam 'ur v realnem času', ki so povezane z njim. Poglejmo si torej preprosto povezavo RTC 8051 mikrokrmilnik in postopek programiranja, ki vključuje to.


1. korak: Izberite RTC Device

Različne vrste RTC čipov so na voljo v vgrajenem svetu v realnem času in so razvrščene na podlagi različnih kriterijev, kot so vrsta paketa, napajalna napetost in konfiguracija zatičev itd.



  • Dvožični serijski vmesnik (vodilo I2C)
  • Trižični serijski vmesnik (USB BUS)
  • Štirižični serijski vmesnik (SPI BUS)

Najprej moramo izbrati vrsto naprave RTC glede na kategorijo na podlagi zahtev, kot so I2C Bus RTC ali SPI Bus RTC ali druge, ki ustrezajo povezovanju z ustreznim mikrokrmilnikom. Nato lahko izberemo funkcije naprave RTC, odvisno od zahtev aplikacije, kot so življenjska doba baterije, ustrezen paket in taktna frekvenca. Razmislimo o dvožičnem povezovanju RTC z mikrokrmilnikom 8051, kot je DS1307 .

2. korak: Notranji register in naslov naprave RTC

RTC pomeni uro v realnem času, ki na podlagi frekvence kristala prikazuje leta, mesece, tedne, dni, ure, minute in sekunde. RTC je sestavljen iz vgrajenega RAM pomnilnik za shranjevanje podatkov . V primeru izpada glavnega napajanja bo zagotovljena varnostna kopija akumulatorja s priključitvijo baterije na napravo RTC.

Konfiguracija RTC DB1307:

RTC notranji bloki in diagrami pinov

RTC notranji bloki in diagrami pinov

A0, A1, A2: so naslovni zatiči čipa RTC DB1307, ki se lahko uporabljajo za komunikacijo z glavno napravo. Nadzorujemo lahko osem naprav z vmesnikom RTC 8051 mikrokrmilnik z bitoma A0, A1, A2 z uporabo protokola I2C.


VCC in GND: VCC in GND sta napajalna in ozemljitvena zatiča. Ta naprava je delovala v območju od 1,8 do 5,5 V.

VBT: VBT je baterijski napajalni zatič. Vir napajanja akumulatorja mora biti med 2 V in 3,5 V.

SCL: SCL je zaporedni zatič ure in se uporablja za sinhronizacijo podatkov na serijskem vmesniku.

SDL: Je zaporedni vhodni in izhodni zatič. Uporablja se za prenos in sprejem podatkov na serijski vmesnik.

Ura: To je neobvezni kvadratni valovni izhodni zatič.

OSC0 in OSC1: To so zatiči kristalnega oscilatorja, ki se uporabljajo za oddajanje urnih signalov napravi RTC. Standardna frekvenca kvarčnega kristala je 22.768KHzs.

Naslavljanje naprave:

Protokol vodila I2C omogoča več podrejenih naprav hkrati. Vsaka podrejena naprava mora biti sestavljena iz lastnega naslova, ki jo predstavlja na njej. Glavna naprava komunicira z določeno pomožno napravo z naslovom. Naslov naprave RTC je '0xA2', pri čemer '1010' poda proizvajalec, A0, A1, A2 pa uporabniški naslov, ki se uporablja za komunikacijo osmih naprav RTC na I2C protokol vodila .

Naslov naprave

Naslov naprave

R / W bit se uporablja za izvajanje operacij branja in pisanja v RTC. Če je R / W = 0, se izvede operacija zapisovanja in R / W = 1 za branje.

Naslov branja operacije RTC = “0xA3”

Naslov operacije zapisovanja RTC = “0xA2”

Registri in naslov pomnilnika:

Registri RTC se nahajajo na naslovih od 00h do 0Fh, registri pomnilnika RAM pa na naslovih od 08h do 3Fh, kot je prikazano na sliki. Registri RTC se uporabljajo za zagotavljanje funkcionalnosti koledarja in časa vožnje ter za prikaz vikendov.

Registri in naslov pomnilnika

Registri in naslov pomnilnika

Registri nadzora / stanja:

DB1307 je sestavljen iz dveh dodatnih registrov, kot sta nadzor / status1 in nadzor / status2, ki se uporabljata za nadzor ure v realnem času in prekinja .

Kontrolni / statusni register1:

Register stanja nadzora

Register stanja nadzora

  • TEST1 = 0 običajni način

= 1 način preizkusa EXT-ura

  • STOP = 0 RTC se zažene

= 1 zaustavitev RTC

  • TESTC = 0 vklop ob ponastavitvi onemogočen

= omogočena ponastavitev ob vklopu

Kontrolni / statusni register2:

Register stanja nadzora2

Register stanja nadzora2

  • TI / TP = 0 INT ves čas aktiven

= 1 INT aktivni potrebni čas

  • AF = 0 Alarm se ne ujema

= 1 Ujemanje alarma

  • TF = 0 Ne pride do prelivanja časovnika

= 1 Pojavi se preliv časovnika

  • ALE = 0 Prekinitve alarma so onemogočene

= 1 Omogočene prekinitve alarma

  • TIE = 0 Prekinitve časovnika so onemogočene

= 1 Omogoči prekinitve časovnika

3. korak: povezovanje RTC ds1307 z 8051

RTC je lahko povezan z mikrokrmilnikom z uporabo različnih serijskih vodilskih protokolov, kot sta I2C in SPI protokoli ki zagotavljajo komunikacijsko povezavo med njimi. Slika prikazuje povezavo ure v realnem času z mikrokrmilnikom 8051 z uporabo protokola vodila I2C. I2C je dvosmerni serijski protokol, ki je sestavljen iz dveh žic, kot sta SCL in SDA za prenos podatkov med napravami, povezanimi z vodilom. Mikrokrmilnik 8051 nima vgrajene naprave RTC, zato smo zunanje povezali prek a serijska komunikacija za zagotovitev sestavljenih podatkov.

Vmesnik RTC z mikrokrmilnikom 8051

Vmesnik RTC z mikrokrmilnikom 8051

Naprave I2C imajo odprte odtočne izhode, zato morajo biti vlečni upori povezani z vodilom I2C vodila z napetostnim virom. Če upori niso priključeni na vod SCL in SDL, vodilo ne bo delovalo.

Korak 4: Oblika zapisa okvirja za podatke RTC

Ker povezava RTC z mikrokrmilnikom 8051 uporablja vodilo I2C, je prenos podatkov v obliki bajtov ali paketov, vsakemu bajtu pa sledi potrditev.

Pošiljanje podatkovnega okvira:

V načinu oddajanja poveljnik sprosti zagonski pogoj, potem ko izbere pomožno napravo glede na naslovni bit. Naslovni bit vsebuje 7-bit, ki podrejene naprave označuje kot naslov ds1307. Zaporedni podatki in serijska ura se prenašajo po linijah SCL in SDL. Pogoji START in STOP se prepoznajo kot začetek in konec serijskega prenosa. Postopkom sprejemanja in oddajanja sledi R / W bit.

Pošiljanje podatkovnega okvira

Pošiljanje podatkovnega okvira

Začetek: Predvsem zaporedje prenosa podatkov, ki ga sproži poveljnik, ki generira zagonski pogoj.

7-bitni naslov: Po tem poveljnik pošlje podrejeni naslov v dveh 8-bitnih oblikah namesto v enem samem 16-bitnem naslovu.

Naslov registra nadzora / stanja: Naslov kontrolnega / statusnega registra omogoča omogočanje registrov kontrolnega stanja.

Kontrolni / statusni register1: Register stanja nadzora1, ki se uporablja za omogočanje naprave RTC

Kontrolni / statusni register2: Uporablja se za omogočanje in onemogočanje prekinitev.

R / W: Če je bit za branje in pisanje nizek, se izvede operacija zapisovanja.

ALAS: Če se operacija zapisovanja izvaja v podrejeni napravi, potem sprejemnik pošlje 1-bitni ACK mikrokrmilniku.

Stop: Po zaključku operacije zapisovanja v podrejeni napravi mikrokrmilnik pošlje podrejeno stanje zaustavitve.

Sprejem podatkovnega okvira:

Sprejem podatkovnega okvira

Sprejem podatkovnega okvira

Začetek: Predvsem zaporedje prenosa podatkov, ki ga sproži poveljnik, ki generira zagonski pogoj.

7-bitni naslov: Po tem poveljnik pošlje podrejeni naslov v dveh 8-bitnih oblikah namesto v enem 16-bitnem naslovu.

Naslov registra nadzora / stanja: Naslov kontrolnega / statusnega registra omogoča omogočanje registrov nadzornega stanja.

Nadzor / register stanja1: register stanja nadzora1, ki se uporablja za omogočanje naprave RTC

Kontrolni / statusni register2: Uporablja se za omogočanje in onemogočanje prekinitev.

R / W: Če je bit branja in pisanja visok, se izvede operacija branja.

ALAS: Če se operacija zapisovanja izvaja v podrejeni napravi, potem sprejemnik pošlje 1-bitni ACK mikrokrmilniku.

Stop: Po zaključku operacije zapisovanja v podrejeni napravi mikrokrmilnik pošlje podrejeno stanje zaustavitve.

5. korak: Programiranje RTC

Napišite operacijo od glavnega do podrejenega:

  1. Izdajte pogoj zagona od glavnega do pomožnega
  2. Prenesite podrejeni naslov v načinu pisanja na liniji SDL
  3. Pošljite naslov kontrolnega registra
  4. Pošljite kontrolno / status register1value
  5. Pošljite vrednost kontrolnega / statusnega registra2
  6. Pošljite datum podobnih minut, sekund in ur
  7. Pošlji stop bit

#include

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
neveljavni gostitelji (nepodpisani znak)
zamuda (nepodpisani znak)

void main ()
{

začetek ()
write (0xA2) // pomožni naslov //
write (0x00) // naslov nadzornega registra //
write (0x00) // nadzorni register 1 vrednost //
write (0x00) // nadzor regiter2 vlaue //
write (0x28) // sek vrednost //
write (0x50) // minutna vrednost //
write (0x02) // urna vrednost //
}

void start ()
{

SDA = 1 // obdelava podatkov //
SCL = 1 // ura je visoka //
zamuda (100)
SDA = 0 // poslali podatke //
zamuda (100)
SCL = 0 // taktni signal je nizek //
}
void write (nepodpisan znak d)
{

nepodpisani znak k, j = 0 × 80
za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zamuda (4)
SCL = 0
}
SDA = 1
SCL = 1
zamuda (2)
c = SDA
zamuda (2)
SCL = 0
}
zakasnitev praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

Preberite Operation from Slave to Master:

#include
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void write (usigned char)
neveljavno branje ()
void ack ()
zamuda praznine (nepodpisani znak)
void main ()
{
začetek ()
write (0xA3) // podrejeni naslov v načinu branja //
preberi ()
Žal ()
sec = vrednost
}
void start ()
{

SDA = 1 // obdelava podatkov //
SCL = 1 // ura je visoka //
zamuda (100)
SDA = 0 // poslali podatke //
zamuda (100)
SCL = 0 // taktni signal je nizek //
}
void write (nepodpisan znak d)
{

nepodpisani znak k, j = 0 × 80
za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zamuda (4)
SCL = 0
}
SDA = 1
SCL = 1
zamuda (2)
c = SDA
zamuda (2)
SCL = 0
}
zakasnitev praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}
Neveljavno branje ()
{
Nepodpisani char j, z = 0 × 00, q = 0 × 80
SDA = 1
za (j = 0j<8j++)
{
SCL = 1
zamuda (100)
zastava = SDA
če (zastava == 1)

z = (z
void ack ()
{
SDA = 0 // Vrstica SDA gre na nizko //
SCL = 1 // ura je od najvišje do najnižje //
zamuda (100)
SCL = 0
}

To so potrebni koraki za povezavo RTC z mikrokrmilnikom 8051. Poleg teh korakov so v tem članku za razumevanje uporabnikov z ustreznim programiranjem obravnavani tudi podatkovni okviri, ki se uporabljajo za prenos in sprejem podatkov. Za nadaljnjo pomoč v zvezi s tem konceptom lahko pustite komentar spodaj.