- Ryšio protokolų tipai
- Perdavimo režimai nuoseklioje komunikacijoje
- Laikrodžio sinchronizavimas
- Kitos su nuosekliu bendravimu susijusios sąlygos
- Sinchroniniai serijiniai protokolai
- Asinchroniniai serijos protokolai
- Išvada
Prieš pradėdami naudoti nuoseklaus ryšio protokolus, padalinkime terminologiją į tris dalis. Bendravimas yra labai gerai žinomas terminologiją, kuri apima keitimąsi informacija tarp dviejų ar daugiau aplinkų keistis. Įterptosiose sistemose ryšys reiškia duomenų mainus tarp dviejų mikrovaldiklių bitų pavidalu. Šis duomenų valdymas mikrokontroleryje atliekamas keičiantis tam tikromis apibrėžtomis taisyklėmis, vadinamomis ryšio protokolais. Dabar, jei duomenys siunčiami nuosekliai, ty vienas po kito, ryšio protokolas yra žinomas kaip nuoseklaus ryšio protokolas. Tiksliau sakant, duomenų bitai nuosekliai perduodami nuosekliai per duomenų magistralę arba ryšio kanalą nuosekliojo ryšio srityje.
Ryšio protokolų tipai
Skaitmeninėje elektronikoje yra įvairių duomenų perdavimo rūšių, tokių kaip nuoseklusis ir lygiagretusis ryšys. Panašiai protokolai yra suskirstyti į du tipus, tokius kaip nuoseklaus ryšio protokolas ir lygiagretaus ryšio protokolai. Lygiagretaus ryšio protokolų pavyzdžiai yra ISA, ATA, SCSI, PCI ir IEEE-488. Panašiai yra keletas nuosekliojo ryšio protokolų pavyzdžių, tokių kaip CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire ir SATA ir kt.
Šiame straipsnyje bus aptarti skirtingi serijos ryšio protokolų tipai. Nuoseklioji komunikacija yra plačiausiai naudojamas būdas perduoti informaciją tarp duomenų apdorojimo periferinių įrenginių. Kiekvienas elektroninis prietaisas, nesvarbu, ar jis yra asmeninis kompiuteris (PC), ar mobilusis, veikia nuosekliuoju ryšiu. Protokolas yra saugi ir patikima ryšio forma, turinti taisyklių rinkinį, kurį sprendžia šaltinio pagrindinio kompiuterio (siuntėjo) ir paskirties pagrindinio kompiuterio (imtuvo) adresai, panašūs į lygiagrečią komunikaciją.
Perdavimo režimai nuoseklioje komunikacijoje
Kaip jau minėta pirmiau, nuosekliame ryšyje duomenys siunčiami bitų, ty dvejetainių impulsų pavidalu, ir yra gerai žinoma, kad dvejetainis vienas reiškia logiką HIGH, o nulis - logiką LOW. Yra keletas serijinio ryšio tipų, priklausomai nuo perdavimo režimo tipo ir duomenų perdavimo. Perdavimo režimai klasifikuojami kaip „Simplex“, „Half Duplex“ ir „Full Duplex“.
Simplex metodas:
Vienkartiniu metodu vienu metu gali būti aktyvi bet kuri terpė, ty siuntėjas arba imtuvas. Taigi, jei siuntėjas perduoda duomenis, imtuvas gali priimti tik ir atvirkščiai. Taigi simplex metodas yra vienpusio bendravimo technika. Gerai žinomi paprastojo metodo pavyzdžiai yra Televizija ir Radijas.
Pusiau dvipusis metodas:
Pusiau dupleksiniu metodu tiek siuntėjas, tiek imtuvas gali būti aktyvūs, bet ne tuo pačiu metu. Taigi, jei siuntėjas perduoda, imtuvas gali priimti, bet negali siųsti ir panašiai atvirkščiai. Gerai žinomi pusės duplekso pavyzdžiai yra internetas, kur vartotojas siunčia duomenų užklausą ir gauna ją iš serverio.
„Full Duplex“ metodas:
Taikant visą dvipusį metodą, tiek imtuvas, tiek siųstuvas gali siųsti duomenis vienas kitam tuo pačiu metu. Gerai žinomas pavyzdys yra mobilusis telefonas.
Be to, norint tinkamai perduoti duomenis, laikrodis vaidina svarbų vaidmenį ir yra vienas iš pagrindinių šaltinių. Netinkamai veikiant laikrodžiui, duomenys net netikėtu atveju net prarandami. Taigi laikrodžio sinchronizavimas tampa labai svarbus naudojant nuoseklųjį ryšį.
Laikrodžio sinchronizavimas
Serijinių prietaisų laikrodis yra skirtingas ir jis yra klasifikuojamas į du tipus, t. Sinchroninė nuoseklioji sąsaja ir asinchroninė nuoseklioji sąsaja.
Sinchroninė nuoseklioji sąsaja:
Tai yra taško į tašką ryšys iš šeimininko ir vergo. Šio tipo sąsajoje visi įrenginiai naudoja vieną procesoriaus magistralę duomenims ir laikrodžiui dalytis. Duomenų perdavimas tampa greitesnis, kai ta pati magistralė dalijasi laikrodžiu ir duomenimis. Be to, šioje sąsajoje nėra duomenų perdavimo greičio neatitikimo. Siųstuvo pusėje duomenys perkeliami į nuosekliąją liniją, suteikiant laikrodį kaip atskirą signalą, nes prie duomenų nėra pradžios, sustojimo ir pariteto bitų. Imtuvo pusėje duomenys išgaunami naudojant siųstuvo pateiktą laikrodį ir nuoseklūs duomenys paverčiami atgal į lygiagrečią formą. Žinomi pavyzdžiai yra I2C ir SPI.
Asinchroninė nuoseklioji sąsaja:
Asinchroninėje nuosekliojoje sąsajoje nėra išorinio laikrodžio signalo. Asinchroninės nuosekliosios sąsajos gali būti matomos dažniausiai tolimojo susisiekimo programose ir puikiai tinka stabiliam ryšiui. Asinchroninėje nuosekliojoje sąsajoje nėra išorinio laikrodžio šaltinio, todėl jis remiasi keliais parametrais, tokiais kaip duomenų srauto valdymas, klaidų valdymas, perdavimo spartos valdymas, perdavimo valdymas ir priėmimo valdymas. Dėl siųstuvo pusę, yra iš lygiagrečių duomenų perkėlimas ant serijos linijos, naudojant savo laikrodį. Taip pat pridedami pradžios, pabaigos ir pariteto patikrinimo bitai. Imtuvo pusėje imtuvas išskiria duomenis naudodamas savo laikrodį ir, atėmęs pradžios, pabaigos ir pariteto bitus, serijinius duomenis paverčia atgal į lygiagrečią formą. Gerai žinomi pavyzdžiai yra RS-232, RS-422 ir RS-485.
Kitos su nuosekliu bendravimu susijusios sąlygos
Be laikrodžio sinchronizavimo, yra keletas dalykų, kuriuos reikia atsiminti perduodant duomenis nuosekliai, pvz., Perdavimo sparta, duomenų bitų pasirinkimas (kadravimas), sinchronizavimas ir klaidų tikrinimas. Aptarkime šias sąlygas trumpai.
Duomenų perdavimo sparta: perdavimo sparta yra greitis, kuriuo duomenys perduodami tarp siųstuvo ir imtuvo bitais per sekundę (bps). Dažniausiai naudojamas perdavimo greitis yra 9600. Tačiau yra ir kitų duomenų perdavimo greičio pasirinkimas, pavyzdžiui, 1200, 2400, 4800, 57600, 115200. Kuo daugiau duomenų perdavimo greitis bus riebalai, tuo pačiu metu duomenys bus perduodami. Be to, duomenų perdavimo ryšiui tiek siųstuvo, tiek imtuvo perdavimo sparta turi būti vienoda.
Kadravimas: kadravimas reiškia duomenų bitų, kuriuos reikia siųsti iš siųstuvo į imtuvą, skaičių. Taikymo atveju duomenų bitų skaičius skiriasi. Daugumoje programų naudojami 8 bitai kaip standartiniai duomenų bitai, tačiau ją taip pat galima pasirinkti kaip 5, 6 arba 7 bitus.
Sinchronizavimas: Sinchronizavimo bitai yra svarbūs norint pasirinkti duomenų dalį. Tai nurodo duomenų bitų pradžią ir pabaigą. Siųstuvas nustatys duomenų kadro pradžios ir pabaigos bitus, o imtuvas juos atitinkamai atpažins ir atliks tolesnį apdorojimą.
Klaidų valdymas: klaidų valdymas vaidina svarbų vaidmenį, kai nuoseklus ryšys, nes yra daug veiksnių, kurie daro įtaką ir prideda nuoseklaus ryšio triukšmą. Norėdami atsikratyti šios klaidos, naudojami pariteto bitai, kai paritetas tikrins lyginį ir nelyginį paritetą. Taigi, jei duomenų rėmelyje yra lyginis skaičius 1, tai jis vadinamas lyginiu paritetu, o pariteto bitas registre yra nustatytas kaip 1. Panašiai, jei duomenų rėmelyje yra nelyginis skaičius 1, tada jis žinomas kaip nelyginis paritetas ir išvalo nelyginis pariteto bitas registre.
Protokolas yra kaip bendra kalba, kurią sistema naudoja duomenims suprasti. Kaip aprašyta aukščiau, nuoseklaus ryšio protokolas yra suskirstytas į tipus, ty Sinchroninis ir Asinchroninis. Dabar abu bus išsamiai aptarti.
Sinchroniniai serijiniai protokolai
Sinchroninio tipo serijinių protokolų, pavyzdžiui, SPI, I2C, gali ir LIN naudojami įvairiuose projektuose, nes ji yra viena iš geriausių išteklių laive periferiniai įrenginiai. Tai yra plačiai naudojami protokolai pagrindinėse programose.
SPI protokolas
Serijinė periferinė sąsaja (SPI) yra sinchroninė sąsaja, leidžianti sujungti kelis SPI mikrovaldiklius. SPI duomenims ir laikrodžio linijai reikalingi atskiri laidai. Laikrodis taip pat nėra įtrauktas į duomenų srautą ir turi būti pateiktas kaip atskiras signalas. SPI gali būti sukonfigūruotas kaip pagrindinis arba vergas. Keturi pagrindiniai SPI signalai (MISO, MOSI, SCK ir SS), Vcc ir Ground yra duomenų perdavimo dalis. Taigi, norint siųsti ir gauti duomenis iš vergo ar pagrindinio kompiuterio, reikia 6 laidų. Teoriškai SPI gali turėti neribotą vergų skaičių. Duomenų ryšys sukonfigūruotas SPI registruose. SPI gali perduoti iki 10Mbps spartą ir idealiai tinka didelės spartos duomenų perdavimui.
Dauguma mikrovaldiklių turi integruotą SPI palaikymą ir gali būti tiesiogiai prijungti prie SPI palaikomo įrenginio:
- SPI ryšys su PIC mikrovaldikliu PIC16F877A
- Kaip naudoti SPI ryšį STM32 mikrovaldiklyje
- Kaip naudoti SPI „Arduino“: Ryšys tarp dviejų „Arduino“ plokščių
„I2C“ nuoseklioji komunikacija
„Integrated circuit“ (I2C) dviejų linijų ryšys tarp skirtingų IC arba modulių, kur dvi linijos yra SDA (nuoseklioji duomenų linija) ir SCL (nuosekliojo laikrodžio linija). Abi linijos turi būti prijungtos prie teigiamo maitinimo šaltinio naudojant varžą. „I2C“ gali perduoti greitį iki 400 Kbps ir naudoja 10 ar 7 bitų adresavimo sistemą, kad nukreiptų į konkretų „i2c“ magistralės įrenginį, kad galėtų prijungti iki 1024 įrenginių. Jis turi riboto ilgio ryšį ir idealiai tinka bendrauti laive. „I2C“ tinklus lengva konfigūruoti, nes jame naudojami tik du laidai, o naujus įrenginius galima tiesiog prijungti prie dviejų bendrų „I2C“ magistralių linijų. Tas pats kaip SPI, mikrovaldiklis paprastai turi I2C kaiščius, kad būtų galima prijungti bet kurį I2C įrenginį:
- Kaip naudoti „I2C Communication“ STM32 mikrovaldiklyje
- „I2C“ ryšys su PIC mikrovaldikliu PIC16F877
- Kaip naudoti „I2C“ sistemoje „Arduino“: Ryšys tarp dviejų „Arduino“ plokščių
USB
USB (universali nuoseklioji magistralė) yra plačiai naudojamas protokolas su skirtingomis versijomis ir greičiais. Prie vieno USB pagrindinio kompiuterio valdiklio galima prijungti ne daugiau kaip 127 išorinius įrenginius. USB veikia kaip „plug and play“ įrenginys. USB naudojamas beveik tokiuose įrenginiuose kaip klaviatūros, spausdintuvai, medijos prietaisai, fotoaparatai, skaitytuvai ir pelės. Jis sukurtas lengvam montavimui, greitesniam duomenų įvertinimui, mažiau kabelių ir karšto keitimo. Jis pakeitė didesnius ir lėtesnius nuoseklius ir lygiagrečius prievadus. USB naudoja diferencinį signalą, kad sumažintų trukdžius ir leistų perduoti dideliu greičiu dideliu atstumu.
Diferencialinė magistralė yra pastatyta dviem laidais, vienas iš jų atspindi perduotus duomenis, o kitas - jų papildymą. Idėja yra ta, kad „vidutinė“ įtampa ant laidų neturi jokios informacijos, todėl trukdžiai yra mažesni. USB jungtyje įrenginiams leidžiama pasikrauti tam tikrą energijos kiekį, nepaklausus pagrindinio kompiuterio. USB naudoja tik du laidus duomenims perduoti ir yra spartesni nei nuoseklioji ir lygiagreti sąsaja. USB versijos palaiko skirtingus greičius, tokius kaip 1,5 Mbps (USB v1.0), 480 Mbps (USB2.0), 5Gbps (USB v3.0). Individualaus USB kabelio ilgis gali būti iki 5 metrų be stebulės ir 40 metrų su šakotuvu.
GALI
Valdiklio srities tinklas (CAN) naudojamas, pavyzdžiui, automobiliuose, kad būtų galima bendrauti tarp ECU (variklio valdymo bloko) ir jutiklių. CAN protokolas yra tvirtas, nebrangus, pagrįstas pranešimais ir apima daugelį programų, pvz., Lengvuosius automobilius, sunkvežimius, traktorius, pramoninius robotus. CAN magistralės sistema leidžia centralizuotai diagnozuoti ir konfigūruoti visus ECU. CAN pranešimai yra prioritetiniai per ID, kad aukščiausio prioriteto ID nebūtų nenutrūkstami. Kiekviename ECU yra lustas, skirtas priimti visus perduotus pranešimus, nuspręsti dėl tinkamumo ir atitinkamai elgtis - tai leidžia lengvai modifikuoti ir įtraukti papildomus mazgus (pvz., CAN magistralės duomenų kaupiklius). Programos apima transporto priemonių paleidimą / sustabdymą, susidūrimo vengimo sistemas. CAN magistralės sistemos gali užtikrinti greitį iki 1Mbps.
Mikrovidu
„MICROWIRE“ yra 3Mbps nuoseklioji 3 laidų sąsaja, iš esmės SPI sąsajos pogrupis. „Microwire“ yra nuoseklus mikrovaldiklių įvesties / išvesties prievadas, todėl „Microwire“ magistralė taip pat bus randama EEPROM ir kituose „Peripheral“ lustuose. 3 eilutės yra SI (nuoseklus įvestis), SO („SerialOutput“) ir SK (nuoseklusis laikrodis). Serijinės įvesties (SI) linija į mikrovaldiklį, SO yra nuoseklioji išvesties linija, o SK - nuosekliojo laikrodžio linija. Duomenys nukreipiami į krintantį SK kraštą ir yra vertinami kylančiame krašte. SI yra įstumtas ant kylančio SK krašto. Papildomas „MICROWIRE“ magistralės patobulinimas vadinamas „MICROWIRE / Plus“. Panašu, kad pagrindinis skirtumas tarp dviejų magistralių yra tas, kad mikrovaldiklio „MICROWIRE / Plus“ architektūra yra sudėtingesnė. Jis palaiko greitį iki 3Mbps.
Asinchroniniai serijos protokolai
Asinchroninis serijinių protokolų tipas yra labai svarbus, kai kalbama apie didesnį atstumą ir patikimą duomenų perdavimą. Asinchroniniam ryšiui nereikia laiko nustatymo laikrodžio, kuris yra bendras abiem įrenginiams. Kiekvienas prietaisas savarankiškai klauso ir siunčia skaitmeninius impulsus, kurie nurodo duomenų bitus sutartu greičiu. Asinchroninis nuoseklusis ryšys kartais vadinamas tranzistoriaus-tranzistoriaus logikos (TTL) nuosekliuoju, kur aukštos įtampos lygis yra loginis 1, o žemoji įtampa lygi logikai 0. Beveik kiekvienas šiandien rinkoje esantis mikrovaldiklis turi bent vieną universalų asinchroninį imtuvą. Siųstuvas (UART) nuosekliam ryšiui. Pavyzdžiai yra RS232, RS422, RS485 ir kt.
RS232
RS232 (rekomenduojamas standartas 232) yra labai paplitęs protokolas, naudojamas sujungti įvairius išorinius įrenginius, tokius kaip monitoriai, CNC ir kt. RS232 yra vyriškos ir moteriškos jungtys. „RS232“ yra taškas į tašką topologija, prie kurios prijungtas ne daugiau kaip vienas įrenginys. Jis įveikia iki 15 metrų atstumą 9600 bps greičiu. Informacija apie RS-232 sąsają skaitmeniniu būdu perduodama loginiu 0 ir 1. Loginis „1“ (MARK) atitinka įtampą diapazone nuo -3 iki –15 V. Loginis „0“ (SPACE) atitinka a įtampa svyruoja nuo +3 iki +15 V. Jį galima įsigyti iš DB9 jungties, kurioje yra 9 kontaktai, tokie kaip TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 yra panašus į RS232, kuris leidžia vienu metu siųsti ir priimti pranešimus atskiromis linijomis, tačiau tam naudojamas diferencialinis signalas. RS-422 tinkle gali būti tik vienas perdavimo įrenginys ir iki 10 priėmimo įrenginių. RS-422 duomenų perdavimo greitis priklauso nuo atstumo ir gali skirtis nuo 10 kbps (1200 metrų) iki 10 Mbps (10 metrų). RS-422 linija yra 4 laidai duomenims perduoti (2 susukti laidai perdavimui ir 2 susukti laidai priėmimui) ir vienas bendras GND įžeminimo laidas. Įtampa duomenų linijose gali būti nuo -6 V iki +6 V. Loginis skirtumas tarp A ir B yra didesnis nei +0,2 V. Loginis 1 atitinka skirtumą tarp A ir B, mažesnį nei -0,2 V. RS-422 standartas neapibrėžia konkretaus tipo jungties, paprastai tai gali būti gnybtų blokas arba DB9 jungtis.
RS485
Kadangi RS485 naudojama daugiataškė topologija, ji dažniausiai naudojama pramonės šakose ir yra pramonės pageidaujamas protokolas. RS422 gali prijungti 32 linijų tvarkykles ir 32 imtuvus skirtingose konfigūracijose, tačiau papildomų retransliatorių ir signalo stiprintuvų pagalba iki 256 įrenginių. RS-485 neapibrėžia konkretaus tipo jungties, tačiau dažnai tai yra gnybtų blokas arba DB9 jungtis. Veikimo greitis taip pat priklauso nuo linijos ilgio ir gali siekti 10 Mbit / s 10 metrų atstumu. Linijų įtampa yra nuo -7 V iki +12 V. Yra du RS-485 tipai, tokie kaip pusiau dupleksinis režimas RS-485 su 2 kontaktais ir viso dupleksinio režimo RS-485 su 4 kontaktais. Norėdami sužinoti daugiau apie RS485 naudojimą su kitais mikrovaldikliais, patikrinkite nuorodas:
- RS-485 MODBUS nuoseklusis ryšys naudojant „Arduino UNO“ kaip vergą
- RS-485 nuoseklus ryšys tarp „Raspberry Pi“ ir „Arduino Uno“
- RS485 nuoseklus „Arduino Uno“ ir „Arduino Nano“ ryšys
- Serijinis ryšys tarp STM32F103C8 ir „Arduino UNO“ naudojant RS-485
Išvada
Nuoseklioji komunikacija yra viena iš plačiai naudojamų elektronikos ir įterptųjų sistemų ryšio sąsajų sistemų. Skirtingose programose duomenų perdavimo sparta gali būti skirtinga. Serijinio ryšio protokolai gali vaidinti lemiamą vaidmenį sprendžiant tokio pobūdžio programas. Taigi pasirinkti tinkamą serijos protokolą tampa labai svarbu.