Mikrovaldiklių sąsajos I2C, SPI, USART

3658 0

Mikrovaldiklių sąsajos I2C, SPI, USART

Turinys

1 I2C 1

Pranešimo protokolai  2

2 USART 5

USART galimybės 6

Duomenų perdavimas 7

3 SPI 8

Duomenų perdavimas 8

Protokolų palyginimas 9

Išvados 10

Literatūros sąrašas 11

1 I2C

I2C angliškai (Inter-integrated Circuit). Šis protokolas leidžia sujungti mažesnės spartos mikroptocesorius ir kontrolerius nedideliais atstumais. Šio protokolo komunikacijai tarp įrenginių reikalingos dvi bekryptės linijos pav.1[1] . Dažniausiai naudojamos įtampos yra: 5v, 3.3V. Pav1 pavaizduotas valdantysis įrenginys (angl Master) ir keli valdomi įrenginiai (angl. Slave). Visi įrenginiai sujungiami nuosekliai prie duomenų (SDA) ir laiko linijos (SCL).

"http://www.cs.fsu.edu/~baker/devices/notes/graphics/i2cbus3.gif

Pav.1 paprastoji I2c jungimo schema.[2]

Pajungimas

I2C sudaro dvi signalų linnijos: SCL (Serial Clock Line) ir SDA (Serial Data Line). SCL yra laikrodžio signalas, o SDA yra duomenų signalas. SCL visada generuojamas valdančiojo prietaiso. Kai kurie valdantieji įtaisai gali priverstinai pakeisti SCL lygį į žemą taip pristabdydami valdančiojo prietaiso duomenų siuntimą. Tačiau nėra įmanoma tokia situacija, kai vienas prietaisas stengiasi linijos lygį pakeisti į aukštą, o kitas tuo pat metu – į žemą, kas galėtų sukelti įrangos gedimus, pažeidimus ar maitinimo šaltinio problemas. Kiekviena linija turi rezistorių, prijungtą prie aukšto lygio (angl. pull-up) , todėl ji visad yra loginiame vienete, jei joks prietaisas nenaudoja (pav.1) linijos duomenų perdavimui.

Pranešimo protokolai

I²C apibrėžia pagrindinių tipų pranešims, kurių kiekvienas prasideda pradžios ir baigiasi STOP:

Viena žinutė, kur valdantysis įrenginys įrašo duomenis į valdomajį;

Viena žinutė, kur valdantysis įrenginys nuskaito duomenis iš valdomo;

Kombinuoti pranešimai, kur

r valdantysis įrenginys bent du nskaito ir, arba įrašo į vieną ar daugiau valdomų įrenginių.

Kombinuotoje žinutėje kiekviena pranešimas nuskaitymo ar įrašymo prasideda pradžios (START) sąlyga ir valdomo įrenginio adresu. Po pirmojo pražios bito kombinuotose žinutėse siunčiamas pasikartojantis pradžios bitas. Pasikartojantis pradžios bitas nėra valdomas pabaigos (STOP) sąlyga. Taip valdantysis įrenginys supranta, jog tai yra tos pačios žinutės dalis.

I²C sistemos palaiko sutartinę pranešimų struktūrą. SMBus yra apribota iki devynių šių struktūrų, pavyzdžiui, skaityti teksto N  ir parašyti žodį N. PMBus tęsiasi su SMBus grupiniu protokolu, todėl kelios tokios SMBus struktūros turi būti siunčiami į vieną pranešimą. Baigiamasis pabaigos (STOP) bitas rodo kada sugrpuoti veiksmai turi įsigalioti. Pavyzdžiui, vienas PMBus operacija gali konfigūruoti iš naujo tris maitinimo šaltiniai (naudojant tris skirtingus I2C valdomo įrenginio adresus), o jų naujos konfigūracijos turi įsigalioti tuo paččiu metu, kai jie gauna pabaigos bitą.

Adreso dalis visuomet siunčiama pirmiausia. Tradiciškai naudojamas 7 bitų adresavimas. Pirmiausias siunčiamas reikšmingiausias adreso bitas (angl. most significant bit MSB), o aštuntasis bitas, priklausomai nuo jo vertės, reiškia, ar duomenys bus įrašomi (vertė 0), ar nuskaitomi (vertė 1).

Devintasis bitas yra patvirtinimo bitas. Jis naudojamas prie visų pranešimo dalių (ir prie adresavimo, ir prie duomenų). Kuomet perduodamas paskutinis 8-tasis bitas, valdantysis įrenginys perduoda linijos valdymą valdomajam prietaisui, kuris savo ruožtu gali pats pakeisti SDA linijos lygį į žemą. Jei

i taip nėra padaroma, tuomet laikoma, kad siuntimas nepavyko, duomenys nebuvo gauti arba valdomasis įtaisas jų nesuprato. Tokiu atveju komunikacija yra nutraukiama.

