Prepojenie RTC (DS1307) s mikrokontrolérom a jeho programovanie

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





RTC je elektronické zariadenie, ktoré hrá zásadnú úlohu v systéme návrh zabudovaného systému v reálnom čase . Poskytuje presný čas a dátum v rôznych aplikáciách, ako sú systémové hodiny, dochádzkový systém študentov a budík, atď., Ktoré sledujú aktuálny čas a poskytujú konzistentné výsledky k príslušnej úlohe. Tento článok predstavuje prepojenie RTC s mikrokontrolérom 8051 a základný prístup k interným registrom.

RTC prepojenie s mikrokontrolérom 8051

RTC prepojenie s mikrokontrolérom 8051



Programovanie a prepojenie RTC

RTC prepojenie s mikrokontrolérom 8051 je podobné ako všetky ostatné druhy „hodín v reálnom čase“, ktoré sú s ním prepojené. Pozrime sa teda na jednoduché prepojenie RTC s Mikrokontrolér 8051 a programovací postup, ktorý je do nej zahrnutý.


Krok 1: Vyberte zariadenie RTC

Rôzne druhy RTC čipov sú k dispozícii v zabudovanom svete v reálnom čase, ktoré sú klasifikované na základe rôznych kritérií, ako je typ balenia, napájacie napätie a konfigurácia kolíkov atď. Niektoré typy RTC zariadení sú



  • Dvojvodičové sériové rozhranie (zbernica I2C)
  • Trojvodičové sériové rozhranie (USB BUS)
  • Štvorvodičové sériové rozhranie (SPI BUS)

Najprv musíme zvoliť typ zariadenia RTC podľa kategórie na základe požiadaviek, ako sú I2C Bus RTC alebo SPI Bus RTC alebo iné, ktoré sú vhodné na prepojenie s príslušným mikrokontrolérom. Potom môžeme zvoliť vlastnosti RTC zariadenia v závislosti na požiadavkách aplikácie, ako je životnosť batérie, vhodné balenie a taktovacia frekvencia. Uvažujme o dvojvodičovom rozhraní RTC s mikrokontrolérom 8051, napríklad DS1307 .

Krok 2: Interný register a adresa zariadenia RTC

RTC znamená hodiny reálneho času, ktoré poskytujú roky, mesiace, týždne, dni, hodiny, minúty a sekundy na základe kryštalickej frekvencie. RTC pozostáva zo zabudovaného RAM pamäť na ukladanie dát . Záložná batéria bude poskytnutá v prípade výpadku hlavného napájacieho zdroja pripojením batérie k RTC zariadeniu.

Konfigurácia RTC DB1307:

Interné bloky a schéma kolíkov RTC

Interné bloky a schéma kolíkov RTC

A0, A1, A2: sú adresové piny čipu RTC DB1307, ktoré možno použiť na komunikáciu s nadradeným zariadením. Môžeme ovládať osem zariadení s rozhraním RTC Mikrokontrolér 8051 bitmi A0, A1, A2 pomocou protokolu I2C.


VCC a GND: VCC a GND sú napájacie a uzemňovacie piny. Toto zariadenie pracovalo s rozsahom 1,8 V až 5,5 V.

VBT: VBT je kolík napájania z batérie. Zdroj energie z batérie musí byť udržiavaný v rozmedzí 2 V až 3,5 V.

SCL: SCL je sériový hodinový pin a používa sa na synchronizáciu údajov na sériovom rozhraní.

SDL: Jedná sa o sériový vstupný a výstupný pin. Používa sa na prenos a príjem údajov na sériovom rozhraní.

Hodiny: Je to voliteľný výstupný kolík štvorcovej vlny.

OSC0 a OSC1: Jedná sa o kolíky kryštálového oscilátora, ktoré sa používajú na poskytovanie hodinových signálov do zariadenia RTC. Štandardná frekvencia kremeňa je 22 768 KHz.

Adresovanie zariadenia:

Protokol I2C zbernice umožňuje veľa podriadených zariadení naraz. Každé podradené zariadenie musí pozostávať z vlastnej adresy, ktorá na ňom má byť zastúpená. Hlavné zariadenie komunikuje s konkrétnym podriadeným zariadením pomocou adresy. Adresa zariadenia RTC je „0xA2“, pričom „1010“ je daný výrobcom a A0, A1, A2 sú adresy definované používateľom, ktorá sa používa na komunikáciu ôsmich zariadení RTC na Protokol zbernice I2C .

Adresovanie zariadenia

Adresovanie zariadenia

Bit R / W sa používa na vykonávanie operácií čítania a zápisu v RTC. Ak R / W = 0, vykoná sa operácia zápisu a R / W = 1 pre operáciu čítania.

