RTC (DS1307) sąsaja su mikrovaldikliu ir jo programavimas

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





RTC yra elektroninis prietaisas, atliekantis svarbų vaidmenį realiuoju laiku įterptųjų sistemų projektavimas . Tai pateikia tikslų laiką ir datą įvairiose programose, tokiose kaip sistemos laikrodis, mokinių lankymo sistema, signalizacija ir kt., Kurios seka esamą laiką ir pateikia nuoseklų rezultatą atitinkamai užduočiai atlikti. Šiame straipsnyje pateikiama RTC sąsaja su 8051 mikrovaldikliu ir pagrindinė prieiga prie vidinių registrų.

RTC sąsaja su 8051 mikrovaldikliu

RTC sąsaja su 8051 mikrovaldikliu



RTC programavimas ir sąsajos

RTC sąsaja su 8051 mikrovaldikliu yra panaši į visų kitų „Real Time Clocks“ tipų sąsajas. Taigi pažvelkime į paprastą RTC sąsają su 8051 mikrovaldiklis programavimo procedūra.


1 žingsnis: Pasirinkite RTC įrenginį

Realiuoju laiku įterptame pasaulyje yra įvairių RTC lustų, kurios klasifikuojamos pagal įvairius kriterijus, tokius kaip paketo tipas, maitinimo įtampa ir kaiščių konfigūracija ir kt. Yra keletas RTC įrenginių tipų



  • Dviejų laidų nuoseklioji sąsaja (I2C magistralė)
  • Trijų laidų nuoseklioji sąsaja (USB magistralė)
  • Keturių laidų nuoseklioji sąsaja (SPI magistralė)

Pirma, turime pasirinkti RTC įrenginio tipą pagal kategoriją pagal reikalavimus, pvz., „I2C Bus RTC“ arba „SPI Bus RTC“ ar kitus, kurie tinka sąsajai su atitinkamu mikrovaldikliu. Tada galime pasirinkti RTC įrenginio savybes, priklausomai nuo taikymo reikalavimo, pvz., Baterijos veikimo laikas, tinkamas paketas ir laikrodžio dažnis. Apsvarstykime dviejų laidų sąsają RTC su 8051 mikrovaldikliu, tokiu kaip DS1307 .

2 žingsnis: RTC įrenginio vidinis registras ir adresas

RTC reiškia realaus laiko laikrodį, kuris teikia metus, mėnesius, savaites, dienas, valandas, minutes ir sekundes, remiantis kristalų dažniu. RTC sudaro įmontuota RAM atmintis duomenims saugoti . Nutrūkus pagrindiniam maitinimo šaltiniui, bus prijungta baterija prie RTC įrenginio.

RTC DB1307 konfigūracija:

RTC vidiniai blokai ir kaiščių schema

RTC vidiniai blokai ir kaiščių schema

A0, A1, A2: yra RTC DB1307 lusto adreso kaiščiai, kuriuos galima naudoti norint bendrauti su pagrindiniu įrenginiu. Mes galime valdyti aštuonis įrenginius su RTC sąsaja 8051 mikrovaldiklis A0, A1, A2 bitais, naudojant I2C protokolą.


VCC ir GND: VCC ir GND yra atitinkamai maitinimo ir įžeminimo kaiščiai. Šis prietaisas veikė nuo 1,8 V iki 5,5 V diapazone.

VBT: VBT yra akumuliatoriaus maitinimo kaištis. Baterijos maitinimo šaltinis turi būti nuo 2 V iki 3,5 V.

SCL: SCL yra nuoseklusis laikrodžio kaištis ir jis naudojamas duomenims sinchronizuoti nuosekliojoje sąsajoje.

SDL: Tai nuoseklus įvesties ir išvesties kaištis. Jis naudojamas duomenims perduoti ir gauti nuosekliojoje sąsajoje.

Laikrodis: Tai neprivalomas kvadratinių bangų išvesties kaištis.

OSC0 ir OSC1: Tai yra kristaliniai osciliatoriaus kaiščiai, naudojami laikrodžio signalams pateikti į RTC įrenginį. Standartinis kvarco kristalų dažnis yra 22,768KHzs.

Įrenginio adresavimas:

„I2C“ magistralės protokolas vienu metu leidžia naudoti daug vergų įrenginių. Kiekvienas vergo įtaisas turi būti sudarytas iš savo adreso, kurį reikia nurodyti jame. Pagrindinis prietaisas su konkrečiu vergo įrenginiu bendrauja adresu. RTC įrenginio adresas yra „0xA2“, kur „1010“ nurodo gamintojas, o A0, A1, A2 yra vartotojo apibrėžtas adresas, kuris naudojamas aštuoniems RTC įrenginiams perduoti. I2C magistralės protokolas .

Įrenginio papildymas

Įrenginio papildymas

R / W bitai naudojami skaitymo ir rašymo operacijoms atlikti RTC. Jei R / W = 0, atliekama rašymo operacija ir R / W = 1 skaitymo operacijai.

RTC skaitymo operacijos adresas = „0xA3“

