Eesti

Tutvu UART ja SPI protokollidega. Mõista nende põhimõtteid, erinevusi ja kasutusviise.

Sarvkommunikatsiooni saladused paljastatud: põhjalik sukeldumine UART ja SPI maailma

Elektroonika ja manussüsteemide maailmas on seadmete omavaheline suhtlemisvõime esmatähtis. Sarvkommunikatsioon pakub usaldusväärset ja tõhusat meetodit andmete edastamiseks mikrokontrollerite, sensorite, välisseadmete ja isegi arvutite vahel. Kaks kõige levinumat sarvkommunikatsiooniprotokolli on UART (Universal Asynchronous Receiver/Transmitter) ja SPI (Serial Peripheral Interface). See põhjalik juhend süveneb nii UART kui ka SPI nüanssidesse, uurides nende põhimõtteid, erinevusi, rakendusi, eeliseid ja puudusi.

Mõistes sarvkommunikatsiooni

Sarvkommunikatsioon on meetod andmete edastamiseks üks bitt korraga ühel juhtmel (või mõnel juhtmel juhtsignaalide jaoks), vastupidiselt paralleelkommunikatsioonile, mis saadab mitu bitti korraga läbi mitme juhtme. Kuigi paralleelkommunikatsioon on lühikeste vahemaade jaoks kiirem, eelistatakse sarvkommunikatsiooni üldiselt pikemate vahemaade ja olukordade jaoks, kus juhtmete arvu minimeerimine on kriitiline. See muudab selle ideaalseks manussüsteemide jaoks, kus ruum ja hind on sageli olulised piirangud.

Asünkroonne vs. sünkroonne kommunikatsioon

Sarvkommunikatsiooni võib laias laastus jagada kahte kategooriasse: asünkroonne ja sünkroonne. Asünkroonne kommunikatsioon, nagu UART, ei vaja saatja ja vastuvõtja vahel jagatud taktisignaali. Selle asemel tugineb see algus- ja stopp-bittidele iga andmebaidi raamistamiseks. Sünkroonne kommunikatsioon, nagu SPI ja I2C, kasutab jagatud taktisignaali andmeedastuse sünkroonimiseks seadmete vahel.

UART: Universaalne Asünkroonne Vastuvõtja/Saatja

UART on laialtlevinud sarvkommunikatsiooniprotokoll peamiselt selle lihtsuse ja paindlikkuse tõttu. See on asünkroonne protokoll, mis tähendab, et saatja ja vastuvõtja ei jaga ühist taktisignaali. See lihtsustab riistvaranõudeid, kuid nõuab täpset ajastust ja eelnevalt kokkulepitud andmeedastuskiirust (baudikiirus).

UART põhimõtted

UART-kommunikatsioon hõlmab andmete edastamist raamides, millest igaüks koosneb järgmistest:

Saatja ja vastuvõtja peavad edukaks kommunikatsiooniks olema kokku leppinud baudikiiruses, andmebittides, pariteedis ja stopp-bittides. Levinud baudikiirused hõlmavad 9600, 115200 ja teisi. Kõrgem baudikiirus võimaldab kiiremat andmeedastust, kuid suurendab ka tundlikkust ajastusvigu suhtes.

UART rakendused

UART eelised

UART puudused

UART näide: Arduino ja sarimonitor

Levinud näide UART-i kasutamisest on sarimonitori kasutamine Arduino IDE-s. Arduino tahvlil on sisseehitatud UART-liides, mis võimaldab tal arvutiga USB kaudu suhelda. Järgmine Arduino koodilõik demonstreerib andmete saatmist sarimonitorile:

void setup() {
  Serial.begin(9600); // Initialiseerib sarivestluse kiirusel 9600 baudi
}

void loop() {
  Serial.println("Hello, world!"); // Saadab sõnumi "Hello, world!" sarimonitorile
  delay(1000); // Ootab 1 sekundi
}

See lihtne kood saadab sõnumi "Hello, world!" sarimonitorile iga sekundi järel. Funktsioon Serial.begin(9600) initialiseerib UART-liidese kiirusel 9600 baudi, mis peab vastama sarimonitori seadistusele.

SPI: Sarivälisseadme Liides

SPI (Serial Peripheral Interface) on sünkroonne sarvkommunikatsiooniprotokoll, mida kasutatakse tavaliselt lühikeste vahemaade kommunikatsiooniks mikrokontrollerite ja välisseadmete vahel. See on tuntud oma suure kiiruse ja suhteliselt lihtsate riistvaranõuete poolest.

SPI põhimõtted

SPI kasutab meistri-orja arhitektuuri, kus üks seade (meister) kontrollib kommunikatsiooni ja üks või mitu seadet (orjad) reageerivad meistri käskudele. SPI siin koosneb neljast peamisest signaalist:

Andmeid edastatakse sünkroonselt koos taktisignaaliga. Meister alustab kommunikatsiooni, viies soovitud orja SS/CS juhtme madalaks. Seejärel nihutatakse andmed meistri MOSI juhtmelt orja sisse SCK signaali tõusva või langeva serva peal. Samal ajal nihutatakse andmed orja MISO juhtmelt välja ja meistrisse. See võimaldab täisdupleks-kommunikatsiooni, mis tähendab, et andmeid saab edastada mõlemas suunas samaaegselt.

SPI režiimid

