Propojení RTC (DS1307) s mikrokontrolérem a jeho programování

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





RTC je elektronické zařízení, které hraje v design vestavěného systému v reálném čase . Poskytuje přesný čas a datum v různých aplikacích, jako jsou systémové hodiny, docházkový systém studentů a budík atd., Které sledují aktuální čas a poskytují konzistentní výsledky pro daný úkol. Tento článek představuje rozhraní RTC s mikrokontrolérem 8051 a základní přístup k interním registrům.

Rozhraní RTC s mikrokontrolérem 8051

Rozhraní RTC s mikrokontrolérem 8051



Programování a propojení RTC

Rozhraní RTC s mikrokontrolérem 8051 je podobné všem ostatním druhům „hodin reálného času“ s rozhraním. Podívejme se tedy na jednoduché rozhraní RTC 8051 mikrokontrolér a programovací postup, který je do něj zapojen.


Krok 1: Vyberte zařízení RTC

Ve vestavěném světě v reálném čase jsou k dispozici různé druhy čipů RTC, které jsou klasifikovány na základě různých kritérií, jako je typ balíčku, napájecí napětí a konfigurace kolíků atd. Několik typů zařízení RTC je



  • Dvouvodičové sériové rozhraní (sběrnice I2C)
  • Třívodičové sériové rozhraní (USB BUS)
  • Čtyřvodičové sériové rozhraní (SPI BUS)

Nejprve musíme vybrat typ zařízení RTC podle kategorie na základě požadavku, jako je I2C Bus RTC nebo SPI Bus RTC nebo jiný, který je vhodný pro propojení s příslušným mikrokontrolérem. Poté můžeme vybrat vlastnosti zařízení RTC v závislosti na požadavcích aplikace, jako je životnost baterie, vhodný balíček a frekvence hodin. Zvažme dvouvodičové rozhraní RTC s mikrokontrolérem 8051, jako je DS1307 .

Krok 2: Interní registr a adresa zařízení RTC

RTC znamená hodiny reálného času, které poskytují roky, měsíce, týdny, dny, hodiny, minuty a sekundy na základě frekvence krystalů. RTC se skládá z vestavěného RAM paměť pro ukládání dat . Záloha baterie bude zajištěna v případě výpadku hlavního napájení připojením baterie k RTC zařízení.

Konfigurace RTC DB1307:

Interní bloky a schéma kolíků RTC

Interní bloky a schéma kolíků RTC

A0, A1, A2: jsou adresové piny čipu RTC DB1307, kterými lze komunikovat s nadřazeným zařízením. Můžeme ovládat osm zařízení s rozhraním RTC 8051 mikrokontrolér pomocí bitů A0, A1, A2 pomocí protokolu I2C.


VCC a GND: VCC a GND jsou napájecí a zemnící kolíky. Toto zařízení fungovalo s rozsahem 1,8 V až 5,5 V.

VBT: VBT je kolík napájení z baterie. Napájení z baterie musí být udržováno mezi 2V až 3,5V.

SCL: SCL je sériový hodinový kolík a slouží k synchronizaci dat na sériovém rozhraní.

SDL: Jedná se o sériový vstupní a výstupní pin. Používá se k přenosu a příjmu dat na sériovém rozhraní.

Hodiny: Jedná se o volitelný výstupní obdélníkový výstup.

OSC0 a OSC1: Jedná se o piny krystalového oscilátoru, které se používají k poskytování hodinových signálů zařízení RTC. Standardní frekvence křemenného krystalu je 22,768 kHz.

Adresování zařízení:

Protokol sběrnice I2C umožňuje mnoho podřízených zařízení najednou. Každé podřízené zařízení se musí skládat z vlastní adresy, aby na něm byla reprezentována. Hlavní zařízení komunikuje s konkrétním podřízeným zařízením pomocí adresy. Adresa zařízení RTC je „0xA2“, přičemž „1010“ je dáno výrobcem a A0, A1, A2 jsou uživatelem definovaná adresa, která se používá ke komunikaci osmi zařízení RTC na Protokol sběrnice I2C .

Adresování zařízení

Adresování zařízení

Bit R / W se používá k provádění operací čtení a zápisu v RTC. Pokud R / W = 0, provede se operace zápisu a R / W = 1 pro operaci čtení.

Adresa operace čtení RTC = „0xA3“

