SPI prieš UART: kurį protokolą turėtumėte naudoti?

Įvadas

SPI ir UART naudojami visur – nuo ​​paprastų mikrovaldiklių iki sudėtingų pramoninis įranga. Jei norite sujungti du įrenginius, turėsite pasirinkti vieną ar kitą.

Šiame straipsnyje palyginsime SPI ir UART, kad padėtume nustatyti, kuris protokolas tinka jūsų projektui.

SPI

SPI

Kas yra SPI (nuoseklioji periferinė sąsaja)?

Tai reiškia Serial Peripheral Interface. Tai ryšio protokolas, leidžiantis dviem įrenginiams bendrauti tarpusavyje.

Dažniausiai naudojamas ryšiui tarp mikrovaldiklio ir atminties lusto. Jis taip pat dažnai naudojamas išoriniams įrenginiams, pvz., prijungti jutikliai arba rodo.

Kadangi SPI yra nuoseklusis protokolas, duomenims perduoti naudojamas tik vienas laidas (arba linija). Tai reiškia, kad laidu siunčiami duomenys vienu metu siunčiami tik po vieną bitą. Daugeliu atvejų šis serijinis perdavimas vyksta labai greitai.

Jis taip pat yra pakankamai universalus, kad jį būtų galima naudoti įvairiose programose – pavyzdžiui, galite naudoti SPI, kad prijungtumėte „flash drive“ prie kompiuteris o gal prijungti an LCD rodyti į savo Arduino plokštę.

SPI laidai

SPI laidai

SPI laidai

Šis protokolas leidžia dviem įrenginiams siųsti informaciją vienas kitam. SPI protokolą sudaro keturi laidai:

Sojų pasta

MISO reiškia master in slave out. Tai būdas bendrauti tarp dviejų SPI įrenginių.

MISO laidas yra dviejų krypčių signalo linija. Teikia duomenų mainus tarp pagrindinio ir pavaldaus įrenginių sinchroninėje ryšio sistemoje. Šis laidas naudojamas duomenims perduoti iš pagrindinio įrenginio į pavaldų įrenginį ir leidžia pagrindiniam įrenginiui priimti duomenis iš pavaldaus įrenginio.

SS/CS

Tai valdo, ar šiuo metu pasirinktas įrenginys, su kuriuo bendraujama, ar ne. SS/CS linija yra viena iš šių bendrų linijų. Juo galima pasirinkti, su kuriuo magistralėje esančiu įrenginiu norite susisiekti.

SS kaištis paprastai traukiamas aukštai, o CS kaištis traukiamas žemai. SPI atveju šie signalai yra atviro nutekėjimo. Jie turi būti ištraukti rezistoriais, kad būtų galima juos nuleisti. Pavyzdžiui, jei turite 4 bitų lusto pasirinkimą, kurį norite naudoti 8 bitų magistralėje, galite sujungti visus 4 lustų pasirinkimus į vieną 8 bitų lusto pasirinkimą, sujungdami juos ir patraukdami žemai. vienas prisitraukimo rezistorius.

SCK

Serijinė laikrodžio linija, taip pat žinoma kaip pamainos laikrodis, naudojama duomenų perdavimui tarp mikrovaldiklio ir SPI įrenginio sinchronizuoti. Tai nuolatinis laikrodžio signalas, kuris nustato duomenų perkėlimo į įrenginį ir iš jo greitį.

Šis laikrodžio signalas naudojamas sinchronizuoti visus kitus SPI magistralės signalus. Paprastai jis yra prijungtas prie pagrindinio įrenginio kaiščio. The dažnis šio laikrodžio signalo dažnis turi būti didesnis arba lygus 1 MHz.

DAWDLE

MOSI signalas leidžia kompiuterio mikrovaldikliui žinoti, kad jis turi siųsti duomenis į SPI periferinį įrenginį. Tada jis perskaitys jį ir nusiųs į savo išorinius įrenginius.

Duomenų perdavimo pasaulyje nuoseklioji sąsaja reiškia, kad vienu metu nuoseklia tvarka perduodamas vienas informacijos bitas. Jis perduoda ir paima duomenis iš pagrindinio įrenginio ir siunčia juos į pavaldų įrenginį.

UART

UART

Kas yra UART (universalus asinchroninis imtuvo siųstuvas)?

