Az RTC (DS1307) összekapcsolása a mikrovezérlővel és annak programozásával

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Az RTC egy olyan elektronikus eszköz, amely alapvető szerepet játszik a valós idejű beágyazott rendszer tervezés . Pontos időt és dátumot biztosít különböző alkalmazásokban, például a rendszer órájában, a hallgatói jelenléti rendszerben és a riasztókban stb., Amelyek nyomon követik az aktuális időt, és következetes eredményt ad az adott feladatnak. Ez a cikk bemutatja az RTC interfészeket a 8051 mikrokerekkel és a belső regiszterek alapvető hozzáférését.

RTC interfész a 8051 mikrokontrollerrel

RTC interfész a 8051 mikrokontrollerrel



RTC programozás és interfész

Az RTC interfész a 8051 mikrovezérlővel hasonló minden más, a hozzá illesztett „valós idejű órához”. Nézzük tehát az egyszerű RTC interfészt 8051 mikrovezérlő programozási eljárás.


1. lépés: Válassza az RTC eszköz lehetőséget

A valós idejű beágyazott világban rendelkezésre állnak a különféle típusú RTC chipek, amelyeket különféle kritériumok, például csomag típusa, tápfeszültség és tűkonfiguráció stb. Alapján osztályoznak. Néhány RTC eszköz



  • Kétvezetékes soros interfész (I2C busz)
  • Háromvezetékes soros interfész (USB busz)
  • Négyvezetékes soros interfész (SPI BUS)

Először meg kell választanunk az RTC eszköz típusát kategóriánként az olyan követelmények alapján, mint az I2C Bus RTC vagy az SPI Bus RTC vagy más, amely alkalmas a megfelelő mikrovezérlővel való összekapcsolásra. Ezután kiválaszthatjuk az RTC készülék jellemzőit az alkalmazási követelményektől függően, mint például az akkumulátor élettartama, a megfelelő csomag és az óra frekvenciája. Vegyük fontolóra a kétvezetékes interfészt RTC 8051 mikrovezérlővel, például DS1307 .

2. lépés: Az RTC eszköz belső nyilvántartása és címe

Az RTC a valós idejű órát jelenti, amely éveket, hónapokat, heteket, napokat, órákat, perceket és másodperceket szolgáltat a kristályfrekvencia alapján. Az RTC beépített RAM memória az adattároláshoz . A tápellátás meghibásodása esetén az akkumulátor tartalékát az RTC eszközhöz csatlakoztatva biztosítja.

RTC DB1307 konfiguráció:

RTC belső blokkok és csapdiagram

RTC belső blokkok és csapdiagram

A0, A1, A2: az RTC DB1307 chip címszegei, amelyek felhasználhatók a master eszközzel való kommunikációra. Nyolc eszközt vezérelhetünk RTC interfésszel 8051 mikrovezérlő A0, A1, A2 bitekkel az I2C protokoll segítségével.


VCC és GND: A VCC és a GND az áramellátás és a földcsapok. Ez az eszköz 1,8–5,5 V tartományban működött.

VBT: A VBT egy akkumulátor tápegysége. Az akkumulátor áramforrását 2 V és 3,5 V között kell tartani.

SCL: Az SCL egy soros órajel, és a soros interfészen lévő adatok szinkronizálására szolgál.

SDL: Ez egy soros bemenet és kimeneti tű. Az adatok továbbítására és fogadására szolgál soros interfészen.

Blokkol munka után: Ez egy opcionális négyzethullámú kimeneti tű.

OSC0 és OSC1: Ezek kristályoszcillátor csapok, amelyek az órajelek továbbítására szolgálnak az RTC eszközhöz. A szokásos kvarckristály-frekvencia 22,768KHzs.

Eszközcímzés:

Az I2C buszprotokoll egyszerre sok szolga eszközt engedélyez. Minden rabszolga eszköznek saját címből kell állnia, amelyet képviselhet rajta. A fő eszköz címmel kommunikál az adott szolga eszközzel. Az RTC eszköz címe „0xA2”, ahol az „1010” a gyártó adja meg, A0, A1, A2 pedig a felhasználó által definiált cím, amelyet nyolc RTC eszköz kommunikációjára használnak a I2C busz protokoll .

Device Addresing

Device Addresing

Az R / W bitet olvasási és írási műveletek végrehajtására használják az RTC-ben. Ha R / W = 0, akkor írási műveletet hajtunk végre, és R / W = 1 olvasási műveletet.

Az RTC olvasási műveletének címe = “0xA3”

Az RTC írási műveletének címe = “0xA2”