Adresa operácie čítania RTC = „0xA3“

Adresa operácie zápisu RTC = „0xA2“

Pamäťové registre a adresa:

RTC registre sú umiestnené v adresných pozíciách od 00h do 0Fh a RAM pamäťové registre sú umiestnené v adresných pozíciách od 08h do 3Fh, ako je znázornené na obrázku. Registre RTC sa používajú na zabezpečenie funkčnosti kalendára a času jazdy a na zobrazenie víkendov.

Registre pamäte a adresa

Registre pamäte a adresa

Kontrolné / stavové registre:

DB1307 sa skladá z dvoch ďalších registrov, ako napríklad control / status1 a control / status2, ktoré sa používajú na riadenie hodín reálneho času a preruší .

Riadiaci / stavový register1:

Register stavu kontroly 1

Register stavu kontroly 1

  • TEST1 = 0 normálny režim

= 1 testovací režim hodín EXT

  • STOP = 0 RTC sa spustí

= 1 zastavenie RTC

  • TESTC = 0 reset napájania deaktivovaný

= reset napájania povolený

Riadiaci / stavový register2:

Register stavu kontroly 2

Register stavu kontroly 2

  • TI / TP = 0 INT neustále aktívny

= 1 INT aktívny požadovaný čas

  • AF = 0 Alarm sa nezhoduje

= 1 Zhoda alarmu

  • TF = 0 Netečie časovač

= 1 Došlo k pretečeniu časovača

  • ALE = 0 Deaktivácia prerušenia alarmu

= 1 Je povolené prerušenie alarmu

  • TIE = 0 Časové prerušenia sú deaktivované

= 1 Časové prerušenia sú povolené

Krok 3: Prepojenie RTC ds1307 s 8051

RTC môže byť prepojené s mikrokontrolérom použitím rôznych protokolov sériovej zbernice, ako sú I2C a SPI protokoly ktoré poskytujú komunikačné spojenie medzi nimi. Obrázok ukazuje, hodiny skutočného času prepojené s mikrokontrolérom 8051 pomocou protokolu zbernice I2C. I2C je obojsmerný sériový protokol, ktorý sa skladá z dvoch vodičov, ako sú SCL a SDA, na prenos údajov medzi zariadeniami pripojenými na zbernicu. Mikrokontrolér 8051 nemá zabudované zariadenie RTC, preto sme sa externe pripojili cez a sériová komunikácia na zabezpečenie pozostávajúcich údajov.

RTC prepojenie s mikrokontrolérom 8051

RTC prepojenie s mikrokontrolérom 8051

Zariadenia I2C majú otvorené odtokové výstupy, preto musia byť na linku zbernice I2C pripojené pull-up rezistory so zdrojom napätia. Ak odpory nie sú pripojené k linkám SCL a SDL, zbernica nebude fungovať.

Krok 4: Formát rámcovania údajov RTC

Pretože RTC prepojené s mikrokontrolérom 8051 používa zbernicu I2C, prenos dát je vo forme bajtov alebo paketov a po každom bajte nasleduje potvrdenie.

Vysielací dátový rámec:

V režime vysielania master uvoľní štartovaciu podmienku po zvolení podriadeného zariadenia adresovým bitom. Bit adresy obsahuje 7 bitov, ktoré označujú podriadené zariadenia ako adresu ds1307. Sériové dáta a sériové hodiny sa prenášajú na linkách SCL a SDL. Podmienky START a STOP sa považujú za začiatok a koniec sériového prenosu. Po operáciách príjmu a vysielania nasleduje bit R / W.

Vysielací dátový rámec

Vysielací dátový rámec

Štart: Primárne je to sekvencia prenosu dát iniciovaná nadradeným serverom generujúcim podmienku spustenia.

7-bitová adresa: Potom master pošle adresu slave v dvoch 8-bitových formátoch namiesto jednej 16-bitovej adresy.

Adresa riadiaceho / stavového registra: Adresa riadiaceho / stavového registra má umožňovať riadiace stavové registre.

Riadiaci / stavový register1: Register stavu riadenia 1 použitý na povolenie zariadenia RTC

Riadiaci / stavový register2: Používa sa na povolenie a zakázanie prerušenia.

Č / P: Ak je bit na čítanie a zápis nízky, vykoná sa operácia zápisu.

ALAS: Ak sa operácia zápisu vykonáva v podradenom zariadení, potom prijímač pošle 1-bitový ACK do mikrokontroléra.

Stop: Po dokončení operácie zápisu do podriadeného zariadenia mikrokontrolér odošle stav zastavenia do podriadeného zariadenia.

