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:
- Algusbit: Näitab uue andmeraami algust. See on tavaliselt madal (0) signaal.
- Andmebitid: Edastatav tegelik andmekogum, tavaliselt 8 bitti (üks bait), kuid võib olla ka 5, 6 või 7 bitti.
- Pariteetbit (valikuline): Kasutatakse veatuvastuseks. See võib olla paaritu, paariline või puududa.
- Stoppbit: Näitab andmeraami lõppu. See on tavaliselt kõrge (1) signaal. Tavaline on üks või kaks stopp-bitti.
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
- Mikrokontrollerite ühendamine arvutitega: UART-i kasutatakse tavaliselt sarvühenduse loomiseks mikrokontrolleri (nagu Arduino või Raspberry Pi) ja arvuti vahel programmeerimiseks, silumiseks ja andmete logimiseks.
- GPS-moodulid: Paljud GPS-moodulid kasutavad UART-i asukohaandmete edastamiseks host-mikrokontrollerile või arvutile.
- Bluetooth-moodulid: Bluetooth-moodulid kasutavad sageli UART-i kui kommunikatsiooniliidest mikrokontrolleriga.
- Sarjaprinterid: Vanemad sarjaprinterid kasutavad printimiskäskude ja andmete vastuvõtmiseks UART-i.
- Konsooliväljund: Manussüsteemid kasutavad sageli UART-i silumisinfo ja olekusõnumite väljastamiseks sarjale konsoolile.
UART eelised
- Lihtsus: UART-i on suhteliselt lihtne rakendada nii riistvaras kui ka tarkvaras.
- Paindlikkus: UART toetab erinevaid andmeedastuskiirusi, andmebittide pikkusi ja pariteedivalikuid.
- Laialt toetatud: UART on laialt toetatud standard, millel on kergesti kättesaadavad riist- ja tarkvaralahendused.
- Ei vaja taktisignaali: See vähendab vajalike juhtmete arvu.
UART puudused
- Madalam kiirus: Võrreldes sünkroonsete protokollidega nagu SPI, on UART-il tavaliselt madalam andmeedastuskiirus.
- Vigade vastuvõtlikkus: Ilma usaldusväärse taktisignaalita on UART ajastusvigadele ja andmete rikkumisele vastuvõtlikum. Kuigi pariteetbit võib aidata, ei taga see veavaba suhtlust.
- Piiratud kahe seadmega: UART on peamiselt mõeldud punktist-punkti suhtlemiseks kahe seadme vahel. Multipleksimine võib võimaldada mitmel seadmel olla ühel UART-siinil, kuid see lisab keerukust.
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:
- MOSI (Master Out Slave In): Meistri poolt orjale edastatav andmesignaal.
- MISO (Master In Slave Out): Orja poolt meistrile edastatav andmesignaal.
- SCK (Serial Clock): Meistri poolt genereeritav taktisignaal, mida kasutatakse andmeedastuse sünkroonimiseks.
- SS/CS (Slave Select/Chip Select): Meistri poolt konkreetse orjaseadme valimiseks kasutatav signaal. Igal orjaseadmel on tavaliselt oma eriline SS/CS juhtme.
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.
- Režiim 0 (CPOL=0, CPHA=0): SCK on jõudeasendis madal. Andmeid proovivõetakse tõusval serval ja nihutatakse langeval serval.
- Režiim 1 (CPOL=0, CPHA=1): SCK on jõudeasendis madal. Andmeid proovivõetakse langeval serval ja nihutatakse tõusval serval.
- Režiim 2 (CPOL=1, CPHA=0): SCK on jõudeasendis kõrge. Andmeid proovivõetakse langeval serval ja nihutatakse tõusval serval.
- Režiim 3 (CPOL=1, CPHA=1): SCK on jõudeasendis kõrge. Andmeid proovivõetakse tõusval serval ja nihutatakse langeval serval.
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
- Mälukaardid (SD-kaardid, microSD-kaardid): SPI-i kasutatakse sageli mälukaartidega liidestumiseks manussüsteemides.
- Sensorid: Paljud sensorid, nagu kiirendusmõõturid, güroskoopid ja temperatuuriandurid, kasutavad andmete edastamiseks SPI-i.
- Ekraanid: SPI-i kasutatakse tavaliselt LCD- ja OLED-ekraanide juhtimiseks.
- Analogi-digitaalkonverterid (ADC) ja digitaal-analogi konverterid (DAC): SPI-i kasutatakse ADC-de ja DAC-dega suhtlemiseks andmete hankimise ja juhtimisrakenduste jaoks.
- Nihkeregistrid: SPI-i saab kasutada nihkeregistrite juhtimiseks, et laiendada mikrokontrolleri saadaval olevate digitaalsete I/O-viikude arvu.
SPI eelised
- Kõrge kiirus: SPI pakub oluliselt kõrgemaid andmeedastuskiirusi võrreldes UART-iga.
- Täisdupleks-kommunikatsioon: Andmeid saab edastada mõlemas suunas samaaegselt.
- Mitu orja: Üks meister saab suhelda mitme orjaseadmega.
- Suhteliselt lihtne riistvara: SPI nõuab ainult nelja juhet (pluss üks SS/CS juhe orjaseadme kohta).
SPI puudused
- Puudub adresseerimisskeem: SPI tugineb orjaseadmete valimiseks SS/CS juhtmetele, mis võib suure hulga orjade puhul muutuda tülikaks.
- Lühike vahemaa: SPI on üldiselt piiratud lühikeste vahemaadega signaali halvenemise tõttu kõrgematel kiirustel.
- Puudub veatuvastus: SPI-l ei ole sisseehitatud veatuvastusmehhanisme. Veakontroll peab olema rakendatud tarkvaras.
- Keerukam tarkvararakendus: Kuigi riistvara on suhteliselt lihtne, võib tarkvararakendus olla keerukam kui UART, eriti mitme orja ja erinevate SPI-režiimidega töötamisel.
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:
- Valige ADXL345, viies selle SS/CS juhtme madalaks.
- Saadake loetava registri aadress (nt X-telje kiirendusandmete aadress).
- Lugege andmeid MISO juhtmelt (X-telje kiirenduse väärtus).
- Korrake samme 2 ja 3 Y- ja Z-telje jaoks.
- 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:- Andmeedastuskiirus: Kui vajatakse kiiremat andmeedastust, on SPI üldiselt parem valik.
- Vahemaa: Pikemate vahemaade jaoks on UART sobivam.
- Seadmete arv: Kui mitu seadet peab suhtlema ühe meistriga, on SPI eelistatud.
- Keerukus: Kui prioriteediks on lihtsus, on UART-i lihtsam rakendada.
- Veatuvastus: Kui veatuvastus on kriitiline, kaaluge UART-i kasutamist pariteetbitiga või veakontrolli rakendamist tarkvaras SPI jaoks.
- Saadaval olev riistvara: Mõned mikrokontrollerid võivad ühe või teise protokolli piiratud tuge pakkuda. Otsuse tegemisel võtke arvesse saadaolevaid riistvararesursse.
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.