Standartinis duomenų siuntimo tarp dviejų įrenginių būdas. Jis naudojamas daugelyje skirtingų elektroninių prietaisų tipų, nuo vartotojų įrenginių iki pramoninės įrangos.

Jis vadinamas „universaliu“, nes gali būti naudojamas bendrauti su daugybe skirtingų tipų įrenginių ir protokolų, o jis vadinamas „asinchroniniu“, nes nereikalauja, kad siuntėjas ir gavėjas būtų sinchronizuojami vienas su kitu, t. y. t reikalauti, kad jie reguliariais intervalais siųsti duomenų bitus.

UART priima įvestį iš kompiuterio ar kito įrenginio ir siunčia jį į kitą įrenginį naudodamas tą patį protokolą. Tai reiškia, kad jei turite kompiuterį su nuosekliuoju prievadu, jį galima prijungti prie kito kompiuterio ar įrenginio naudojant šį prievadą ir siųsti duomenis tarp jų laidais arba belaidžiu būdu tol, kol abu įrenginiai palaiko tą patį protokolą.

SPI ir UART panašumai

Abu yra naudojami palaikyti ryšį tarp mikrovaldiklių ir išorinių įrenginių. Abu protokolai yra pagrįsti tais pačiais principais:

Serijinis bendravimas

Serijinis bendravimas

Dvipusis nuoseklusis ryšys

Abu šie protokolai naudoja dvipusį nuoseklųjį ryšį. Tai reiškia, kad jie gali siųsti ir gauti duomenis tuo pačiu metu, todėl jie idealiai tinka įrenginiams, kurie turi turėti galimybę kalbėti vienas su kitu ir tuo pačiu metu atlikti kitus veiksmus, pavyzdžiui, nešiojamąjį kompiuterį, kuris kalbasi su spausdintuvu.

Tai leidžia tiek SPI, tiek UART protokolams veikti didesniu greičiu nei kitos nuoseklios sąsajos, nes prieš siunčiant kitą signalą jiems nereikia laukti atsakymo.

Trumpojo nuotolio bendravimas

Tiek SPI, tiek UART naudojami trumpojo nuotolio ryšiui. Tai reiškia, kad jie perduoda duomenis keliomis pėdomis, o ne dideliais atstumais, pavyzdžiui, Ethernet. Jie abu naudojami mikrovaldikliuose, kurie yra maži kompiuteriai, atliekantys tokias užduotis kaip varikliai ar jutikliai.

Duomenų apdorojimas

Tiek SPI, tiek UART turi panašią duomenų apdorojimo koncepciją. Abu yra imtuvo-siųstuvo įrenginiai, naudojantys nuosekliojo ryšio sąsają duomenims siųsti ir gauti. SPI imtuvas yra prijungtas prie mikroprocesoriaus, o UART - prie išorinio įrenginio. Mikroprocesorius dideliu greičiu gali siųsti baitus duomenų per SPI magistralę arba UART liniją.

SPI ir UART skirtumai

Jie panašūs tuo, kad leidžia siųsti duomenis tarp įrenginių, tačiau tarp jų yra keletas pagrindinių skirtumų.

Pagreitinti

SPI naudoja keturis duomenų laidus duomenims perduoti dideliu greičiu, o UART naudoja tik du, todėl SPI protokolai gali perduoti duomenis į įrenginį ir iš jo daug greičiau, palyginti su UART protokolais.

Duomenų kainos

SPI siunčia ir priima duomenis dideliu greičiu iki 100 MHz, o UART siunčia ir priima duomenis daug mažesniu – iki 20 KB/s greičiu. Tai reiškia, kad UART gali būti naudojamas mažos spartos programoms, pvz., tekstinių pranešimų siuntimui, o SPI labiau tinka didelės spartos programoms, pvz., valdyti variklius ar kitus aparatūros įrenginius.

Laidinė sąsaja

Laidinė sąsaja

Laidinė sąsaja

SPI yra pagrindinis / pavaldinis ryšio protokolas, veikiantis visišku dvipusiu režimu. Valdytojas pateikia informaciją vergui, kuris ją apdoroja ir grąžina atsakymą. Naudojant SPI, prie tos pačios magistralės galima prijungti kelis pavaldinius, leidžiančius jiems visiems bendrauti vienu metu.