RTC rašymo operacijos adresas = „0xA2“

Atminties registrai ir adresai:

RTC registrai yra adresų vietose nuo 00h iki 0Fh, o RAM atminties registrai yra adresų vietose nuo 08h iki 3Fh, kaip parodyta paveiksle. RTC registrai naudojami kalendoriaus funkcijoms ir paros važiavimo laikui teikti bei savaitgaliams rodyti.

Atminties registrai ir adresas

Atminties registrai ir adresas

Valdymo / būsenos registrai:

DB1307 sudaro du papildomi registrai, tokie kaip valdymas / būsena1 ir valdymas / būsena2, kurie naudojami valdyti realaus laiko laikrodį ir pertraukia .

Valdymo / būsenos registras1:

Kontrolės būsenos registras

Kontrolės būsenos registras

  • TEST1 = 0 įprastas režimas

= 1 EXT laikrodžio bandymo režimas

  • STOP = 0 RTC prasideda

= 1 RTC sustojimas

  • TESTC = 0 maitinimas iš naujo nustatytas išjungtas

= įjungtas maitinimas iš naujo

Valdymo / būsenos registras2:

Kontrolės būsenos registras2

Kontrolės būsenos registras2

  • TI / TP = 0 INT aktyvus visą laiką

= 1 aktyvus reikalingas laikas

  • AF = 0 Aliarmas neatitinka

= 1 pavojaus signalas

  • TF = 0 Laikmatis neperpildomas

= 1 Įvyksta laikmačio perpildymas

  • ALE = 0 Signalo pertraukimas išjungtas

= 1 Įjungtas aliarmo pertraukimas

  • TIE = 0 Laikmatis pertraukia išjungti

= 1 Laikmatis nutraukia įjungimą

3 žingsnis: susiekite RTC ds1307 su 8051

RTC gali būti susieta su mikrovaldikliu naudojant skirtingus nuosekliosios magistralės protokolus, tokius kaip I2C ir SPI protokolai kurie teikia ryšį tarp jų. Paveikslėlyje parodyta realaus laiko laikrodžio sąsaja su 8051 mikrovaldikliu naudojant I2C magistralės protokolą. I2C yra dvikryptis nuoseklusis protokolas, kurį sudaro du laidai, pvz., SCL ir SDA, skirti perduoti duomenis tarp įrenginių, prijungtų prie magistralės. 8051 mikrovaldiklis neturi įmontuoto RTC įrenginio, todėl mes prisijungėme išoriškai per nuoseklus bendravimas sudarantiems duomenims užtikrinti.

RTC sąsaja su 8051 mikrovaldikliu

RTC sąsaja su 8051 mikrovaldikliu

„I2C“ įrenginiuose yra atviri nutekėjimo išėjimai, todėl prie I2C magistralės linijos įtampos šaltiniu turi būti prijungti traukimo rezistoriai. Jei rezistoriai nėra prijungti prie SCL ir SDL linijų, magistralė neveiks.

4 žingsnis: RTC duomenų rėminimo formatas

Kadangi RTC sąsaja su 8051 mikrovaldikliu naudoja I2C magistralę, todėl duomenys perduodami baitų arba paketų pavidalu, o po kiekvieno baito seka patvirtinimas.

Duomenų rėmo perdavimas:

Persiuntimo režimu pagrindinis valdiklis atleidžia paleidimo sąlygą, pasirinkęs vergo įrenginį pagal adreso bitą. Adreso bite yra 7 bitai, kurie vergo įrenginius nurodo kaip ds1307 adresą. Serijiniai duomenys ir nuoseklusis laikrodis perduodami SCL ir SDL linijomis. START ir STOP sąlygos pripažįstamos nuoseklaus perdavimo pradžia ir pabaiga. Gavimo ir perdavimo operacijas seka R / W bitai.

Duomenų rėmo perdavimas

Duomenų rėmo perdavimas

Pradžia: Visų pirma, duomenų perdavimo seka, kurią inicijavo magistras, generuojantis pradžios sąlygą.

7 bitų adresas: Po to pagrindinis serveris siunčia vergo adresą dviem 8 bitų formatais, o ne vienu 16 bitų adresu.

Valdymo / būsenos registro adresas: Valdymo / būsenos registro adresas turi leisti kontrolės būsenos registrus.

Valdymo / būsenos registras1: Valdymo būsenos registras1 naudojamas įjungti RTC įrenginį

Valdymo / būsenos registras2: Jis naudojamas įjungti ir išjungti pertraukimus.

R / W: Jei skaitymo ir rašymo bitų yra nedaug, tada atliekama rašymo operacija.

ALAS: Jei vergo įrenginyje atliekama rašymo operacija, imtuvas siunčia 1 bitų ACK į mikrovaldiklį.

Sustabdyti: Baigęs rašymo operaciją vergo įrenginyje, mikrovaldiklis siunčia vergo įrenginiui sustabdymo sąlygą.

Gaunamas duomenų rėmas:

Gaunamas duomenų rėmas

Gaunamas duomenų rėmas