Adresa operace zápisu RTC = „0xA2“

Paměťové registry a adresa:

RTC registry jsou umístěny v adresách od 00h do 0Fh a RAM paměťové registry jsou umístěny v adresách od 08h do 3Fh, jak je znázorněno na obrázku. RTC registry se používají k zajištění funkce kalendáře a denní doby jízdy a k zobrazení víkendů.

Paměťové registry a adresa

Paměťové registry a adresa

Řídicí / stavové registry:

DB1307 se skládá ze dvou dalších registrů, jako je control / status1 a control / status2, které se používají k ovládání hodin reálného času a přerušení .

Control / Status Register1:

Registr stavu kontroly 1

Registr stavu kontroly 1

  • TEST1 = 0 normální režim

= 1 testovací režim hodin EXT

  • STOP = 0 RTC se spustí

= 1 zastavení RTC

  • TESTC = 0 reset napájení deaktivován

= zapnutí napájení povoleno

Control / Status Register2:

Registr stavu kontroly 2

Registr stavu kontroly 2

  • TI / TP = 0 INT stále aktivní

= 1 INT aktivní požadovaný čas

  • AF = 0 Alarm se neshoduje

= 1 Shoda alarmu

  • TF = 0 Přetečení časovače nenastane

= 1 Došlo k přetečení časovače

  • ALE = 0 Přerušení alarmu deaktivováno

= 1 Přerušení alarmu povoleno

  • TIE = 0 Časová přerušení jsou deaktivována

= 1 Časové přerušení povoleno

Krok 3: Propojení RTC ds1307 s 8051

RTC může být propojen s mikrokontrolérem pomocí různých protokolů sériové sběrnice, jako jsou I2C a SPI protokoly které poskytují komunikační spojení mezi nimi. Obrázek ukazuje, hodiny reálného času propojené s mikrokontrolérem 8051 pomocí protokolu sběrnice I2C. I2C je obousměrný sériový protokol, který se skládá ze dvou vodičů, jako je SCL a SDA, k přenosu dat mezi zařízeními připojenými ke sběrnici. Mikrokontrolér 8051 nemá žádné vestavěné zařízení RTC, proto jsme se připojili externě přes a sériová komunikace pro zajištění sestávajících dat.

Rozhraní RTC s mikrokontrolérem 8051

Rozhraní RTC s mikrokontrolérem 8051

Zařízení I2C mají otevřené odtokové výstupy, proto musí být na linku sběrnice I2C připojeny pull-up rezistory se zdrojem napětí. Pokud rezistory nejsou připojeny k linkám SCL a SDL, sběrnice nebude fungovat.

Krok 4: Formát rámování dat RTC

Protože rozhraní RTC s mikrokontrolérem 8051 používá sběrnici I2C, je datový přenos ve formě bajtů nebo paketů a po každém bajtu následuje potvrzení.

Přenos datového rámce:

V režimu vysílání uvolní hlavní spouštěcí podmínku po výběru podřízeného zařízení adresním bitem. Bit adresy obsahuje 7 bitů, které označují podřízená zařízení jako adresu ds1307. Sériová data a sériové hodiny jsou přenášeny na linkách SCL a SDL. Podmínky START a STOP jsou rozpoznány jako začátek a konec sériového přenosu. Po operacích příjmu a přenosu následuje bit R / W.

Přenos datového rámce

Přenos datového rámce

Start: Primárně sekvence přenosu dat zahájená masterem generujícím počáteční podmínku.

7bitová adresa: Poté master odešle adresu slave ve dvou 8bitových formátech namísto jediné 16bitové adresy.

Kontrolní / stavová registrační adresa: Adresa řídicího / stavového registru má umožňovat řídicí stavové registry.

Control / Status Register1: Registr stavu řízení 1 použitý k povolení zařízení RTC

Control / Status Register2: Používá se k povolení a zakázání přerušení.

R / W: Pokud je bit pro čtení a zápis nízký, provede se operace zápisu.

BĚDA: Pokud se operace zápisu provádí v podřízeném zařízení, pak přijímač odešle 1bitový ACK do mikrokontroléru.

Stop: Po dokončení operace zápisu do podřízeného zařízení mikrokontrolér odešle podmínku zastavení do podřízeného zařízení.

Příjem datového rámce:

Příjem datového rámce

Příjem datového rámce

