RTC (DS1307) ile Mikroişlemci ve Programlama Arayüzü

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





RTC, önemli bir rol oynayan elektronik bir cihazdır. gerçek zamanlı gömülü sistem tasarımı . Sistem saati, öğrenci devam sistemi ve alarm gibi çeşitli uygulamalarda mevcut zamanı takip eden ve ilgili göreve tutarlı sonuç veren kesin bir saat ve tarih sağlar. Bu makale, 8051 mikro denetleyici ile RTC arabirimini ve dahili kayıtlara temel erişimi sunar.

8051 Mikrodenetleyici ile RTC Arayüzü

8051 Mikrodenetleyici ile RTC Arayüzü



RTC Programlama ve Arayüz

8051 mikro denetleyiciyle RTC arabirimi, ona arabirim olan diğer tüm 'Gerçek Zamanlı Saatler' türlerine benzer. Öyleyse, basit RTC arayüzüne bakalım. 8051 mikrodenetleyici ve bununla ilgili programlama prosedürü.


Adım 1: RTC Cihazını Seçin

Paket tipi, besleme gerilimi ve pin konfigürasyonu gibi çeşitli kriterlere göre sınıflandırılan gerçek zamanlı gömülü dünyada çeşitli RTC çipleri mevcuttur. Birkaç tip RTC cihazı vardır.



  • İki Kablolu Seri Arabirim (I2C Veriyolu)
  • Üç Kablolu Seri Arabirim (USB BUS)
  • Dört telli Seri arabirim (SPI BUS)

İlk olarak, I2C Bus RTC veya SPI Bus RTC gibi gereksinime göre kategoriye göre RTC cihazının tipini seçmemiz gerekir, bunlar ilgili mikro denetleyici ile arayüz oluşturmaya uygundur. Daha sonra pil ömrü, uygun paket ve saat frekansı gibi uygulama ihtiyacına göre RTC cihazının özelliklerini seçebiliriz. İki telli arabirimi düşünelim DS1307 gibi 8051 mikro denetleyicili RTC .

Adım 2: RTC Cihazının Dahili Kaydı ve Adresi

RTC, kristal frekansına dayalı olarak yıllar, aylar, haftalar, günler, saatler, dakikalar ve saniyeler sağlayan gerçek zamanlı saat anlamına gelir. RTC dahili içerir Veri depolama için RAM bellek . Ana güç kaynağının arızalanması durumunda, bir pilin RTC cihazına bağlanmasıyla bir pil yedeği sağlanacaktır.

RTC DB1307 Yapılandırması:

RTC Dahili Blokları ve Pin Şeması

RTC Dahili Blokları ve Pin Şeması

A0, A1, A2: ana cihazla iletişim kurmak için kullanılabilen RTC DB1307 yongasının adres pinleridir. RTC arayüzlü sekiz cihazı kontrol edebiliriz. 8051 mikrodenetleyici I2C protokolünü kullanarak A0, A1, A2 bitleri ile.


VCC ve GND: VCC ve GND sırasıyla güç kaynağı ve toprak pimleridir. Bu cihaz 1.8V ile 5.5V aralığında çalışmaktadır.

VBT: VBT bir pil güç kaynağı pinidir. Pil güç kaynağı 2V ile 3.5V arasında tutulmalıdır.

SCL: SCL, seri bir saat pinidir ve seri arayüz üzerindeki verileri senkronize etmek için kullanılır.

SDL: Seri giriş ve çıkış pinidir. Verilerin seri arayüz üzerinden iletilmesi ve alınması için kullanılır.

Saat Çıkışı: Opsiyonel kare dalga çıkış pinidir.

OSC0 ve OSC1: RTC cihazına saat sinyallerini sağlamak için kullanılan kristal osilatör pimleridir. Standart kuvars kristali frekansı 22.768KHz'dir.

Aygıt Adresleme:

I2C veri yolu protokolü aynı anda birçok bağımlı cihaza izin verir. Her bağımlı cihaz, üzerinde temsil edilebilmesi için kendi adresinden oluşmalıdır. Ana cihaz, belirli bir bağımlı cihaz ile bir adres aracılığıyla iletişim kurar. RTC cihaz adresi '0xA2' dir, burada '1010' üretici tarafından verilir ve A0, A1, A2 kullanıcı tanımlı adres olup, cihaz üzerindeki sekiz RTC cihazını iletmek için kullanılır. I2C veri yolu protokolü .

Cihaz Adresleme

Cihaz Adresleme

R / W biti, RTC'de okuma ve yazma işlemlerini gerçekleştirmek için kullanılır. R / W = 0 ise, yazma işlemi gerçekleştirilir ve okuma işlemi için R / W = 1'dir.

RTC'nin Okuma işleminin adresi = '0xA3'

RTC'nin Yazma işleminin adresi = '0xA2'

Hafıza Kayıtları ve Adres:

RTC kayıtları 00h ila 0Fh arasındaki adres konumlarında bulunur ve RAM bellek kayıtları, şekilde gösterildiği gibi 08h ila 3Fh arasındaki adres konumlarında bulunur. RTC kayıtları, takvim işlevselliği ve günün sürüş saatini sağlamak ve hafta sonlarını görüntülemek için kullanılır.

Hafıza Kayıtları ve Adres

Hafıza Kayıtları ve Adres

Kontrol / Durum Kayıtları:

DB1307, gerçek zamanlı saati kontrol etmek için kullanılan kontrol / durum1 ve kontrol / durum2 gibi iki ek kayıttan oluşur ve keser .

Kontrol / Durum Kaydı1:

Kontrol Durumu Kaydı1

Kontrol Durumu Kaydı1

  • TEST1 = 0 normal mod

= 1 EXT-saat test modu

  • DUR = 0 RTC başlar

= 1 RTC durması

  • TESTC = 0 güç açık sıfırlama devre dışı

= güç sıfırlama etkin

Kontrol / Durum Kaydı2:

Kontrol Durumu Register2

Kontrol Durumu Register2

  • TI / TP = 0 INT her zaman aktif

= 1 INT aktif gerekli süre

  • AF = 0 Alarm eşleşmiyor

= 1 Alarm eşleşmesi

  • TF = 0 Zamanlayıcı taşması oluşmaz

= 1 Zamanlayıcı taşması meydana gelir

  • ALE = 0 Alarm kesintileri devre dışı

= 1 Alarm kesintileri etkin

  • TIE = 0 Zamanlayıcı kesintileri devre dışı

= 1 Zamanlayıcı kesintileri etkin

Adım 3: RTC ds1307 ile 8051'i arayüzleme

RTC olabilir mikro denetleyiciye arayüzlü I2C gibi farklı seri veri yolu protokollerini kullanarak ve SPI protokolleri aralarındaki iletişim bağlantısını sağlayan. Şekil, I2C veri yolu protokolünü kullanarak 8051 mikro denetleyici ile gerçek zamanlı saat arabirimini gösterir. I2C, veriyoluna bağlı cihazlar arasında veri aktarmak için SCL ve SDA gibi iki kablodan oluşan iki yönlü bir seri protokoldür. 8051 mikro denetleyicinin dahili RTC cihazı yoktur, bu nedenle harici olarak bir seri iletişim oluşan verileri sağlamak için.

8051 Mikrodenetleyici ile RTC Arayüzü

8051 Mikrodenetleyici ile RTC Arayüzü

I2C cihazlarının açık tahliye çıkışları vardır, bu nedenle, bir gerilim kaynağı ile I2C veri yolu hattına bir çekme dirençleri bağlanmalıdır. Dirençler SCL ve SDL hatlarına bağlı değilse, veri yolu çalışmayacaktır.

Adım4: RTC Veri Çerçeveleme Formatı

8051 mikro denetleyici ile RTC arabirimi I2C veriyolu kullandığından, veri aktarımı bayt veya paket biçimindedir ve her baytı bir alındı ​​bildirimi izler.

Veri Çerçevesi Gönderme:

İletim modunda, ana cihaz, adres bitine göre bağımlı cihazı seçtikten sonra başlatma koşulunu serbest bırakır. Adres biti, bağımlı cihazları ds1307 adresi olarak gösteren 7 bit içerir. Seri veri ve seri saat, SCL ve SDL hatlarında iletilir. BAŞLAT ve DURDUR koşulları, bir seri aktarımın başlangıcı ve bitişi olarak tanınır. Alma ve gönderme işlemlerinin ardından R / W biti gelir.

Veri Çerçevesi Gönderme

Veri Çerçevesi Gönderme

Başlat: Öncelikle, başlangıç ​​koşulunu oluşturan ana birim tarafından başlatılan veri aktarım dizisi.

7 bitlik Adres: Bundan sonra master, tek bir 16-bit adres yerine iki 8-bitlik formatta slave adresini gönderir.

Kontrol / Durum Kayıt Adresi: Kontrol / durum kayıt adresi, kontrol durumu kayıtlarına izin vermek içindir.

Kontrol / Durum Kaydı1: RTC cihazını etkinleştirmek için kullanılan kontrol durumu kaydı1

Kontrol / Durum Kaydı2: Kesintileri etkinleştirmek ve devre dışı bırakmak için kullanılır.

R / W: Okuma ve yazma biti düşükse, yazma işlemi gerçekleştirilir.

ALAS: Bağımlı cihazda yazma işlemi yapılırsa, alıcı mikro denetleyiciye 1 bitlik ACK gönderir.

Dur: Slave cihazda yazma işlemi tamamlandıktan sonra, mikro kontrolör slave cihaza durdurma koşulu gönderir.

Veri Çerçevesini Alma:

Veri Çerçevesini Alma

Veri Çerçevesini Alma

Başlat: Öncelikle, başlangıç ​​koşulunu oluşturan ana birim tarafından başlatılan veri aktarım dizisi.

7 bitlik Adres: Bundan sonra master, tek bir 16-bit adres yerine iki 8-bit formatta slave adresi gönderir.

Kontrol / Durum Kayıt Adresi: Kontrol / durum kayıt adresi, kontrol durumu kayıtlarına izin vermek içindir.

Control / Status Register1: RTC cihazını etkinleştirmek için kullanılan kontrol durumu kaydı1

Kontrol / Durum Kaydı2: Kesintileri etkinleştirmek ve devre dışı bırakmak için kullanılır.

R / W: Okuma ve yazma biti yüksekse, okuma işlemi gerçekleştirilir.

ALAS: Bağımlı cihazda yazma işlemi yapılırsa, alıcı mikro denetleyiciye 1 bitlik ACK gönderir.

Dur: Slave cihazda yazma işlemi tamamlandıktan sonra, mikro kontrolör slave cihaza durdurma koşulu gönderir.

Adım5: RTC Programlama

Master'dan Slave'e Yazma İşlemi:

  1. Başlatma koşulunu ana birimden ikincil konuma düzenleyin
  2. Slave adresini SDL hattına yazma modunda aktarın
  3. Kontrol kaydı adresini gönderin
  4. Kontrol / durum kayıt 1 değerini gönder
  5. Kontrol / durum kayıt2 değerini gönderin
  6. Benzer dakika, saniye ve saatlerin tarihini gönder
  7. Durdurma bitini gönder

#Dahil etmek

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
geçersiz başlangıç ​​()
geçersiz ana bilgisayarlar (imzasız karakter)
gecikme (işaretsiz karakter)

void main ()
{

Başlat()
yaz (0xA2) // slave adresi //
yaz (0x00) // kontrol kayıt adresi //
yaz (0x00) // kontrol kaydı 1 değeri //
yaz (0x00) // kontrol regiter2 vlaue //
yaz (0x28) // sn değeri //
yaz (0x50) // dakika değeri //
yaz (0x02) // saat değeri //
}

geçersiz başlangıç ​​()
{

SDA = 1 // verileri işlemek //
SCL = 1 // saat yüksektir //
gecikme (100)
SDA = 0 // verileri gönderdi //
gecikme (100)
SCL = 0 // saat sinyali düşük //
}
geçersiz yazma (işaretsiz karakter d)
{

işaretsiz karakter k, j = 0 × 80
(k = 0k için<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
gecikme (4)
SCL = 0
}
SDA = 1
SCL = 1
gecikme (2)
c = SDA
gecikme (2)
SCL = 0
}
geçersiz gecikme (int p)
{
unsignedinta, b
(A = 0a için<255a++) //delay function//
(B = 0b için}

Slave'den Master'a İşlemi Okuyun:

#Dahil etmek
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
geçersiz başlangıç ​​()
geçersiz yazma (kullanılan karakter)
geçersiz okuma ()
geçersiz ack ()
geçersiz gecikme (işaretsiz karakter)
void main ()
{
Başlat()
yazma (0xA3) // slave adresi okuma modunda //
oku ()
Ne yazık ki ()
sn = değer
}
geçersiz başlangıç ​​()
{

SDA = 1 // verileri işlemek //
SCL = 1 // saat yüksektir //
gecikme (100)
SDA = 0 // verileri gönderdi //
gecikme (100)
SCL = 0 // saat sinyali düşük //
}
geçersiz yazma (işaretsiz karakter d)
{

işaretsiz karakter k, j = 0 × 80
(k = 0k için<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
gecikme (4)
SCL = 0
}
SDA = 1
SCL = 1
gecikme (2)
c = SDA
gecikme (2)
SCL = 0
}
geçersiz gecikme (int p)
{
unsignedinta, b
(A = 0a için<255a++) //delay function//
(B = 0b için}
Boş okuma ()
{
İşaretsiz karakter j, z = 0 × 00, q = 0 × 80
SDA = 1
için (j = 0j<8j++)
{
SCL = 1
gecikme (100)
bayrak = SDA
eğer (bayrak == 1)

z = (z
geçersiz ack ()
{
SDA = 0 // SDA hattı alçakta //
SCL = 1 // saat yüksekten düşüğe //
gecikme (100)
SCL = 0
}

Bunlar, 8051 mikro denetleyici ile RTC arabirimi oluşturmak için gerekli adımlardır. Bu adımlara ek olarak, verilerin aktarılması ve alınması için kullanılan veri çerçeveleri de uygun programlama ile kullanıcının anlayışı için bu makalede ele alınmıştır. Bu konseptle ilgili daha fazla yardım için aşağıya bir yorum bırakabilirsiniz.