Memória regiszterek és címek:

Az RTC regiszterek 00h-tól 0Fh-ig, a RAM memória regiszterek pedig 08h-tól 3Fh-ig találhatók, az ábrán látható módon. Az RTC regisztereket a naptár funkcióinak és a nap menetidejének biztosítására, valamint a hétvégék megjelenítésére használják.

Memória regiszterek és címek

Memória regiszterek és címek

Ellenőrzési / állapotregiszterek:

A DB1307 két további regiszterből áll, mint például a vezérlés / állapot1 és a vezérlés / állapot2, amelyek a valós idejű óra vezérlésére szolgálnak, és - szakítja félbe .

Control / Status Register1:

Ellenőrzési állapot nyilvántartás

Ellenőrzési állapot nyilvántartás

  • TEST1 = 0 normál mód

= 1 EXT-óra teszt üzemmód

  • STOP = 0 Az RTC elindul

= 1 RTC stop

  • TESTC = 0 áramellátás visszaállítása letiltva

= bekapcsolás visszaállítása engedélyezve

Control / Status Register2:

Ellenőrzési állapot regisztráció2

Ellenőrzési állapot regisztráció2

  • TI / TP = 0 INT állandóan aktív

= 1 INT aktív szükséges idő

  • AF = 0 A riasztás nem egyezik

= 1 riasztási egyezés

  • TF = 0 Az időzítő túlcsordulása nem fordul elő

= 1 Időzítő túlcsordulás következik be

  • ALE = 0 A riasztás megszakítja a letiltást

= 1 A riasztás megszakítás engedélyezve

  • TIE = 0 Az időzítő megszakítja a letiltást

= 1 Az időzítő megszakítja az engedélyezést

3. lépés: Az RTC ds1307 és a 8051 összekapcsolása

Az RTC lehet a mikrovezérlőhöz kapcsolódva különböző soros buszprotokollok, például I2C és SPI protokollok amelyek kommunikációs kapcsolatot biztosítanak közöttük. Az ábra mutatja, valós idejű óra kapcsolódás a 8051 mikrovezérlőhöz, I2C busz protokoll használatával. Az I2C egy kétirányú soros protokoll, amely két vezetékből áll, például SCL és SDA az adatok átvitele érdekében a buszhoz csatlakoztatott eszközök között. A 8051 mikrovezérlőnek nincs beépített RTC eszköze, ezért a soros kommunikáció az összetett adatok biztosítása érdekében.

RTC interfész a 8051 mikrokontrollerrel

RTC interfész a 8051 mikrokontrollerrel

Az I2C eszközök nyitott lefolyó kimenetekkel rendelkeznek, ezért az I2C buszvezetékhez feszültségforrással fel kell húzni az ellenállásokat. Ha az ellenállások nincsenek csatlakoztatva az SCL és SDL vonalakhoz, akkor a busz nem fog működni.

4. lépés: RTC Data Framing Format

Mivel az RTC interfész a 8051 mikrovezérlővel I2C buszt használ, az adatátvitel bájtok vagy csomagok formájában történik, és mindegyik bájtot nyugtázás követi.

Adatkeret továbbítása:

Átviteli módban a master elengedi az indítási feltételt, miután a szolga eszközt címbit alapján választotta ki. A címbit tartalmaz 7 bitet, amelyek a slave eszközöket ds1307 címként jelzik. A soros adatokat és a soros órákat SCL és SDL vonalakon továbbítják. A START és a STOP feltételeket a soros átvitel kezdetének és végének ismerjük el. A vételi és továbbítási műveleteket az R / W bit követi.

Adatkeret továbbítása

Adatkeret továbbítása

Rajt: Elsõsorban az az adatátviteli sorrend, amelyet a mester indított el a startfeltételt generálva.

7 bites cím: Ezt követően a master két 8 bites formátumban küldi el a szolga címet egyetlen 16 bites cím helyett.

Vezérlő / státusz regisztráció címe: A vezérlés / állapot regiszter címének lehetővé kell tennie a kontroll állapot regisztereket.

Control / Status Register1: Az RTC eszköz engedélyezéséhez használt vezérlési állapot regiszter1

Control / Status Register2: A megszakítások engedélyezésére és letiltására szolgál.

R / W: Ha az olvasási és írási bit kevés, akkor az írási művelet végrehajtásra kerül.

JAJ: Ha az író műveletet a slave eszközben hajtják végre, akkor a vevő 1 bites ACK-t küld a mikrovezérlőnek.