Start: Primárně sekvence přenosu dat zahájená masterem generujícím počáteční podmínku.

7bitová adresa: Poté master odešle slave adresu ve dvou 8bitových formátech namísto jediné 16bitové adresy.

Kontrolní / stavová registrační adresa: Adresa řídicího / stavového registru má umožňovat řízení stavových registrů.

Řídicí / stavový registr1: Řídicí stavový registr1 používaný k povolení zařízení RTC

Control / Status Register2: Používá se k povolení a zakázání přerušení.

R / W: Pokud je bit pro čtení a zápis vysoký, provede se operace čtení.

BĚDA: Pokud se operace zápisu provádí v podřízeném zařízení, pak přijímač odešle 1bitový ACK do mikrokontroléru.

Stop: Po dokončení operace zápisu do podřízeného zařízení mikrokontrolér odešle podmínku zastavení do podřízeného zařízení.

Krok 5: Programování RTC

Zápis operace z Master do Slave:

  1. Vydejte podmínku spuštění z hlavního na podřízeného
  2. Přeneste adresu slave v režimu zápisu na linku SDL
  3. Zašlete adresu kontrolního registru
  4. Odešlete hodnotu control / status register1
  5. Odešlete hodnotu control / status register2
  6. Odešlete datum podobných minut, sekund a hodin
  7. Zašlete stop bit

#zahrnout

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
neplatný start ()
neplatní hostitelé (nepodepsaný znak)
zpoždění (nepodepsaný znak)

void main ()
{

Start()
write (0xA2) // slave address //
zápis (0x00) // adresa řídicího registru //
zápis (0x00) // hodnota řídícího registru 1 //
write (0x00) // control regiter2 vlaue //
write (0x28) // sec value //
write (0x50) // minutová hodnota //
zápis (0x02) // hodnota hodin //
}

neplatný start ()
{

SDA = 1 // zpracování dat //
SCL = 1 // hodiny jsou vysoké //
zpoždění (100)
SDA = 0 // odeslala data //
zpoždění (100)
SCL = 0 // hodinový signál je slabý //
}
neplatný zápis (nepodepsaný znak d)
{

nepodepsaný znak k, j = 0 × 80
pro (k = 0 k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zpoždění (4)
SCL = 0
}
SDA = 1
SCL = 1
zpoždění (2)
c = SDA
zpoždění (2)
SCL = 0
}
neplatnost zpoždění (int p)
{
unsignedinta, nar
Pro (a = 0a<255a++) //delay function//
Pro (b = 0b}

Přečíst operaci od Slave k Master:

#zahrnout
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
neplatný start ()
neplatný zápis (přiřazený znak)
void read ()
void ack ()
neplatnost zpoždění (nepodepsaný znak)
void main ()
{
Start()
write (0xA3) // slave address in read mode //
číst()
Běda()
sec = hodnota
}
neplatný start ()
{

SDA = 1 // zpracování dat //
SCL = 1 // hodiny jsou vysoké //
zpoždění (100)
SDA = 0 // odeslala data //
zpoždění (100)
SCL = 0 // hodinový signál je slabý //
}
neplatný zápis (nepodepsaný znak d)
{

nepodepsaný znak k, j = 0 × 80
pro (k = 0 k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
zpoždění (4)
SCL = 0
}
SDA = 1
SCL = 1
zpoždění (2)
c = SDA
zpoždění (2)
SCL = 0
}
neplatnost zpoždění (int p)
{
unsignedinta, nar
Pro (a = 0a<255a++) //delay function//
Pro (b = 0b}
Prázdné čtení ()
{
Nepodepsaný znak j, z = 0 × 00, q = 0 × 80
SDA = 1
pro (j = 0j<8j++)
{
SCL = 1
zpoždění (100)
vlajka = SDA
if (flag == 1)

z = (z
void ack ()
{
SDA = 0 // řádek SDA klesá na nízkou //
SCL = 1 // hodiny jsou vysoké až nízké //
zpoždění (100)
SCL = 0
}

Toto jsou nezbytné kroky pro propojení RTC s mikrokontrolérem 8051. Kromě těchto kroků jsou v tomto článku pojednány také datové rámce používané k přenosu a přijímání dat, aby uživatelé porozuměli vhodnému programování. Pro další pomoc ohledně tohoto konceptu můžete zanechat komentář níže.