SPI-l on neli töörežiimi, mida määravad kaks parameetrit: takti polaarsus (CPOL) ja takti faas (CPHA). Need parameetrid määravad SCK signaali oleku jõudeasendis ja SCK signaali serva, millel andmeid proovivõetakse ja nihutatakse.

Meister- ja orjaseadmed peavad olema konfigureeritud kasutama sama SPI režiimi edukaks suhtlemiseks. Kui need ei ole, võib tulemuseks olla rikutud andmed või suhtluse rike.

SPI rakendused

SPI eelised

SPI puudused

SPI näide: liidestumine kiirendusmõõturiga

Paljud kiirendusmõõturid, nagu populaarne ADXL345, kasutavad suhtlemiseks SPI-i. Kiirendusandmete lugemiseks ADXL345-st peab mikrokontroller (toimides meistrina) saatma kiirendusmõõturi (toimides orjana) käsu vastavate registrite lugemiseks. Järgnev pseudokood illustreerib protsessi:

  1. Valige ADXL345, viies selle SS/CS juhtme madalaks.
  2. Saadake loetava registri aadress (nt X-telje kiirendusandmete aadress).
  3. Lugege andmeid MISO juhtmelt (X-telje kiirenduse väärtus).
  4. Korrake samme 2 ja 3 Y- ja Z-telje jaoks.
  5. Tühistage ADXL345 valik, viies selle SS/CS juhtme kõrgeks.

Konkreetsed käsud ja registrite aadressid erinevad sõltuvalt kiirendusmõõturi mudelist. Täpsemate protseduuride jaoks tuleb alati tutvuda andmelehega.

UART vs. SPI: võrdlus

Siin on tabel, mis võtab kokku peamised erinevused UART-i ja SPI vahel:

Omadus UART SPI
Kommunikatsiooni tüüp Asünkroonne Sünkroonne
Taktisignaal Puudub Jagatud taktisignaal
Juhtmete arv 2 (TX, RX) 4 (MOSI, MISO, SCK, SS/CS) + 1 SS/CS orja kohta
Andmeedastuskiirus Madalam Kõrgem
Täisdupleks Tavaliselt pooldupleks (kuigi mõnikord võib keeruka tarkvaraga simuleerida täisdupleksit) Täisdupleks
Veatuvastus Pariteetbit (valikuline) Puudub (nõuab tarkvaralist rakendust)
Seadmete arv 2 (punktist-punkti) Mitmed (Meister-orja)
Keerukus Lihtsam Keerukam
Vahemaa Pikem Lühem

Õige protokolli valimine

The choice between UART and SPI depends on the specific application requirements. Consider the following factors:

Näiteks lihtsas sensorirakenduses, kus mikrokontroller peab lühikese vahemaa tagant lugema andmeid ühest sensorist, võib SPI olla kõrgema kiiruse tõttu parem valik. Kui aga mikrokontroller peab silumise eesmärgil pikema vahemaa tagant arvutiga suhtlema, oleks UART sobivam.

Täiendavad kaalutlused

I2C (Inter-Integrated Circuit)

Kuigi see artikkel keskendub UART-ile ja SPI-le, on oluline mainida I2C (Inter-Integrated Circuit) kui teist levinud sarvkommunikatsiooniprotokolli. I2C on kahest juhtmest koosnev protokoll, mis toetab mitut meistrit ja orja sama siini peal. Seda kasutatakse sageli integreeritud circuitide vaheliseks kommunikatsiooniks trükkplaatidel. I2C kasutab adresseerimist, erinevalt SPI-st, mis lihtsustab suuremaid seadmete võrke.

TTL vs. RS-232

UART-iga töötades on oluline mõista TTL (Transistor-Transistor Logic) ja RS-232 pingetasemete erinevust. TTL-loogika kasutab loogilist madalat ja kõrget taset vastavalt 0V ja 5V (või 3.3V). RS-232 seevastu kasutab ±12V pingeid. TTL UART-i otsene ühendamine RS-232 UART-iga võib seadmeid kahjustada. TTL-i ja RS-232 pingetasemete vaheliseks teisendamiseks on vaja tasemete nihikut (nt MAX232 kiip).

Vigade käsitlemine

Kuna UART-il ja SPI-l on piiratud veatuvastusmehhanismid, on oluline rakendada vigade käsitlemist tarkvaras. Levinud tehnikad hõlmavad kontrollsummasid, tsüklilisi redundantseid kontrolle (CRC) ja ajalõpp-mehhanisme.

Järeldus

UART ja SPI on olulised sarvkommunikatsiooniprotokollid manussüsteemide ja kaugemalgi. UART pakub lihtsust ja paindlikkust, muutes selle sobivaks mikrokontrollerite ühendamiseks arvutite ja teiste seadmetega pikemate vahemaade tagant. SPI pakub kiiret kommunikatsiooni lühikeste vahemaade rakenduste jaoks, nagu liidestumine sensorite, mälukaartide ja ekraanidega. Nende protokollide põhimõtete, eeliste ja puuduste mõistmine võimaldab teha teadlikke otsuseid oma järgmise manussüsteemi või elektroonika projekti kavandamisel. Tehnoloogia arenedes areneb ka nende sarvkommunikatsioonimeetodite rakendamine. Pidev kohanemine ja õppimine tagab, et nii insenerid kui ka hobientusiastid saavad neid protokolle oma täieliku potentsiaalini ära kasutada.