Lietuvių

Susipažinkite su UART ir SPI – dviem esminiais nuosekliosios komunikacijos protokolais. Supraskite jų principus, skirtumus, taikymą, pranašumus ir trūkumus įterptinėse sistemose ir ne tik.

Nuosekliosios komunikacijos demistifikavimas: Išsami UART ir SPI apžvalga

Elektronikos ir įterptinių sistemų pasaulyje gebėjimas įrenginiams bendrauti tarpusavyje yra nepaprastai svarbus. Nuoseklioji komunikacija suteikia patikimą ir efektyvų būdą perduoti duomenis tarp mikrovaldiklių, jutiklių, išorinių įrenginių ir net kompiuterių. Du labiausiai paplitę nuosekliosios komunikacijos protokolai yra UART (Universalus asinchroninis imtuvas/siųstuvas) ir SPI (Nuoseklioji išorinių įrenginių sąsaja). Šis išsamus vadovas gilinsis į UART ir SPI subtilybes, nagrinėdamas jų principus, skirtumus, taikymo sritis, pranašumus ir trūkumus.

Supraskime nuosekliąją komunikaciją

Nuoseklioji komunikacija – tai metodas, kai duomenys perduodami po vieną bitą per vieną laidą (arba kelis laidus valdymo signalams), priešingai nei lygiagrečioji komunikacija, kuri vienu metu siunčia kelis bitus per kelis laidus. Nors lygiagrečioji komunikacija yra greitesnė trumpais atstumais, nuoseklioji komunikacija paprastai teikiama pirmenybė ilgesniems atstumams ir situacijose, kai labai svarbu sumažinti laidų skaičių. Dėl to ji idealiai tinka įterptinėms sistemoms, kur erdvė ir kaina dažnai yra reikšmingi apribojimai.

Asinchroninė ir sinchroninė komunikacija

Nuosekliąją komunikaciją galima plačiai suskirstyti į dvi kategorijas: asinchroninę ir sinchroninę. Asinchroninė komunikacija, tokia kaip UART, nereikalauja bendro laikrodžio signalo tarp siuntėjo ir imtuvo. Vietoj to, ji remiasi pradžios ir pabaigos bitais, kurie įrėmina kiekvieną duomenų baitą. Sinchroninė komunikacija, tokia kaip SPI ir I2C, naudoja bendrą laikrodžio signalą duomenų perdavimui tarp įrenginių sinchronizuoti.

UART: Universalus asinchroninis imtuvas/siųstuvas

UART yra plačiai naudojamas nuosekliosios komunikacijos protokolas, visų pirma dėl savo paprastumo ir lankstumo. Tai asinchroninis protokolas, o tai reiškia, kad siuntėjas ir imtuvas neturi bendro laikrodžio signalo. Tai supaprastina aparatinės įrangos reikalavimus, tačiau reikalauja tikslaus laiko nustatymo ir iš anksto sutarto duomenų perdavimo greičio (bodų spartos).

UART veikimo principai

UART komunikacija apima duomenų perdavimą kadrais, kurių kiekvieną sudaro:

Sėkmingai komunikacijai siuntėjas ir imtuvas turi susitarti dėl bodų spartos, duomenų bitų skaičiaus, lyginumo ir pabaigos bitų. Dažniausiai naudojamos bodų spartos yra 9600, 115200 ir kitos. Didesnė bodų sparta leidžia greičiau perduoti duomenis, bet taip pat padidina jautrumą laiko nustatymo klaidoms.

UART taikymo sritys

UART pranašumai

UART trūkumai

UART pavyzdys: „Arduino“ ir nuoseklusis monitorius

Dažnas UART veikimo pavyzdys yra nuosekliojo monitoriaus naudojimas „Arduino IDE“ aplinkoje. „Arduino“ plokštėje yra integruota UART sąsaja, leidžianti jai bendrauti su kompiuteriu per USB. Šis „Arduino“ kodo fragmentas demonstruoja duomenų siuntimą į nuoseklųjį monitorių:

void setup() {
  Serial.begin(9600); // Inicializuoti nuosekliąją komunikaciją 9600 bodų sparta
}

void loop() {
  Serial.println("Hello, world!"); // Siųsti pranešimą „Hello, world!“ į nuoseklųjį monitorių
  delay(1000); // Laukti 1 sekundę
}

Šis paprastas kodas kas sekundę siunčia pranešimą „Hello, world!“ į nuoseklųjį monitorių. Funkcija Serial.begin(9600) inicializuoja UART sąsają 9600 bodų sparta, kuri turi atitikti nuosekliojo monitoriaus nustatymą.

SPI: Nuoseklioji išorinių įrenginių sąsaja

SPI (angl. Serial Peripheral Interface) yra sinchroninis nuosekliosios komunikacijos protokolas, dažnai naudojamas trumpų atstumų komunikacijai tarp mikrovaldiklių ir išorinių įrenginių. Jis žinomas dėl didelės spartos ir palyginti paprastų aparatinės įrangos reikalavimų.

SPI veikimo principai

SPI naudoja „master-slave“ (pagrindinio-pavaldinio) architektūrą, kur vienas įrenginys (master) valdo komunikaciją, o vienas ar daugiau įrenginių (slaves) atsako į pagrindinio įrenginio komandas. SPI magistralę sudaro keturi pagrindiniai signalai:

Duomenys perduodami sinchroniškai su laikrodžio signalu. Pagrindinis įrenginys inicijuoja komunikaciją, nustatydamas norimo pavaldaus įrenginio SS/CS liniją į žemą lygį. Tada duomenys perkeliami iš pagrindinio įrenginio per MOSI liniją į pavaldų įrenginį kylančioje arba krintančioje SCK signalo briaunoje. Tuo pačiu metu duomenys perkeliami iš pavaldaus įrenginio per MISO liniją į pagrindinį. Tai leidžia vykdyti dvipusę (full-duplex) komunikaciją, o tai reiškia, kad duomenis galima perduoti abiem kryptimis vienu metu.

SPI režimai

SPI turi keturis veikimo režimus, kuriuos nustato du parametrai: laikrodžio poliškumas (CPOL) ir laikrodžio fazė (CPHA). Šie parametrai apibrėžia SCK signalo būseną, kai jis neaktyvus, ir SCK signalo briauną, kurioje duomenys yra nuskaitomi ir perkeliami.

Pagrindinis ir pavaldus įrenginiai turi būti sukonfigūruoti naudoti tą patį SPI režimą sėkmingai komunikacijai. Jei jie nesutampa, duomenys bus iškraipyti arba komunikacija nepavyks.

SPI taikymo sritys

SPI pranašumai

SPI trūkumai

SPI pavyzdys: sąsaja su akselerometru

Daugelis akselerometrų, pavyzdžiui, populiarusis ADXL345, naudoja SPI komunikacijai. Norėdamas nuskaityti pagreičio duomenis iš ADXL345, mikrovaldiklis (veikiantis kaip pagrindinis įrenginys) turi nusiųsti komandą akselerometrui (veikiančiam kaip pavaldus įrenginys), kad nuskaitytų atitinkamus registrus. Šis pseudokodas iliustruoja procesą:

  1. Pasirinkite ADXL345, nustatydami jo SS/CS liniją į žemą lygį.
  2. Nusiųskite norimo nuskaityti registro adresą (pvz., X ašies pagreičio duomenų adresą).
  3. Nuskaitykite duomenis iš MISO linijos (X ašies pagreičio vertę).
  4. Pakartokite 2 ir 3 veiksmus Y ir Z ašims.
  5. Atšaukite ADXL345 pasirinkimą, nustatydami jo SS/CS liniją į aukštą lygį.

Konkrečios komandos ir registrų adresai priklausys nuo akselerometro modelio. Norint sužinoti tikslias procedūras, visada reikia peržiūrėti duomenų lapą.

UART ir SPI palyginimas

Šioje lentelėje apibendrinami pagrindiniai UART ir SPI skirtumai:

Savybė UART SPI
Komunikacijos tipas Asinchroninis Sinchroninis
Laikrodžio signalas Nėra Bendras laikrodis
Laidų skaičius 2 (TX, RX) 4 (MOSI, MISO, SCK, SS/CS) + 1 SS/CS kiekvienam pavaldžiam įrenginiui
Duomenų perdavimo sparta Mažesnė Didesnė
Dvipusė (Full-Duplex) Paprastai vienpusė (half-duplex) (nors kartais galima imituoti dvipusę su sudėtingesne programine įranga) Dvipusė (Full-Duplex)
Klaidų aptikimas Lyginumo bitas (neprivalomas) Nėra (reikalingas programinis įgyvendinimas)
Įrenginių skaičius 2 („taškas-taškas“) Keli („master-slave“)
Sudėtingumas Paprastesnis Sudėtingesnis
Atstumas Ilgesnis Trumpesnis

Tinkamo protokolo pasirinkimas

Pasirinkimas tarp UART ir SPI priklauso nuo konkrečių taikymo reikalavimų. Atsižvelkite į šiuos veiksnius:

Pavyzdžiui, paprastoje jutiklio programoje, kur mikrovaldiklis turi nuskaityti duomenis iš vieno jutiklio per trumpą atstumą, SPI gali būti geresnis pasirinkimas dėl didesnės spartos. Tačiau, jei mikrovaldiklis turi bendrauti su kompiuteriu per ilgesnį atstumą derinimo tikslais, tinkamesnis būtų UART.

Papildomi aspektai

I2C (Inter-Integrated Circuit)

Nors šis straipsnis skirtas UART ir SPI, svarbu paminėti ir I2C (Inter-Integrated Circuit) kaip kitą paplitusį nuosekliosios komunikacijos protokolą. I2C yra dviejų laidų protokolas, palaikantis kelis pagrindinius ir pavaldžius įrenginius toje pačioje magistralėje. Jis dažnai naudojamas komunikacijai tarp integrinių grandynų plokštėje. Skirtingai nuo SPI, I2C naudoja adresavimą, o tai supaprastina didelius įrenginių tinklus.

TTL ir RS-232

Dirbant su UART, svarbu suprasti skirtumą tarp TTL (tranzistorių-tranzistorių logikos) ir RS-232 įtampos lygių. TTL logika naudoja 0V ir 5V (arba 3.3V) atitinkamai žemam ir aukštam loginiam lygiui pavaizduoti. Tuo tarpu RS-232 naudoja ±12V įtampą. Tiesioginis TTL UART prijungimas prie RS-232 UART gali sugadinti įrenginius. Reikalingas lygio keitiklis (pvz., MAX232 lustas), kad būtų galima konvertuoti tarp TTL ir RS-232 įtampos lygių.

Klaidų tvarkymas

Kadangi UART ir SPI turi ribotus klaidų aptikimo mechanizmus, svarbu įgyvendinti klaidų tvarkymą programinėje įrangoje. Dažniausiai naudojamos technikos apima kontrolines sumas, ciklinius pertekliaus patikrinimus (CRC) ir laukimo laiko mechanizmus.

Išvada

UART ir SPI yra esminiai nuosekliosios komunikacijos protokolai, skirti įterptinėms sistemoms ir ne tik. UART siūlo paprastumą ir lankstumą, todėl tinka mikrovaldikliams prijungti prie kompiuterių ir kitų įrenginių ilgesniais atstumais. SPI užtikrina greitą komunikaciją trumpų atstumų taikymuose, pavyzdžiui, sąsajai su jutikliais, atminties kortelėmis ir ekranais. Suprasdami kiekvieno protokolo principus, pranašumus ir trūkumus, galėsite priimti pagrįstus sprendimus projektuodami savo kitą įterptinę sistemą ar elektronikos projektą. Tobulėjant technologijoms, tobulės ir šių nuosekliosios komunikacijos metodų taikymas. Nuolatinis prisitaikymas ir mokymasis užtikrins, kad inžinieriai ir mėgėjai galės išnaudoti visą šių protokolų potencialą.