Po adresavimo dalies siunčiami duomenys. Valdantysis prietaisais toliau generuoja laikrodžio impulsus pastoviais intervalais, o duomenys keliauja SDA linija. Jų kryptis priklauso nuo to, ar vykdomas įrašymo, ar nuskaitymo operacija. Duomenų keikis yra laisvai pasirenkamas dydis bei dauguma valdomųjų prietaisų jų skaitymo (ir įrašymo) metu automatiškai padidina registrų žymeklio padėtį po kiekvieno veiksmo. Laikoma, kad sekantys nuskaitymo/įrašymo veiksmai bus skirti sekančiam registrui.

Laiko schema perduodant duomenys suformuojamas pradžios bitas (S) kai duomenų linios (SDA) lygis pakeičiamas į žemą o laiko (SCL) išlieka aukštas. Toliau suformuojamas pirmas duomenų bitas kol SCL žemas. Toliau duomenys yra nuskaitomi kai SCL bito lygis yra aukšas(B1). Toliau viskas kartojasi kol SCL yra žemas SDA duomenis perduodami, kai SCL žemas duomenys nuskaitomi(B2, Bn). Pabaigos (STOP) bitas perdodamas, kai SDA pasikeičia į aukštą lygi kol SCL dar yra aukšto lygio (Pav2)

"Data

 

Pav.2 I2C linijos loginiai lygiai perduodant duomenis

2 USART

USART modulis (angl. Universal Sincronous Asynchronous Receiver Transmitter). Šis modulis yra skirtas perduoti duomenis ne tik asinchroninėmis sąsajomis, bet ir sinchroninėmis. Modulis naudoja atskirą liniją sinchronizavimo singnalui. Taigi šis modulis yra pranašesnis už UART moduli, kuris perduoda duomenis tik asinchroniniu budu. Pagrindiniai skirtumai:

Sinchroninis režimas reikalauja duom

menų ir laikrodžio. Asinchroninis režimas reikalauja tik duomenų.

Sinchroninio režimo metu duomenys peruodami fiksuotu greiciu. Asinchroniniu režimu duomenys neturi būti perduodami fiksuotai.

Sinchroniniu budu duomenys perduodami blokais, tuo tarpu asinchroniniu režimu duomenys perduodami po baitą.

Sinchroninis režimas leidžia tureti didesne DTR (duomenų perdavimo sparta) ne asinchroninis režimas.

USART galimybės

USART modulis asinchroninėje veikloje vienu metu gali tiek priimti,tiek išsiųsti duomenis. Duomenų siuntimui yra naudojama asinchroninį (UART) režimą. USART bendrauja su kitais prietaisais, naudojant du signalus: perduoti (TDX) ir gauti (RDX).  Sinchroniniu režimu, USART bendrauja su kitais prietaisais, naudojant tris signalus: perduoti (TDX), gauti (RDX) ir laikrodiniu (CKX). Duomenų bitai perduodami sinchroniškai su CKX signalu. Srauto kontrolė yra prieinama tiek asinchroniniu ir sinchroninių režimų per RTS / CTS prievadus. Pav. 3[3]

 

"http://www.ip-extreme.com/images/products/USART_486px.jpg

 

Pav.3 USART pajungimo schema [3]

Duomenų perdavimas

USART duomenų baitą perduoda siųsdama bitą po bito, iš eilės. Kitame gale kitas USART prietaisas priima šią bitų seką ir sujungia juos visus į vieną baitą. Kiekvienas USART turiu poslinkio (angl. shift) registrą, kuris yra pagrindas komponentas verčiant duomenis iš lygiagrečiųjų į nuosekliuosius ir atvirkščiai. Dar vienas tokios komunikacijos pliusas yra tai, kad duomenys vaikšto viena linija ir tai reikalauja mažiau resursų nei lygiagrečiame duomenų perdavime, kai kiekvienas bitas turi savo atskirą liniją.

Laukimo būsenoje loginis perdavimo linijos lygis visad būna aukštas. Tai labiau istorinis dalykas, išlikęs iš teleg

grafo laikų, kai aukštas lygis leisdavo identifikuoti, kad ryšio linija nėra pažeista. Kiekvieno baito siuntimas pradedamas START bito siuntimu, kurio loginis lygis yra žemas. Po jo seka duomenų bitų perdavimas. Bitų skaičius gali svyruoti nuo 5 iki 8. Aukštas lygis atitinka vienetą, žemas – nulį. Taip pat gali būti naudojamas lyginis bitas (angl. parity bit), kuris padeda identifikuoti klaidas duomenų perdavime. Pirmiausia perduodamas žemiausias bita. . .

Join the Conversation

×
×