Pradžia: Visų pirma, duomenų perdavimo seka, kurią inicijavo magistras, generuojantis pradžios sąlygą.

7 bitų adresas: Po to pagrindinis vergo adresas siunčia du 8 bitų formatus, o ne vieną 16 bitų adresą.

Valdymo / būsenos registro adresas: Valdymo / būsenos registro adresas turi leisti kontrolės būsenos registrus.

Valdymo / būsenos registras1: Valdymo būsenos registras1, naudojamas įjungti RTC įrenginį

Valdymo / būsenos registras2: Jis naudojamas įjungti ir išjungti pertraukimus.

R / W: Jei skaitymo ir rašymo bitai yra dideli, tada atliekama skaitymo operacija.

ALAS: Jei vergo įrenginyje atliekama rašymo operacija, imtuvas siunčia 1 bitų ACK į mikrovaldiklį.

Sustabdyti: Baigęs rašymo operaciją vergo įrenginyje, mikrovaldiklis siunčia vergo įrenginiui sustabdymo sąlygą.

5 žingsnis: RTC programavimas

Rašymo operacija nuo pagrindinio iki vergo:

  1. Išduokite pradžios sąlygą nuo šeimininko iki vergo
  2. Perkelkite vergo adresą rašymo režimu į SDL liniją
  3. Nusiųskite kontrolės registro adresą
  4. Siųskite valdymo / būsenos registrą1value
  5. Siųskite valdymo / būsenos registro2 reikšmę
  6. Siųskite panašių minučių, sekundžių ir valandų datą
  7. Nusiųskite stabdymo antgalį

# įtraukti

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
negaliojanti pradžia ()
negaliojantys kompiuteriai (nepasirašyta simbolis)
vėlavimas (nepasirašyta simbolis)

negaliojantis pagrindinis ()
{

pradžia ()
rašyti (0xA2) // vergo adresas //
rašyti (0x00) // valdymo registro adresas //
rašyti (0x00) // 1 kontrolinio registro reikšmė //
rašyti (0x00) // valdymo regiter2 vlaue //
rašyti (0x28) // sek vertė //
rašyti (0x50) // minutės reikšmė //
rašyti (0x02) // valandų vertė //
}

negaliojanti pradžia ()
{

SDA = 1 // duomenų apdorojimas //
SCL = 1 // laikrodis yra aukštas //
vėlavimas (100)
SDA = 0 // atsiuntė duomenis //
vėlavimas (100)
SCL = 0 // laikrodžio signalas mažas //
}
negaliojantis rašymas (nepasirašyta char d)
{

nepasirašytas simbolis k, j = 0 × 80
už (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
vėlavimas (4)
SCL = 0
}
SDA = 1
SCL = 1
vėlavimas (2)
c = SDA
vėlavimas (2)
SCL = 0
}
tuščias uždelsimas (int p)
{
nepasirašęs, gim
Už (a = 0a<255a++) //delay function//
Už (b = 0b}

Skaitykite operaciją nuo vergo iki šeimininko:

# įtraukti
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
negaliojanti pradžia ()
negaliojantis rašymas (parašyta simbolis)
anuliuoti skaityti ()
negaliojantis ack ()
negaliojantis atidėjimas (nepasirašyta simbolis)
negaliojantis pagrindinis ()
{
pradžia ()
rašyti (0xA3) // vergo adresas skaitymo režimu //
skaityti ()
Deja ()
sek = vertė
}
negaliojanti pradžia ()
{

SDA = 1 // duomenų apdorojimas //
SCL = 1 // laikrodis yra aukštas //
vėlavimas (100)
SDA = 0 // atsiuntė duomenis //
vėlavimas (100)
SCL = 0 // laikrodžio signalas mažas //
}
negaliojantis rašymas (nepasirašyta char d)
{

nepasirašytas simbolis k, j = 0 × 80
už (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
vėlavimas (4)
SCL = 0
}
SDA = 1
SCL = 1
vėlavimas (2)
c = SDA
vėlavimas (2)
SCL = 0
}
tuščias uždelsimas (int p)
{
nepasirašęs, gim
Už (a = 0a<255a++) //delay function//
Už (b = 0b}
Negalima skaityti ()
{
Nepasirašyta char j, z = 0 × 00, q = 0 × 80
SDA = 1
už (j = 0j<8j++)
{
SCL = 1
vėlavimas (100)
vėliava = SDA
jei (vėliava == 1)

z = (z
negaliojantis ack ()
{
SDA = 0 // SDA eilutė eina į žemą //
SCL = 1 // laikrodis yra nuo mažo iki mažiausio //
vėlavimas (100)
SCL = 0
}

Tai yra būtini RTC sąsajos su 8051 mikrovaldikliu veiksmai. Be šių veiksmų, šiame straipsnyje aptariami duomenų rėmeliai, naudojami duomenims perduoti ir priimti, kad vartotojai suprastų ir tinkamai programuotų. Norėdami gauti daugiau pagalbos dėl šios koncepcijos, galite palikti komentarą žemiau.