Príjem dátového rámca:

Príjem dátového rámca

Príjem dátového rámca

Štart: Primárne je to sekvencia prenosu dát iniciovaná nadradeným serverom generujúcim podmienku spustenia.

7-bitová adresa: Potom master pošle slave adresu v dvoch 8-bitových formátoch namiesto jednej 16-bitovej adresy.

Adresa riadiaceho / stavového registra: Adresa riadiaceho / stavového registra má umožňovať riadiace stavové registre.

Riadiaci / stavový register1: Riadiaci stavový register1 používaný na povolenie zariadenia RTC

Riadiaci / stavový register2: Používa sa na povolenie a zakázanie prerušenia.

Č / P: Ak je bit na čítanie a zápis vysoký, vykoná sa operácia čítania.

ALAS: Ak sa operácia zápisu vykonáva v podradenom zariadení, potom prijímač pošle 1-bitový ACK do mikrokontroléra.

Stop: Po dokončení operácie zápisu do podriadeného zariadenia mikrokontrolér odošle stav zastavenia do podriadeného zariadenia.

Krok 5: Programovanie RTC

Operácia zápisu z Master do Slave:

  1. Zadajte podmienku spustenia z hlavného na podriadeného
  2. Prenos adresy slave v režime zápisu na SDL linku
  3. Zašlite adresu kontrolného registra
  4. Zašlite riadiacu / stavovú registračnú hodnotu
  5. Odošlite hodnotu riadiaceho / stavového registra2
  6. Pošlite dátum podobných minút, sekúnd a hodín
  7. Odošlite dorazový bit

#include

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
neplatný štart ()
neplatní hostitelia (nepodpísaný znak)
oneskorenie (nepodpísaný znak)

void main ()
{

štart ()
write (0xA2) // slave address //
write (0x00) // adresa riadiaceho registra //
zapis (0x00) // hodnota riadiaceho registra 1 //
write (0x00) // control regiter2 vlaue //
write (0x28) // sec value //
write (0x50) // minútová hodnota //
zápis (0x02) // hodnota hodín //
}

neplatný štart ()
{

SDA = 1 // spracovanie údajov //
SCL = 1 // hodiny sú vysoké //
oneskorenie (100)
SDA = 0 // odoslal údaje //
oneskorenie (100)
SCL = 0 // hodinový signál je slabý //
}
neplatný zápis (nepodpísaný znak d)
{

nepodpísaný znak k, j = 0 × 80
pre (k = 0 k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
oneskorenie (4)
SCL = 0
}
SDA = 1
SCL = 1
meškanie (2)
c = SDA
meškanie (2)
SCL = 0
}
neplatnosť oneskorenia (int p)
{
unsignedinta, nar
Pre (a = 0a<255a++) //delay function//
Pre (b = 0b}

Prečítajte si operáciu od Slave k Master:

#include
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
neplatný štart ()
neplatný zápis (pridelený znak)
void read ()
void ack ()
neplatnosť oneskorenia (nepodpísaný znak)
void main ()
{
štart ()
write (0xA3) // slave address in read mode //
čítať()
Bohužiaľ ()
sec = hodnota
}
neplatný štart ()
{

SDA = 1 // spracovanie údajov //
SCL = 1 // hodiny sú vysoké //
oneskorenie (100)
SDA = 0 // odoslal údaje //
oneskorenie (100)
SCL = 0 // hodinový signál je slabý //
}
neplatný zápis (nepodpísaný znak d)
{

nepodpísaný znak k, j = 0 × 80
pre (k = 0 k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
oneskorenie (4)
SCL = 0
}
SDA = 1
SCL = 1
meškanie (2)
c = SDA
meškanie (2)
SCL = 0
}
neplatnosť oneskorenia (int p)
{
unsignedinta, nar
Pre (a = 0a<255a++) //delay function//
Pre (b = 0b}
Zrušené čítanie ()
{
Nepodpísaný znak j, z = 0 × 00, q = 0 × 80
SDA = 1
pre (j = 0j<8j++)
{
SCL = 1
oneskorenie (100)
vlajka = SDA
if (príznak == 1)

z = (z
void ack ()
{
SDA = 0 // Riadok SDA klesá na nízku //
SCL = 1 // hodiny sú vysoké až nízke //
oneskorenie (100)
SCL = 0
}

Toto sú nevyhnutné kroky na prepojenie RTC s mikrokontrolérom 8051. Okrem týchto krokov sa v tomto článku pojednáva aj o dátových rámcoch používaných na prenos a prijímanie údajov, aby ich používatelia mohli správne programovať. Pre ďalšiu pomoc ohľadom tohto konceptu môžete zanechať komentár nižšie.