UART yra supaprastintas nuoseklusis protokolas, kuriam duomenims siųsti ir priimti tereikia vienos laidų poros. Gali būti, kad keli įrenginiai būtų prijungti prie tos pačios magistralės naudojant UART, tačiau jie negali kalbėti vienu metu taip, kaip tai daroma naudojant SPI.

duomenų perdavimas

Paprastai naudojamas didelės spartos duomenų perdavimui tarp dviejų įrenginių, pvz., mikrovaldiklio ir kito lusto ar periferinio įrenginio. Mikrovaldiklis veikia kaip pagrindinis įrenginys, valdantis duomenų srautą tarp savęs ir pagalbinio įrenginio. SPI gali perduoti kelis bitus vienu metu, todėl jis yra efektyvesnis nei UART, tačiau tam reikia sudėtingesnės aparatinės įrangos abiejuose ryšio galuose.

UART nėra tinkamas didelės spartos perdavimui, nes kiekvienas bitas turi būti siunčiamas atskirai; nėra galimybės siųsti kelių bitų vienu metu.

SPI pranašumai

SPI turi įvairių pranašumų, palyginti su kitų tipų sąsajomis. Tai daug greičiau nei nuoseklusis ryšys, kuriam reikia duomenų perdavimo po vieną. Kiti privalumai:

Mažas signalo / kontaktų skaičius

SPI siūlo mažą signalų / kontaktų skaičių, o tai reiškia, kad sistemai prijungti galite naudoti mažiau laidų nei naudotumėte kito tipo sąsają. Dėl to SPI yra ypač naudingas, kai žiūrite į mažos formos įrenginius arba kai erdvė yra ribota.

Palaiko kelis meistrus

Leidžia keliems meistrams bendrauti tarpusavyje. Dėl to jis idealiai tinka naudoti mikrovaldikliuose, kur keli įrenginiai gali bendrinti tą pačią magistralę ir kiekvienas siųsti duomenis į magistralę ir iš jos.

Pavyzdžiui, SPI pagrįstas įrenginys gali siųsti duomenis į kitą SPI pagrįstą įrenginį (pvz., a displėjus arba jutiklis) nesijaudindami, ar kitas įrenginys atliko savo užduotį, ar ne.

Du laidai komunikacijai

Šis protokolas naudoja du laidus, kad sukurtų ryšį tarp kelių įrenginių. SPI naudoja atskiras laikrodžio ir duomenų linijas informacijai siųsti tarp įrenginių. SPI magistralė turi pagrindinį įrenginį ir vieną ar daugiau pagalbinių įrenginių. Valdytojas gali bendrauti su kiekvienu pavaldiniu, siųsdamas komandas nuosekliu formatu per MOSI liniją, tuo pačiu metu siųsdamas duomenis į MISO liniją esančiam pavaldiniui.

Prisitaikykite prie skirtingų vergų poreikių

SPI puikiai tinka programoms, kuriose prie pagrindinio valdiklio reikia prijungti kelis pagalbinius įrenginius, pvz integruotas sistema arba kompiuterinė sistema. Protokolas leidžia pavaldiniams įrenginiams prisitaikyti prie pagrindinio valdiklio poreikių, o tai reiškia, kad jį galima lengvai naudoti tokioms programoms kaip prijungti kelis jutiklius, kuriems taikomi skirtingi ryšio reikalavimai.

SPI trūkumai

Nors SPI turi daug privalumų, įskaitant galimybę palaikyti kelis įrenginius, jis taip pat turi keletą trūkumų.

Sudėtingas

SPI yra nuoseklioji sąsaja, leidžianti palaikyti ryšį tarp kelių įrenginių. SPI problema yra ta, kad ją nustatyti gali būti sudėtinga, ypač kai yra daug įrenginių.

Kai jungiate SPI įrenginius, turite įsitikinti, kad linijos netrukdo viena kitai ir nėra sukryžiuotos. Dėl to gali kilti problemų, tokių kaip duomenų praradimas arba neteisingi jutiklių rodmenys.

Lėtesnis greitis

SPI yra lėtesnis nei kiti ryšio protokolai, nes duomenims perduoti reikia daugiau laikrodžio ciklų nei jiems. Tai gali būti problema, jei bandote perduoti didelį duomenų kiekį, nes lėtesnis greitis reikš, kad visos informacijos perkėlimas užtruks ilgiau.