Álljon meg: Az író művelet befejezése után a slave eszközben a mikrovezérlő leállítási állapotot küld a slave eszköznek.

Adatkeret fogadása:

Adatkeret fogadása

Adatkeret fogadása

Rajt: Elsõsorban az az adatátviteli sorrend, amelyet a mester indított el a startfeltételt generálva.

7 bites cím: Ezt követően a master két 8 bites formátumban küldi el a rabszolga címet egyetlen 16 bites cím helyett.

Vezérlő / státusz regisztráció címe: A kontroll / állapot regiszter cím lehetővé teszi a kontroll állapot regiszterek használatát.

Control / Status Register1: Az RTC eszköz engedélyezéséhez használt vezérlő állapot regiszter1

Control / Status Register2: A megszakítások engedélyezésére és letiltására szolgál.

R / W: Ha az olvasási és írási bit magas, akkor az olvasási műveletet hajtjuk végre.

JAJ: Ha az író műveletet a slave eszközben hajtják végre, akkor a vevő 1 bites ACK-t küld a mikrovezérlőnek.

Álljon meg: Az író művelet befejezése után a slave eszközben a mikrovezérlő leállítási állapotot küld a slave eszköznek.

5. lépés: RTC programozás

Írási művelet a mestertől a rabszolgáig:

  1. Adja ki az indítási feltételt mesterről rabszolgára
  2. Töltse át a slave címet írási módban az SDL vonalon
  3. Küldje el a kontrollregiszter címét
  4. Küldje el a control / status register1value értéket
  5. Küldje el a control / status register2 értéket
  6. Küldje el a hasonló percek, másodpercek és órák dátumát
  7. Küldje el a leállító bitet

#include

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
érvénytelen kezdet ()
void hosts (aláíratlan karakter)
késés (aláíratlan karakter)

void main ()
{

Rajt()
write (0xA2) // rabszolga címe //
write (0x00) // kontrollregiszter címe //
write (0x00) // 1. kontrollregiszter értéke //
write (0x00) // kontroll regiter2 vlaue //
write (0x28) // sec érték //
write (0x50) // percérték //
write (0x02) // óraérték //
}

érvénytelen kezdet ()
{

SDA = 1 // az adatok feldolgozása //
SCL = 1 // az óra magas //
késés (100)
SDA = 0 // elküldte az adatokat //
késés (100)
SCL = 0 // az órajel alacsony //
}
void write (aláíratlan karakter d)
{

előjel nélküli char k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
késés (4)
SCL = 0
}
SDA = 1
SCL = 1
késés (2)
c = SDA
késés (2)
SCL = 0
}
érvénytelen késleltetés (int p)
{
aláíratlan, szül
Mert (a = 0a<255a++) //delay function//
Mert (b = 0b}

Olvassa el a műveletet a rabszolgától a mesterig:

#include
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
érvénytelen kezdet ()
void write (usigned char)
void read ()
void ack ()
érvénytelen késleltetés (aláíratlan karakter)
void main ()
{
Rajt()
write (0xA3) // slave cím olvasási módban //
olvas()
Jaj()
sec = érték
}
érvénytelen kezdet ()
{

SDA = 1 // az adatok feldolgozása //
SCL = 1 // az óra magas //
késés (100)
SDA = 0 // elküldte az adatokat //
késés (100)
SCL = 0 // az órajel alacsony //
}
void write (aláíratlan karakter d)
{

előjel nélküli char k, j = 0 × 80
for (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
késés (4)
SCL = 0
}
SDA = 1
SCL = 1
késés (2)
c = SDA
késés (2)
SCL = 0
}
érvénytelen késleltetés (int p)
{
aláíratlan, szül
Mert (a = 0a<255a++) //delay function//
Mert (b = 0b}
Érvénytelen olvasás ()
{
Aláíratlan karakter j, z = 0 × 00, q = 0 × 80
SDA = 1
(j = 0j<8j++)
{
SCL = 1
késés (100)
zászló = SDA
if (zászló == 1)

z = (z
void ack ()
{
SDA = 0 // Az SDA sor alacsonyra megy //
SCL = 1 // az óra magasról alacsonyra //
késés (100)
SCL = 0
}

Ezek a szükséges lépések az RTC interfészhez a 8051 mikrovezérlővel. Ezen lépések kiegészítéseként ebben a cikkben az adatok továbbításához és fogadásához használt adatkereteket is tárgyaljuk, hogy a felhasználók megfelelő programozással megértsék őket. Ha további segítségre van szüksége ezzel a koncepcióval kapcsolatban, akkor hagyjon megjegyzést alább.