Pusiau dvipusė sąsaja

SPI sąsaja yra pusiau dvipusė sąsaja, o tai reiškia, kad jei įrenginys siunčia duomenis, jis negali jų priimti. Jei įrenginys nėra pasirengęs siųsti ar priimti duomenų, jam turi būti nurodyta palaukti, kol jis bus pasirengęs tai padaryti.

UART privalumai

UART turi keletą kitų pranašumų, palyginti su kitomis nuosekliosiomis sąsajomis:

Laikrodžio nereikia

UART nereikia jokio laikrodžio. Tai reiškia, kad duomenys siunčiami pastoviu greičiu ir nereikia sinchronizuoti. Dėl to UART yra ypač naudingi siunčiant duomenis dideliais atstumais arba triukšmingoje aplinkoje.

Naudojant kitų rūšių nuoseklųjį ryšį, pvz., SPI arba I2C, reikia sinchronizuoti siuntėją ir imtuvą, kad jie galėtų kalbėtis tarpusavyje. Tai reiškia, kad jei kuris nors įrenginys vėluoja, tai gali sukelti ryšio problemų, pavyzdžiui, jei vienas įrenginys siunčia duomenis šiek tiek vėliau, nei tikisi kitas įrenginys, tai gali sukelti priėmimo klaidų.

Lengva naudoti

UART yra paprasta nustatyti ir naudoti, nes jiems nereikia jokios konfigūracijos, išskyrus duomenų kaiščio prijungimą prie atitinkamo mikrovaldiklio įvesties / išvesties kaiščio. Jie taip pat turi keletą kaiščių, todėl galite turėti daug jų a vienos grandinės plokštė nesijaudinant, kad sunaudos per daug vietos arba galia.

Pariteto bitas klaidų tikrinimui

Kai dirbate su nuoseklia sąsaja, svarbu tikrinti klaidas. UART yra su pariteto bitu, kuris leidžia patikrinti klaidas, o tai gali padėti užtikrinti, kad jūsų duomenys būtų perduodami teisingai.

UART trūkumai

Nors UART yra veiksmingas kelių programų sprendimas, naudojant UART protokolą yra keletas trūkumų:

Tik 9 bitų rėmelio dydis

Tai reiškia, kad kadro dydis arba duomenų, kuriuos galima siųsti vienu laidu, kiekis yra apribotas iki devynių bitų viename kadre. Jei bandysite išsiųsti daugiau nei 9 bitus viename kadre, jis bus sutrumpintas.

Mažas duomenų perdavimo greitis

Didžiausias UART trūkumas yra mažas duomenų perdavimo greitis. Nors tai gali būti nesudėtinga naudojant paprastas programas, tai gali būti didelis didelės spartos duomenų perdavimo trūkumas.

Taip yra dėl to, kad UART ryšiui naudoja tik vieną laidą ir nenaudoja jokių klaidų taisymo metodų.

Dėl šios priežasties UART nėra gerai pritaikytas programoms, kuriose reikia greitai perduoti didelius duomenų kiekius tarp dviejų įrenginių.

Negalite naudoti kelių pagrindinių arba pavaldžių sistemų

Jei norite naudoti kelias Master arba Slave sistemas, turite įsitikinti, kad jos visos veikia tuo pačiu laikrodžio dažniu. Jei ne, jūsų duomenys bus sugadinti.

Taip pat turite būti atsargūs, naudodami skirtingus duomenų perdavimo greičius tai pačiai pagrindinei ir pavaldinei sistemai. Jei tai padarysite, duomenys nebus tinkamai apdoroti.

SPI prieš UART

SPI prieš UART

Išvada

Taigi, koks yra nuosprendis? Kurį autobuso protokolą turėtumėte naudoti? Ar tai SPI ar UART? Na, paprasto atsakymo į tai nėra. Geriausias pasirinkimas greičiausiai priklausys nuo jūsų projekto poreikių ir susipažinimo su šiais protokolais. Tačiau jei turite sistemą, kuri jau naudoja vieną iš šių protokolų, geriausia jo laikytis, kad ryšys tarp kelių sistemų būtų nuoseklus.

Atnaujinkite slapukų nuostatas
Pereikite į viršų