Teoria e programimit - Ndërfaqja SPI. Teoria e programimit - Marrja e ndërfaqes SPI spi

14.03.2024

SPI(Ndërfaqja periferike serike, ndërfaqe periferike serike, autobus SPI) - Kjo është një ndërfaqe e të dhënave në distanca të shkurtra e zhvilluar nga Motorola. Të dhënat transmetohen në modalitetin full duplex (në të dy drejtimet) duke përdorur një arkitekturë master-slave. SPI nganjëherë quhet edhe një ndërfaqe me katër tela.

Fig.1 komunikim standard nëpërmjet SPI

Në gomë SPI Përdoren 4 sinjale dixhitale:
  • MOSI: (Master Out Slave In) Prodhimi kryesor, hyrja skllav.
  • MISO: (Master In Slave Out) hyrje kryesore, dalje skllav.
  • SCLK: (Serial Clock) sinjali i orës.
  • C.S. ose SS: (Zgjidhja e çipit, Zgjedhja e skllevërve) përzgjedhja e çipit, përzgjedhja e skllevërve.

Emra të tjerë janë të mundshëm:

  • MOSI: SIMO, SDO, DO, DOUT, SI, MTSR;
  • MISO: SOMI, SDI, DI, DIN, SO, MRST;
  • SCLK: SCK, CLK;
  • SS: nCS, CS, CSB, CSN, nSS, STE, SYNC.
Goma SPI mund të punojë me 1 pajisje master dhe disa skllav. Nëse përdoret një pajisje skllav, atëherë hyrja e saj SS mund të tokëzohet, por vetëm nëse nuk funksionon në një ndërprerje sinjali.

Nëse përdorni disa pajisje skllav, duhet të lidhni rezistorë tërheqës në secilën nga kunjat SS dhe sigurohuni që rezultatet MISO secila prej pajisjeve është e lidhur përmes një tamponi me një gjendje të rezistencës së lartë (në praktikë, dalja konsiderohet e shkëputur), kjo mund të zbatohet brenda mikroqarkut, ju duhet të studioni dokumentacionin për pajisjen specifike.

Nëse nuk ka bufer të siguruar brenda pajisjeve, atëherë linja MISO do të jetë gjithmonë në gjendjen log.0 ose log.1. (mund të digjet gjithashtu). Për të kontrolluar nëse ka një tampon brenda pajisjes sonë, mund të lexoni dokumentacionin ose të lidhni një ndarës të tensionit në mënyrë që në linjë MISO ishte gjysma e tensionit të furnizimit, pastaj matni tensionin real. Nëse vlera që kemi matur është e ndryshme (do të jetë 0 V ose tensioni i furnizimit), atëherë nuk ka tampon dhe duhet të instalohet si një çip i veçantë.


Fig.3 Kontrollimi i pranisë së një buferi të brendshëm

Transferimi i të dhënave


Master dhe slave transmetojnë të dhëna tek njëri-tjetri në të njëjtën kohë. Së pari ju duhet të zgjidhni një pajisje skllav duke vendosur hyrjen e saj në SS niveli i ulët logjik (mund të ndryshojë në varësi të prodhuesit). Të dhënat që do të transmetohen vendosen në regjistrat e ndërrimit. Pastaj masteri gjeneron sinjale të orës me një frekuencë prej rreth disa MHz, master dhe slave fillojnë t'i dërgojnë njëri-tjetrit informacionin e ruajtur në regjistrat e ndërrimit pak nga pak, duke filluar me bitin më domethënës.

Fig.4 Transferimi i të dhënave nëpërmjet SPI
Përdoren gjithsej 2 regjistra ndërrimi, biti më i rëndësishëm nga një pajisje transferohet në bitin më pak të rëndësishëm të një pajisjeje tjetër, pas së cilës regjistri zhvendos informacionin e ruajtur në të. Numri i biteve në 1 paketë të dhënash varet nga pajisja specifike, disa prodhues shtojnë aftësinë për të ndryshuar gjatësinë e paketës.

Nëse duhet të transferohen më shumë të dhëna, informacioni i ri shkruhet në regjistra dhe procesi fillon përsëri nëse transferimi i të dhënave ka përfunduar, masteri zakonisht fiket pajisjen skllav.

Për konfigurimin e ndërfaqes përdoren disa regjistra. Mund të rregulloni frekuencën, ndërprerjet, renditjen e biteve dhe shumë më tepër, më shumë informacion në lidhje me këtë mund të gjeni në dokumentacionin e Motorola ee.nmt.edu, ky dokument është marrë si standard për. SPI. Por prodhuesit mund të mos përdorin të gjitha cilësimet e përshkruara atje dhe pjesët mund të renditen në një sekuencë të ndryshme nga përshkrimi i Motorola. Në çdo rast, duhet të lexoni dokumentacionin për pajisjen specifike.

Nëse është e qartë për vendosjen e frekuencës së transmetimit dhe zgjedhjen e një master/slave, atëherë mund të përshkruani më në detaje rreth vendosjes së fazës dhe polaritetit të sinjalit të orës.

Në thelb, këto cilësime mund të kuptohen nga diagrami i kohës:

  • CPOL= 0: sinjali i sinkronizimit fillon pak;
  • CPOL= 1: sinjali i sinkronizimit fillon lart;
  • CPHA= 0: Të dhënat shkruhen në skajin në rritje të sinjalit të orës;
  • CPHA= 1: Të dhënat regjistrohen në skajin në rënie të sinjalit të orës.
Skajet në rënie dhe ato kryesore tregojnë ndryshimin e parë në sinjalin e orës, ose të dytën. Kjo nuk varet nga ajo gjendje në të cilën shkon linja SCK, mund të jetë ose një front në rënie ose në rritje.

Në varësi të gjendjes së bitave CPHA Dhe CPOL, ekzistojnë 4 mënyra funksionimi të ndërfaqes SPI (0, 1, 2 ose 3). Por në varësi të prodhuesit, ato shpesh korrespondojnë me gjendje të ndryshme bit, për shembull, për kontrollorët ARM dhe PIC32MX, asnjë nga mënyrat nuk përkon.

Ekzistojnë 2 mënyra të njohura për të aktivizuar SPI-të e shumta, e para prej të cilave është një lidhje me zinxhir:

Në këtë rast, master zgjedh se cila pajisje skllav duhet të transmetojë të dhëna.

Mund të ndodhë që pajisjet skllav nuk janë të pajtueshme me njëra-tjetrën dhe ato kanë nevojë për cilësime të ndryshme, për shembull, gjatësi të ndryshme paketash, në këtë rast ata përdorin një lidhje "unaze":

Në këtë rast, të gjitha pajisjet ndizen njëkohësisht dhe të dhënat transmetohen në mënyrë sekuenciale për të transferuar informacione në çdo pajisje ose prej saj te masteri, është e nevojshme të kalohen nëpër disa cikle transmetimi.

konkluzioni


SPI Ndërfaqja ka fituar popullaritetin e saj për shkak të thjeshtësisë dhe kostos së ulët. Tani mund të gjendet në një numër të madh pajisjesh të programuara me ndihmën e tij, JTAG gjithashtu zbatohet në bazë SPI. shpesh përdoret për të komunikuar me mikroqarqe të ndryshme: memorie flash, EEPROM, LCD, karta SD, ADC, mikroqarqe DAC dhe shumë më tepër.

Megjithëse standardi përshkruhet nga Motorola, nuk ka përkufizime dhe kufij të qartë për të SPI, kjo është arsyeja pse ju mund të gjeni implementime të ndryshme të kësaj ndërfaqeje mund të përdoren një numër të ndryshëm linjash sinjali, numri i biteve në një paketë dhe metoda të tjera konfigurimi. Pra, së pari duhet të lexoni dokumentacionin për pajisjen me të cilën po punoni.

Ka zbatime të gatshme SPI"transmetues" që mund të lidhen me një kompjuter, të cilët mund të jenë të dobishëm për korrigjimin e projekteve të ndryshme, dhe oshiloskopët e rinj dhe analizuesit logjikë mund të deshifrojnë SPI paketat.

Përparësitë

  • Transmetim i plotë i të dhënave dupleks.
  • Rrjedha më e lartë në krahasim me I²C ose SMBus.
  • Mundësia e zgjedhjes arbitrare të gjatësisë së paketës.
  • kërkesa më të ulëta për konsum të energjisë krahasuar me I²C dhe SMBus;
  • Mund të përdoret në sisteme me shpejtësi të ulët të orës të qëndrueshme;
  • Pajisjet skllav nuk kanë nevojë për një adresë unike, ndryshe nga ndërfaqet si I²C, GPIB ose SCSI.
  • Përdoren vetëm katër kunja, që është shumë më pak se për ndërfaqet paralele.
  • Natyra e njëanshme e sinjaleve lejon, nëse është e nevojshme, të organizohet lehtësisht izolimi galvanik midis pajisjeve master dhe skllav.
  • Frekuenca maksimale e orës kufizohet vetëm nga shpejtësia e pajisjeve të përfshira në shkëmbimin e të dhënave.

Të metat

  • Kërkohen më shumë kunja sesa për ndërfaqen I²C.
  • Pajisja skllav nuk mund të kontrollojë rrjedhën e të dhënave.
  • Nuk ka asnjë konfirmim të marrjes së të dhënave nga pajisja skllave (pajisja kryesore mund të transmetojë të dhëna "në askund").
  • Nuk ka asnjë protokoll të përcaktuar standard për zbulimin e gabimeve.
  • Mungesa e një standardi zyrtar e bën të pamundur certifikimin e pajisjeve.
  • Për sa i përket gamës së transmetimit të të dhënave, ndërfaqja SPI është inferiore ndaj standardeve të tilla si UART dhe CAN.
  • Disponueshmëria e shumë opsioneve të zbatimit të ndërfaqes.
  • Mungesa e mbështetjes për mbylljen e nxehtë të pajisjeve.

Burimet:
Dokumentacion nga Motorola

Ndërfaqet e transferimit.

Shumë ndërfaqe të transferimit të të dhënave janë zhvilluar për të transferuar të dhëna nga një pajisje në tjetrën ose nga një çip në tjetrin. Çdo ndërfaqe ka anët pozitive dhe negative, kështu që ju duhet të dini se cilat ndërfaqe ekzistojnë, të mirat dhe të këqijat e tyre dhe të përdorni ndërfaqen e duhur për të transferuar të dhëna në një situatë të caktuar.

Ndërfaqet vijnë me transferim asinkron dhe sinkron të të dhënave. Me transmetimin sinkron të të dhënave, një sinjal i orës transmetohet njëkohësisht me të dhënat, duke lejuar që marrësi dhe transmetuesi të sinkronizohen. Një shembull i një protokolli të tillë është ndërfaqja SPI.

Në transmetimin asinkron të të dhënave nuk ka sinjal të orës. Në linja të tilla ekziston rreziku i mospërputhjes midis marrësit dhe transmetuesit, si rezultat i të cilit të dhënat e mëtejshme nuk do të merren saktë. Për të parandaluar këtë, ndërfaqet asinkrone kryejnë sinkronizim periodik përgjatë linjave të të dhënave. Avantazhi i ndërfaqeve të tilla është numri më i vogël i përcjellësve të nevojshëm për transmetim.

Le të hedhim një vështrim më të afërt në disa nga ndërfaqet më të njohura.

Ndërfaqja USART.

Ndërfaqja USART është një transmetues serik universal sinkron-asinkron. Të dhënat transferohen në USART në intervale të rregullta. Kjo periudhë kohore përcaktohet nga shpejtësia e specifikuar e USART dhe specifikohet në baud (Për karakteret që mund të marrin vetëm vlera të barabarta me zero ose një, baud është ekuivalent me bit për sekondë). Ekziston një gamë e pranuar përgjithësisht e shpejtësive standarde: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 9216.

Përveç bitave të të dhënave, USART automatikisht fut shenjat e sinkronizimit në transmetim, të ashtuquajturat bit fillimi dhe ndalimi. Pas marrjes, këto pjesë shtesë hiqen. Në mënyrë tipike, bitet e fillimit dhe të ndalimit ndajnë një bajt informacioni (8 bit), por ka zbatime të USART që lejojnë transmetimin e 5, 6, 7, 8 ose 9 bit. Bitët e ndara nga sinjalet e fillimit dhe të ndalimit janë dërgimi minimal. USART ju lejon të futni dy bit ndalimi gjatë transmetimit për të zvogëluar gjasat e desinkronizimit të marrësit dhe transmetuesit në trafikun e rënduar. Marrësi injoron bitin e dytë të ndalimit, duke e trajtuar atë si një pauzë të shkurtër në linjë.

Konventa është që gjendja pasive (në mungesë të të dhënave) e hyrjes dhe daljes së USART është një "1" logjike. Biti i fillimit është gjithmonë një "0" logjik, kështu që marrësi USART pret një kalim nga "1" në "0" dhe numëron prej tij një interval kohor prej gjysmës së kohëzgjatjes së bitit (mesi i transmetimit të bitit fillestar) . Nëse në këtë moment hyrja është ende "0", atëherë fillon procesi i marrjes së parcelës minimale. Për ta bërë këtë, marrësi numëron 9-bit kohëzgjatje me radhë (për të dhënat 8-bit) dhe regjistron gjendjen e hyrjes në çdo moment. 8 vlerat e para janë të dhëna të marra, vlera e fundit është një vlerë testimi (biti i ndalimit). Vlera e bitit të ndalimit është gjithmonë "1" nëse vlera aktuale e marrë është e ndryshme, USART regjistron një gabim.

Për të formuar intervale kohore, USART-të transmetuese dhe marrëse kanë një burim të saktë të kohës (clocking). Saktësia e këtij burimi duhet të jetë e tillë që shuma e gabimeve (marrësi dhe transmetuesi) në vendosjen e intervalit kohor nga fillimi i pulsit të fillimit deri në mes të pulsit të ndalimit të mos kalojë gjysmën (ose më mirë akoma, të paktën një çereku) i intervalit bit. Për një mesazh 8-bit 0.5/9.5 = 5% (në realitet jo më shumë se 3%). Meqenëse kjo është shuma e gabimeve të marrësit dhe transmetuesit plus shtrembërimin e mundshëm të sinjalit në linjë, toleranca e rekomanduar për saktësinë e kronologjisë USART nuk është më shumë se 1.5%.

Meqenëse bitet e orës zënë një pjesë të rrymës së bitave, xhiroja që rezulton në UART nuk është e barabartë me shpejtësinë e lidhjes. Për shembull, për transmetimet e formatit 8-bit 8-N-1, bitet e orës zënë 20% të rrymës, e cila për një shpejtësi fizike prej 115,200 baud jep një shpejtësi bit-i të të dhënave prej 92,160 bps ose 11,520 bajt/s.

Kontrolli i barazisë

Protokolli USART ka aftësinë për të monitoruar automatikisht integritetin e të dhënave duke përdorur metodën e paritetit të biteve. Kur kjo veçori është e aktivizuar, biti i fundit i të dhënave ("biti i barazisë") është gjithmonë 1 ose 0, kështu që numri i njësheve në një bajt është gjithmonë çift.

Kontrolli i rrjedhjes

Në kohët e vjetra, pajisjet USART mund të ishin aq të ngadalta sa nuk mund të vazhdonin me rrjedhën e të dhënave në hyrje. Për të zgjidhur këtë problem, modulet USART u pajisën me dalje dhe hyrje të veçanta të kontrollit të rrjedhës. Kur buferi i hyrjes ishte i plotë, logjika e USART-it marrës vendosi nivelin e frenimit në daljen përkatëse dhe USART-i transmetues pezulloi transmetimin. Më vonë, kontrolli i rrjedhës iu caktua protokolleve të komunikimit dhe nevoja për linja të veçanta të kontrollit të rrjedhës u zhduk gradualisht.

Zbatimi fizik.

USART është një protokoll shkëmbimi, d.m.th. përcakton mënyrën e formimit të biteve, parametrat e transmetimit të bajtit, shpejtësinë e transmetimit etj.

Por zbatimi fizik i USART mund të jetë i ndryshëm. Për shembull, për të transmetuar të dhëna brenda një bord, sinjalet transmetohen në nivele +5V dhe 0V. Për transferimin e të dhënave në distanca të gjata dhe ndërmjet pajisjeve, përdoren nivele dhe standarde të tjera fizike të tensionit, si: qarku i rrymës (4-20 mA), RS-232 (porta COM), RS-485 dhe të ngjashme.

Për të kthyer nivelet e "kontrolluesit" 0-5V në nivele "standarde", ekziston një numër i madh i mikroqarqeve të specializuara, për shembull ADM202 për RS-232.

Ndërfaqja serike SPI

Emri SPI është një shkurtim për "Serial Peripheral Bus", i cili pasqyron qëllimin e tij - një autobus për lidhjen e pajisjeve të jashtme. Autobusi SPI është i organizuar sipas parimit master-slave. Masteri i autobusit është zakonisht një mikrokontrollues, por mund të jetë gjithashtu një logjikë e programueshme, një kontrollues DSP ose një ASIC. Pajisjet e lidhura me zotërinë janë skllevër. Roli i tyre luhet nga lloje të ndryshme të mikroqarqeve, përfshirë. pajisje ruajtëse (EEPROM, memorie flash, SRAM), orë në kohë reale (RTC), ADC/DAC, potenciometra dixhitalë, kontrollues të specializuar etj.

Blloku kryesor i ndërtimit të ndërfaqes SPI është një regjistër i ndërrimit konvencional, sinkronizimi i të cilit dhe sinjalet hyrëse/dalëse të bitstream formojnë sinjalet e ndërfaqes. Kështu, është më e saktë të quash protokollin SPI jo një protokoll transferimi të të dhënave, por një protokoll shkëmbimi të të dhënave midis dy regjistrave të ndërrimit, secili prej të cilëve kryen njëkohësisht funksionin e një marrësi dhe një transmetuesi. Një parakusht për transmetimin e të dhënave në autobusin SPI është gjenerimi i një sinjali sinkronizimi të autobusit. Vetëm udhëheqësi ka të drejtë të gjenerojë këtë sinjal dhe puna e skllavit varet plotësisht nga ai.

Lidhje.

Ekzistojnë tre lloje lidhjesh me autobusin SPI, secila prej të cilave përfshin katër sinjale. Qëllimi i sinjaleve SPI është përshkruar në tabelën 7.1.

Lidhja më e thjeshtë, e cila përfshin vetëm dy mikroqarqe, është paraqitur në figurën 7.2. Këtu, masteri i autobusit transmeton të dhëna përgjatë linjës MOSI në mënyrë sinkronike me sinjalin SCLK të gjeneruar prej tij, dhe skllavi kap bitet e të dhënave të transmetuara në skaje të caktuara të sinjalit të sinkronizimit të marrë. Në të njëjtën kohë, skllavi dërgon paketën e tij të të dhënave. Qarku i paraqitur mund të thjeshtohet duke eliminuar linjën MISO nëse IC skllave i përdorur nuk siguron transmetim të të dhënave të përgjigjes ose nuk ka nevojë për të. Transferimi i të dhënave në një drejtim mund të gjendet në çipa të tillë si DAC, potenciometra dixhitalë, amplifikues të programueshëm dhe drejtues. Kështu, opsioni i konsideruar për lidhjen e një IC skllav kërkon 3 ose 4 linja komunikimi.

Në mënyrë që IC-ja skllav të marrë dhe të transmetojë të dhëna, përveç që të ketë një sinjal të orës, linja SS gjithashtu duhet të drejtohet në nivele të ulëta. Përndryshe, IC skllav do të jetë joaktiv. Kur përdoret vetëm një IC i jashtëm, mund të jetë joshëse për të eliminuar linjën SS duke e çuar hyrjen e përzgjedhur të IC-së skllav në nivele të ulëta. Kjo zgjidhje është jashtëzakonisht e padëshirueshme dhe mund të çojë në dështime apo edhe në pamundësi të transferimit të të dhënave, sepse Hyrja e përzgjedhjes së çipit shërben për të rivendosur IC-në në gjendjen fillestare dhe ndonjëherë fillon daljen e bitit të parë të të dhënave.

Nëse është e nevojshme të lidhni disa mikroqarqe me autobusin SPI, përdoret ose një lidhje e pavarur (paralele) (Fig. 7.3) ose një lidhje kaskade (seriale) (Fig. 7.4). Lidhja e pavarur është më e zakonshme, sepse arrihet kur përdorni ndonjë çip të pajtueshëm me SPI. Këtu, të gjitha sinjalet, përveç zgjedhjes së mikroqarqeve, lidhen paralelisht, dhe masteri i autobusit, duke transferuar një ose një sinjal SS në një gjendje të ulët, specifikon se me cilin IC skllav do të shkëmbejë të dhëna. Disavantazhi kryesor i kësaj lidhjeje është nevoja për linja shtesë për adresimin e çipave skllav (numri i përgjithshëm i linjave të komunikimit është 3+n, ku n është numri i çipave slave).

Nëse nuk ka këmbë të mjaftueshme mikrokontrolluesi, mund të përdorni një çip demultipleksues. Demultiplekseri lidh një sinjal të vetëm hyrje me një nga sinjalet dalëse, në varësi të kodit në kunjat e kontrollit. Figura 7.4 tregon diagramin e lidhjes për demultipleksuesin. Sinjali SS furnizohet në hyrjen e tij, i cili merr një vlerë të barabartë me 0 nëse është e nevojshme të zgjidhni një nga mikroqarqet. Numri i mikroqarkut të kërkuar në kodin binar i jepet këmbëve Am-A0. Kjo ju lejon të reduktoni numrin e këmbëve të përdorura në mikrokontrollues në m=log 2 n. Ku n është numri i çipave skllav. ato. për të lidhur 128 pajisje, kërkohen 8 kunja mikrokontrollues. Një për vendosjen e sinjalit aktivizues dhe 7 për vendosjen e numrit të çipit që do të ndizet. Duhet të theksohet se duhet të ketë një logjik në këmbët e palidhura të demultipleksorit. Përndryshe, përdoret një inverter sinjali, i cili konverton një zero logjike në një logjike.

Ndërrimi i kaskadës është i lirë nga ky pengesë, sepse këtu, disa çipa formojnë një regjistër të madh ndërrimi. Për ta bërë këtë, dalja e transmetimit të të dhënave të njërës IC lidhet me hyrjen e marrjes së të dhënave të tjetrës, siç tregohet në figurën 3. Hyrjet e përzgjedhjes së çipit këtu janë të lidhura paralelisht dhe, kështu, numri i përgjithshëm i linjave të komunikimit mbahet i barabartë deri në 4. Megjithatë, përdorimi i lidhjes kaskadë është i mundur vetëm nëse mbështetja e tij tregohet në dokumentacionin për çipat e përdorur. Për ta zbuluar, është e rëndësishme të dini se një lidhje e tillë quhet "daisy-chaining" në anglisht.

Protokolli i transferimit

Protokolli i transmetimit mbi ndërfaqen SPI është në thelb identik me logjikën e regjistrit të ndërrimit (Figura 7.6), i cili konsiston në kryerjen e një operacioni zhvendosjeje dhe, në përputhje me rrethanat, hyrjen dhe daljen e bitit të të dhënave në skaje të caktuara të sinjalit të sinkronizimit. Vendosja e të dhënave gjatë transmetimit dhe marrja e mostrave gjatë marrjes kryhen gjithmonë në skajet e kundërta të orës. Kjo është e nevojshme për t'u siguruar që të dhënat të mostrohen pasi të jenë vendosur në mënyrë të besueshme. Nëse marrim parasysh se skaji i parë në ciklin e transmetimit mund të jetë një skaj në rritje ose në rënie, atëherë ekzistojnë katër opsione të mundshme për logjikën e ndërfaqes SPI. Këto opsione quhen mënyra SPI dhe përshkruhen nga dy parametra:

· CPOL - niveli fillestar i sinjalit të sinkronizimit (nëse CPOL=0, atëherë linja e sinkronizimit para fillimit të ciklit të transmetimit dhe pas përfundimit të saj ka një nivel të ulët (d.m.th. buza e parë ngrihet, dhe e fundit po bie), përndryshe, nëse CPOL=1, - lartë (d.m.th. fronti i parë po bie, dhe i fundit po ngrihet));

· CPHA - faza e sinkronizimit; Ky parametër përcakton sekuencën në të cilën instalohen dhe merren të dhënat. Nëse CPHA=0, atëherë në skajin në rritje të ciklit të orës të dhënat do të mostrohen dhe më pas në skajin në rënie të dhënat do të vendosen. Nëse CPHA=1, atëherë instalimi i të dhënave do të kryhet në skajin në rritje në ciklin e sinkronizimit dhe kampionimi do të kryhet në skajin në rënie.

Informacioni mbi mënyrat SPI është paraqitur në figurat 7.7 dhe 7.8.

Çipat kryesore dhe skllav që funksionojnë në mënyra të ndryshme SPI janë të papajtueshme, prandaj, përpara se të zgjidhni çipat skllav, është e rëndësishme të sqaroni se cilat mënyra mbështeten nga masteri i autobusit. Modulet SPI të harduerit të integruar në mikrokontrollues, në shumicën e rasteve, mbështesin aftësinë për të zgjedhur çdo modalitet dhe, për rrjedhojë, çdo çip SPI skllav mund të lidhet me to (zbatohet vetëm për një opsion lidhjeje të pavarur). Për më tepër, protokolli SPI në cilindo nga mënyrat zbatohet lehtësisht në softuer.

Ndërfaqja RS-485

Ndërfaqja RS-485 (një emër tjetër është EIA/TIA-485) është një nga standardet më të zakonshme të shtresës së komunikimit fizik. Shtresa fizike është një kanal komunikimi dhe një metodë e transmetimit të sinjalit (shtresa 1 e modelit të ndërlidhjes së sistemeve të hapura OSI).

Një rrjet i ndërtuar në ndërfaqen RS-485 përbëhet nga transmetues të lidhur duke përdorur një çift të përdredhur - dy tela të përdredhur. Ndërfaqja RS-485 bazohet në parimin e transmetimit diferencial (të balancuar) të të dhënave. Thelbi i tij është të transmetojë një sinjal mbi dy tela. Për më tepër, një tel (me kusht A) mbart sinjalin origjinal dhe tjetri (me kusht B) mbart kopjen e tij të kundërt. Me fjalë të tjera, nëse ka një "1" në një tel, atëherë një "0" në tjetrin dhe anasjelltas. Kështu, ekziston gjithmonë një ndryshim potencial midis dy telave të një çifti të përdredhur: në "1" është pozitiv, në "0" është negativ (Figura 7.9).

Është ky ndryshim potencial që transmeton sinjalin. Kjo metodë transmetimi siguron imunitet të lartë ndaj ndërhyrjeve të modalitetit të zakonshëm. Ndërhyrja e modalitetit të përbashkët është një ndërhyrje që prek të dy telat e linjës në mënyrë të barabartë. Për shembull, një valë elektromagnetike që kalon nëpër një seksion të një linje komunikimi shkakton potencial në të dy telat. Nëse sinjali transmetohet nga potenciali në një tel në lidhje me të zakonshmen, si në RS-232, atëherë ndërhyrja në këtë tel mund të shtrembërojë sinjalin në lidhje me të përbashkët (tokën) që thith mirë ndërhyrjen. Përveç kësaj, diferenca e potencialit të tokës do të bjerë në rezistencën e një teli të gjatë të përbashkët - një burim shtesë shtrembërimi. Dhe me transmetimin diferencial, shtrembërimi nuk ndodh. Në fakt, nëse dy tela shtrihen afër njëri-tjetrit, dhe madje janë të ndërthurur, atëherë marrja në të dy telat është e njëjtë. Potenciali në të dy telat me ngarkesë të barabartë ndryshon në mënyrë të barabartë, ndërsa diferenca e potencialit informativ mbetet e pandryshuar.

Zbatimi i harduerit i ndërfaqes RS485.

Implementimi harduerik i ndërfaqes - çipat e marrësit me hyrje/dalje diferenciale (në linjë) dhe porta dixhitale (në portet UART të kontrolluesit). Ekzistojnë dy opsione për këtë ndërfaqe: RS-422 dhe RS-485.

RS-422 është një ndërfaqe e plotë dupleks. Marrja dhe transmetimi ndodhin mbi dy palë tela të veçanta. Mund të ketë vetëm një transmetues në çdo palë tela.

RS-485 është një ndërfaqe gjysmë dupleks. Marrja dhe transmetimi ndodhin mbi një palë tela me një ndarje kohore. Mund të ketë shumë transmetues në një rrjet, pasi ato mund të fiken në modalitetin e marrjes (Figura 7.10).

Shpjegimi i simboleve në Fig. 7.10

D (shofer) - transmetues;
R (marrës) - marrës;
DI (hyrja e shoferit) - hyrja dixhitale e transmetuesit;
RO (dalja e marrësit) - dalje dixhitale e marrësit;
DE (driver aktivizuar) - leje për të përdorur transmetuesin;
RE (marrësi i aktivizuar) - leje për të përdorur marrësin;
A - hyrje/dalje diferenciale direkte;
B - hyrje/dalje diferenciale inverse;
Y - dalje diferenciale direkte (RS-422);
Z - prodhimi diferencial invers (RS-422).

Le të hedhim një vështrim më të afërt në transmetuesin RS-485. Dalja dixhitale e marrësit (RO) është e lidhur me portën UART të marrësit (RX). Hyrja dixhitale e transmetuesit (DI) në portën e transmetuesit UART (TX). Meqenëse marrësi dhe transmetuesi janë të lidhur në anën diferenciale, transmetuesi duhet të fiket gjatë marrjes dhe marrësi duhet të fiket gjatë transmetimit. Për këtë qëllim, përdoren hyrjet e kontrollit - leja e marrësit (RE) dhe leja e transmetuesit (DE). Meqenëse hyrja RE është e kundërt, mund të lidhet me DE dhe të ndërrojë marrësin dhe transmetuesin me një sinjal nga çdo port i kontrolluesit. Në nivelin "0" - punë për pritje, në "1" - për transmetim (Fig. 7.11).

Marrësi, duke marrë diferencën potenciale (UAB) në hyrjet diferenciale (AB), i konverton ato në një sinjal dixhital në daljen RO. Ndjeshmëria e marrësit mund të jetë e ndryshme, por prodhuesit e çipave të transmetuesit shkruajnë në dokumentacion kufirin e garantuar të pragut për njohjen e sinjalit. Zakonisht këto pragje janë ±200 mV. Kjo do të thotë, kur UAB > +200 mV - marrësi zbulon "1" kur UAB< -200 мВ - приемник определяет "0". Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.

Të gjitha pajisjet janë të lidhura me një kabllo të çiftit të përdredhur në të njëjtën mënyrë: daljet e drejtpërdrejta (A) në një tel, daljet e përmbysura (B) në tjetrën.

Impedanca hyrëse e marrësit nga ana e linjës (RAB) është zakonisht 12 KΩ. Meqenëse fuqia e transmetuesit nuk është e pakufizuar, kjo krijon një kufi në numrin e marrësve të lidhur në linjë. Sipas specifikimit RS-485, duke marrë parasysh rezistorët përfundimtarë, transmetuesi mund të drejtojë deri në 32 marrës. Sidoqoftë, ka një numër mikroqarqesh me rezistencë të shtuar të hyrjes, gjë që ju lejon të lidhni dukshëm më shumë se 32 pajisje në linjë.

Shpejtësia maksimale e komunikimit sipas specifikimit RS-485 mund të arrijë 10 Mbaud/sek. Distanca maksimale është 1200 metra. Nëse është e nevojshme të organizoni komunikim në një distancë prej më shumë se 1200 metra ose të lidhni më shumë pajisje sesa lejon kapaciteti i ngarkesës së transmetuesit, përdoren përsëritës të veçantë.

Ndërfaqja I2C.

Kjo ndërfaqe u propozua nga Philips, e cila e përdori atë për të organizuar komunikimin midis çipave në televizorët e saj. I 2 C (një shkurtim për qarkun e integruar) është një autobus serial asinkron me dy drejtime. Fizikisht, autobusi I 2 C përbëhet nga dy linja sinjali, njëra prej të cilave (SCL) është menduar për transmetimin e një sinjali të orës dhe e dyta (SDA) për shkëmbimin e të dhënave. Për të kontrolluar linjat, përdoren fazat e daljes me një kolektor të hapur, kështu që linjat e autobusëve duhet të lidhen me një burim energjie +5 V përmes rezistorëve me rezistencë 1...10 kOhm, në varësi të gjatësisë fizike të linjave dhe shpejtësia e transferimit të të dhënave. Gjatësia e linjave lidhëse në modalitetin standard mund të arrijë 2 metra, shpejtësia e transferimit të të dhënave është 100 kbit/s.

Të gjithë abonentët e autobusëve ndahen në dy klasa - "Lider" dhe "Skllavë". Pajisja kryesore gjeneron një sinjal të orës (SCL). Ai mund të hyjë në mënyrë të pavarur në autobus dhe të adresojë çdo pajisje skllav për qëllimin e transmetimit ose marrjes së informacionit. Të gjitha pajisjet skllav "dëgjojnë" autobusin për të zbuluar adresën e tyre dhe, pasi e njohin atë, kryejnë operacionin e përshkruar. Për më tepër, i ashtuquajturi modaliteti "MultiMaster" është i mundur kur në autobus janë instaluar disa pajisje kryesore, të cilat ose ndajnë së bashku pajisje të përbashkëta skllav, ose në mënyrë alternative veprojnë si zotërues kur ata vetë iniciojnë shkëmbimin e informacionit, ose si skllevër kur ata janë duke pritur për qasje nga një pajisje tjetër kryesore. Modaliteti "MultiMaster" kërkon monitorim dhe njohje të vazhdueshme të konflikteve. Në këtë drejtim, kjo mënyrë është më e vështirë për t'u zbatuar (që do të thotë zbatimi i softuerit) dhe, si rezultat, përdoret më rrallë në produkte reale.

Në momentin fillestar të kohës - në modalitetin e gatishmërisë - të dy linjat SCL dhe SDA janë në një gjendje logjike (transistori i fazës së daljes së kolektorit të hapur është i mbyllur). Në modalitetin e transmetimit (Figura 7.12), biti i të dhënave SDA fiksohet nga skaji në rritje i SCL. Informacioni në linjën SDA ndryshohet kur linja SCL është në gjendje zero. Pajisja skllav mund të "mbajë" linjën SCL në gjendjen zero, për shembull, gjatë përpunimit të bajtit të ardhshëm të marrë, ndërsa pajisja kryesore duhet të presë derisa linja SCL të lirohet përpara se të vazhdojë të transmetojë informacion.

Për të sinkronizuar paketat e autobusit I 2 C, dallohen dy kushte - "START" dhe "STOP", duke kufizuar fillimin dhe fundin e paketës së informacionit (Figura 7.13). Për të koduar këto kushte, përdoret një ndryshim në gjendjen e linjës SDA me një gjendje të vetme të linjës SCL, e cila është e papranueshme gjatë transmetimit të të dhënave. Kushti "START" formohet kur një skaj zbritës shfaqet në vijën SDA, kur linja SCL është në një gjendje të vetme dhe anasjelltas, gjendja "STOP" formohet kur një skaj në rritje shfaqet në vijën SDA kur SCL. linja është në një gjendje të vetme.

Transmetimi i të dhënave fillon në skajin e parë në rritje në linjën SCL, e cila shënon pjesën më të rëndësishme të bajtit të parë të informacionit. Çdo bajt informacioni (8 bit) përmban 9 periudha të orës të linjës SCL. Në ciklin e nëntë, pajisja marrëse lëshon një konfirmim (ACK) - një skaj në rënie që tregon marrjen e të dhënave. Duhet të theksohet se çdo abonent i autobusit, si master ashtu edhe skllav, mund të jetë në kohë të ndryshme si transmetues ashtu edhe marrës dhe, në përputhje me modalitetin, kërkohet ose të marrë ose të lëshojë një sinjal ACK, mungesa e të cilit interpretohet. si gabim.

Për të nisur një operacion shkëmbimi të të dhënave, pajisja kryesore lëshon një kusht "START" në autobus. Kushti "START" pasohet nga një bajt me adresën e pajisjes skllav (Figura 7.14), e përbërë nga një adresë pajisjeje me shtatë bit (bitët 1...7) dhe një flamur operacioni leximi-shkrimi me një bit - " R/W” (bit 0). Biti R/W përcakton drejtimin e shkëmbimit, me 0 që do të thotë transferim i të dhënave nga master në slave (Figura 7.14a), dhe 1 që do të thotë lexim nga slave (Figura 7.14b). Të gjitha bitet në autobusin I 2 C transmetohen me rend nga lart në të ulët, domethënë, biti i 7-të transmetohet i pari, i 0-ti i fundit. Adresa mund të ndiqet nga një ose më shumë bajt informacioni (në drejtimin e specifikuar nga flamuri R/W), bitet e të cilave klockohen nga masteri në autobusin SCL.

Kur kryen një operacion leximi, hosti duhet të ACK bajtin e lexuar nëse dëshiron të lexojë bajtin tjetër dhe të mos lëshojë një ACK nëse është gati të përfundojë leximin e paketës (shih Figurën 7.14b).

Lejohet rifillimi i adresës së pajisjes skllav disa herë në një cikël transmetimi, domethënë transmetimi i një kushti të përsëritur "START" pa një kusht paraprak "STOP" (Figura 7.14c).

Është e nevojshme të theksohen disa veçori të çipave të memories që funksionojnë përmes ndërfaqes I 2 C dhe procedurat për shkëmbimin e të dhënave me ta. Së pari, memoria e të dhënave jo e paqëndrueshme e këtyre mikroqarqeve ndahet në faqe memorie, kështu që kur shkruhet një bajt, e gjithë faqja fillimisht kopjohet në RAM-in e brendshëm të mikroqarqeve, ku ndryshohet qeliza e dëshiruar. Pas kësaj, faqja e vjetër fshihet dhe në vend të saj shkruhet një e re. Një veçori tjetër është se katër bitët më të rëndësishëm të adresës skllav duhet të jenë gjithmonë të barabarta me 1010. Kjo kërkesë rregullohet nga vetë Philips.

Autobusi 1-Wire përdor vetëm një përcjellës për komunikim dhe energji. Mënyra e komunikimit është asinkron dhe gjysmë dupleks, i cili ndjek në mënyrë rigoroze modelin master-slave. Një ose më shumë pajisje skllav mund të lidhen me të njëjtin autobus në të njëjtën kohë. Vetëm një pajisje kryesore mund të lidhet me një autobus.

Gjendja boshe e autobusit korrespondon me një nivel të lartë, i cili gjenerohet nga një rezistencë tërheqëse. Vlera e rezistencës tërheqëse është dhënë në dokumentacionin për IC skllav. Të gjithë çipat e lidhur me autobusin duhet të jenë në gjendje të prodhojnë një nivel të ulët. Nëse dalja e mikrokontrolluesit nuk mbështet tre gjendje, atëherë është e nevojshme të sigurohet një drejtues që ka një kolektor të hapur ose dalje të hapur kullimi

Transmetimi i sinjalit mbi autobusin 1-Wire ndahet në slota kohore me kohëzgjatje 60 µs. Transmetohet vetëm një bit i të dhënave për çdo slot kohor. Pajisjet skllav lejohen të kenë dallime të konsiderueshme nga vonesat kohore të vlerësuara. Megjithatë, kjo kërkon një kohë më të saktë nga drejtuesi për të siguruar komunikim korrekt me vartësit që kanë baza të ndryshme kohore.

Sinjalet bazë të autobusit.

Masteri fillon çdo komunikim në nivelin e bitit. Kjo do të thotë që transmetimi i çdo biti, pavarësisht nga drejtimi, duhet të inicohet nga master. Kjo arrihet duke vendosur autobusin të ulët, i cili sinkronizon logjikën e të gjitha pajisjeve të tjera. Janë 5 komanda kryesore për komunikim nëpërmjet autobusit 1-Wire: “Write log. 1", "Shkruani regjistrin. 0", "Lexo", "Rivendos" dhe "Prania".

Sinjali "Shkruani regjistrin. 1"

Sinjali "Shkruani regjistrin. 1” është paraqitur në Fig. 7.15. Masteri vendos nivelin e ulët për 1...15 µs. Pas kësaj, ai liron autobusin për pjesën e mbetur të kohës.

Oriz. 7.15 – Sinjali “Shkruaj regjistrin. 1"

Sinjali "Shkruani regjistrin. 0"

Sinjali "Shkruani regjistrin. 0” është paraqitur në figurën 7.16. Masteri gjeneron një nivel të ulët për të paktën 60 μs, por jo më shumë se 120 μs.

Fig 7.16 – Sinjali “Write log. 0"

Sinjali i leximit

Sinjali "Lexo" është paraqitur në Fig. 7.17. Masteri vendos nivelin e ulët për 1...15 µs. Më pas, skllavi e mban autobusin poshtë nëse dëshiron të transmetojë një regjistër. 0. Nëse është e nevojshme të transferohet regjistri. 1, atëherë thjesht lëshon linjën. Skanimi i autobusit duhet të kryhet brenda 15 µs nga momenti kur autobusi shkon poshtë. Kur shikohet nga ana e masterit, sinjali "Lexo" është, në thelb, një sinjal "Write log". 1". Gjendja aktuale e brendshme e skllav do të përcaktohet nga sinjali "Record log". 1" ose "Leximi".

Figura 7.17 – Sinjali “Lexo”.

Sinjali i rivendosjes/prezencës

Sinjalet "Rivendosja" dhe "Prania" janë paraqitur në Figurën 7.18. Ju lutemi vini re se intervalet kohore të pulsit janë të ndryshme. Masteri tërhiqet poshtë për 8 hapësira kohore (480 µs) dhe më pas lëshon autobusin. Kjo periudhë e gjatë e gjendjes së ulët quhet sinjal "Reset".

Nëse një skllav është i pranishëm në autobus, ai duhet, brenda 60 µs pasi masteri të lëshojë autobusin, të vendosë një nivel të ulët për të paktën 60 µs. Kjo përgjigje quhet "Prania". Nëse një sinjal i tillë nuk zbulohet, atëherë masteri duhet të supozojë se nuk ka pajisje të lidhura me autobusin dhe nuk është i mundur komunikimi i mëtejshëm.

USB (Universal serial bus) u zhvillua për lidhjen e shpejtë të pajisjeve të jashtme me një kompjuter personal dhe më pas gjetjen dhe instalimin e softuerit të nevojshëm. Pajisjet me fuqi të ulët mundësohen drejtpërdrejt përmes ndërfaqes.

Standardi USB nënkupton praninë e vetëm një pajisje Master (Host) në rrjet. Për më tepër, standardi mbështet deri në 127 pajisje skllav në rrjet. Për të dalluar midis pajisjeve master dhe slave, janë zhvilluar lloje të ndryshme lidhësish (Figura 7.19): Lloji A për master dhe Lloji B për slave. Pranohet që tensioni 5V është i pranishëm vetëm në lidhësin e tipit A, i cili është lidhësi kryesor. Pjesa tjetër e pajisjeve mundësohet drejtpërdrejt nga ajo.

Standardi USB përdor 4 tela të mbrojtur, dy prej të cilëve transmetojnë energji (+5v & GND) (Figura 7.19 dhe Tabela 7.2). Dy të tjerët përfaqësojnë sinjale të të dhënave diferenciale të çifteve të përdredhur. Skema e kodimit e përdorur NRZI(Jo Kthim në Zero Invert) për transmetimin e të dhënave me një fushë sinkronizimi për të sinkronizuar orët kryesore dhe slave.

Standardi USB 2.0 prezantoi standardin On-The-Go (OTG), i cili prezantoi Protokollin e Negocimit të Host, i cili lejon dy pajisje USB të bien dakord se kush do të veprojë si master. Kjo është menduar dhe e kufizuar në lidhje të vetme pikë-për-pikë, të tilla si një telefon celular me një kompjuter personal.

USB mbështet lidhjen "hot" (plug'n'play) me drejtuesit e ngarkuar dhe të shkarkuar në mënyrë dinamike. Përdoruesi thjesht fut pajisjen në prizë, duke e lidhur atë me autobusin. Pritësi zbulon lidhjen, anketon pajisjen e futur rishtazi dhe ngarkon drejtuesin e duhur, duke treguar momentin e ngarkimit me një orë rëre në ekran (nëse drejtuesi i pajisjes USB është tashmë i instaluar në sistem). Përdoruesi përfundimtar nuk kujdeset për përfundimin ose IRQ(ndërprerjet) dhe adresat e porteve, as për rindezjen e kompjuterit (nuk kërkohet rindezje). Kur përdoruesi mbaron me pajisjen USB, ai thjesht e heq atë (ose shkëput kabllon), hosti do të zbulojë mungesën e pajisjes dhe do të shkarkojë automatikisht drejtuesin.

Versioni SB 1.1 mbështet dy shpejtësi - modaliteti me shpejtësi të plotë me një shpejtësi prej 12 Mbit/s dhe modaliteti me shpejtësi të ulët me një shpejtësi prej 1.5 Mbit/s. Modaliteti 1.5 Mbit/s është më i ngadalshëm dhe më pak i ndjeshëm ndaj EMI (ndërhyrjes), gjë që redukton koston e rruazave të ferritit dhe redukton kërkesat për cilësinë e komponentit.

Kablloja e autobusit me shpejtësi të plotë është një kabllo me çifte të përdredhura, e mbrojtur nga një mburojë dhe mund të përdoret gjithashtu për funksionim me shpejtësi të ulët. Një kabllo për funksionim vetëm me shpejtësi minimale (për shembull, për të lidhur një mi) mund të jetë çdo dhe e pambrojtur.

Standardi USB 2.0 prezanton një modalitet me shpejtësi të lartë me një shpejtësi transferimi të të dhënave prej 480 Mbit/s.

Transferimi i të dhënave.

Të gjitha transferimet e të dhënave përmes ndërfaqes inicohen nga hosti. Të dhënat transmetohen në formën e paketave. Ndërfaqja USB përdor disa lloje paketash:

A) firmos paketën (paketë simbolike) përshkruan llojin dhe drejtimin e transferimit të të dhënave, adresën e pajisjes dhe numrin serial të pikës fundore (CT është pjesa e adresueshme e pajisjes USB); Ekzistojnë disa lloje të paketave të veçorive: , JASHTË, SOF, SETUP;

B) paketën e të dhënave (paketa e të dhënave) përmban të dhënat e transmetuara;

B) paketën e miratimit (pako për shtrëngim duarsh) ka për qëllim të raportojë rezultatet e transferimit të të dhënave; Ekzistojnë disa lloje të paketave koordinuese: ACK, N.A.K., STALL.

Transferimi i të dhënave përmes USB kryhet si më poshtë:

Paketa e parë, e ashtuquajtura token, gjenerohet nga pajisja kryesore për të përshkruar llojin e të dhënave që transferohen, operacionin e transferimit (lexim ose shkrim), adresën e pajisjes dhe pikën përfundimtare. Tjetra që transmetohet zakonisht është një paketë të dhënash që mban informacion të dobishëm, e ndjekur nga një paketë shtrëngimi duarsh që tregon se të dhënat ose token u morën me sukses, ose pika përfundimtare është bllokuar ose e padisponueshme për të pranuar të dhëna.

Pikat përfundimtare në standardin USB janë burimet dhe grumbullimet e të dhënave. Të gjitha pajisjet duhet të mbështesin pikën përfundimtare 0. Kjo është pika përfundimtare që pranon të gjitha kërkesat e kontrollit dhe statusit gjatë numërimit (një kërkesë e trajtuar për të përcaktuar llojin e pajisjes së bashkangjitur) dhe për aq kohë sa pajisja mbetet funksionale në autobus.

Pikat fundore të numëruara nga 1 përdoren për të transmetuar informacionin e përdoruesit. Le të shohim disa shembuj.

Drejtuesi i pajisjes transmeton në pikën përfundimtare të pajisjes kryesore EP1. Sepse Kjo pajisje është master, pastaj të dhënat shkojnë në tampon OUT EP1. Në këtë rast, dërgohet një shenjë OUT, që tregon se të dhënat janë gati për t'u dërguar. Pasi të ketë marrë këtë shenjë, pajisja skllav mund të lexojë të dhëna nga buferi OUT.

Nëse pajisja skllave duhet të transferojë të dhëna te masteri, ajo e vendos atë në buferin IN. Ky buffer do të mbajë të dhëna derisa masteri të dërgojë një token IN duke kërkuar të dhëna nga pika përfundimtare. Të gjithë buferët e pikës fundore emërtohen në lidhje me masterin, d.m.th. Buferi i daljes i pajisjes slave quhet IN sepse është buferi i hyrjes për pajisjen kryesore.

Transferimi i të dhënave nga një pikë fundore në tjetrën bëhet përmes rrymave. Rrjedha - Një lidhje logjike midis një hosti dhe një (pikash) fundore.

Rrjedhat kanë gjithashtu një sërë parametrash të tillë si lloji i transmetimit (Kontrolli, Bulk, Iso ose Ndërprerja), drejtimi i rrjedhës së të dhënave dhe madhësia maksimale e paketave/buferit.

Për shembull, transmetimi i paracaktuar është një transmetim dydrejtimësh i përbërë nga pika fundore IN 0 dhe pika fundore OUT 0 me kontroll të llojit të transferimit.

USB përcakton dy lloje tubash

A) Tubat e rrjedhës nuk keni një format të paracaktuar USB, kështu që mund të dërgoni çdo lloj të dhënash përmes tubit të transmetimit dhe të rikuperoni të dhënat në skajin tjetër. Rrjedhat e të dhënave janë të njëpasnjëshme dhe kanë një drejtim të paracaktuar - IN ose OUT. Tubat e rrjedhës mbështesin llojet e transfertave me shumicë, izokrone dhe me ndërprerje. Tubat e rrjedhës mund të kontrollohen ose nga pritësi ose nga pajisja.

B) Tubat e mesazheve kanë një format të paracaktuar USB. Ato janë të kontrolluara nga hosti, të inicuara nga një kërkesë e dërguar nga hosti. Të dhënat dërgohen në drejtimin e dëshiruar të specifikuar në kërkesë. Kështu, tubat e mesazheve lejojnë që të dhënat të transferohen në të dy drejtimet, por mbështesin vetëm transferimet e kontrollit.

Standardi USB përshkruan katër lloje të transferimit të të dhënave:

A) Kontrolli i përcjelljes (transferimi i kontrollit) përdoret për konfigurimin e pajisjes, si dhe për qëllime të tjera specifike për pajisjen.

B) Streaming (transferim me shumicë) përdoret për të transmetuar një sasi relativisht të madhe informacioni.

B) Ndërprisni përcjelljen (transferimi i ndërprerë) përdoret për të transmetuar një sasi relativisht të vogël informacioni, për të cilin transmetimi i tij në kohë është i rëndësishëm. Ka një kohëzgjatje të kufizuar dhe prioritet më të lartë në krahasim me llojet e tjera të transfertave.

D) Përcjellja isokrone (transferim izokron) quhet gjithashtu transmetim në kohë reale. Informacioni i transmetuar në një transferim të tillë kërkon një shkallë në kohë reale gjatë krijimit, transmetimit dhe marrjes së tij.

Transmetimet e transmetimit karakterizohet nga transferimi i garantuar i të dhënave pa gabime midis hostit dhe funksionit duke zbuluar gabime gjatë transmetimit dhe rikërkimin e informacionit. Kur hosti bëhet gati për të marrë të dhëna nga një funksion, ai dërgon një paketë flamuri te funksioni -qese plastike. Në përgjigje të kësaj, funksioni në fazën e transferimit të të dhënave transmeton një paketë të dhënash te hosti ose, nëse ai

Sot fillojmë njohjen tonë me gomën SPI (Ndërfaqja periferike serike).

Ky autobus përdoret shumë gjerësisht në elektronikë. Është shumë i përshtatshëm, duke qenë sinkron dhe i plotë dupleks, prandaj, përdoret në shumë qarqe për komunikim midis pajisjeve të ndryshme dixhitale - sensorë, kontrollues, drejtues dhe pajisje të tjera.

Një faktor tjetër i rëndësishëm në nevojën për njohjen tonë me të është se ky autobus është i organizuar në harduer në kontrollues. AVR.

Për më tepër, nëse duam apo jo, ne kemi komunikuar me ndërfaqen SPI për një kohë të gjatë, sapo filluam të ndezim kontrolluesin tonë për herë të parë, pasi ai është ndezur përmes kësaj ndërfaqe.

Prandaj, do të doja ta njihja më mirë këtë gomë.

Le të hapim dokumentacionin teknik për kontrolluesin Atmega8, të hapim faqen ku shfaqet pika e këtij kontrolluesi dhe të shohim që nga kunjat 16 deri në 19 ka kunja të autobusit SPI

Tani pak më shumë rreth këtyre gjetjeve

SS (zgjedhja e çipit)— kjo është pjesa e zgjedhjes së pajisjes. Nëse pajisja skllav në këtë kunj është vendosur në një nivel të ulët, atëherë kjo pajisje do të përgjigjet dhe do të shkëmbejë informacion përmes autobusit SPI nëse është i lartë, nuk do të përgjigjet.

MOSI (hyrja skllav i daljes kryesore)- Kjo është pika e daljes së pajisjes kryesore dhe hyrja e pajisjes slave.

MISO (dalja kryesore e skllevërve të hyrjes)- përkundrazi, prodhimi i skllavit, hyrja e zotërisë.

SCK- këmbën e sinkronizimit. Të gjitha pajisjet që marrin pjesë në shkëmbimin e informacionit në këtë autobus furnizohen me impulse të orës në një frekuencë të caktuar.

Këtu është një diagram i zbatimit të autobusit SPI në kontrolluesin Atmega8

Si çdo autobus, ka një numër regjistrash që ruajnë informacione të caktuara.

Ne jemi të interesuar për SHIFT REGJISTRI, informacioni shkëmbehet përmes tij. Sapo të ketë një skaj të caktuar në pinin e sinkronizimit, zbritës ose ngjitës, në varësi të cilësimeve, këta regjistra të pajisjeve slave dhe master do të shkëmbejnë informacion, dhe jo të gjithë informacionin, por vetëm një bit. Këta regjistra do të zhvendosen në të majtë dhe bitet më të rëndësishme nga secili regjistër do të shkojnë në bitet më pak të rëndësishme të të njëjtit regjistër të pajisjes shoqëruese. Kjo do të thotë, skllavi do të transmetojë bitin e tij më të rëndësishëm përmes pinit MOSI te lideri, i cili do ta shkruajë atë në bitin e zbrazur të rendit të ulët për shkak të zhvendosjes majtas, dhe skllavi do ta transferojë bitin e tij të zhvendosur të rendit të lartë përmes MISO. pin në bitin e rendit të ulët të liderit. Kështu shkon shkëmbimi, domethënë në 8 cikle të plota të orës ata do të shkëmbejnë plotësisht bajt

Sapo të transmetohen të 8 bitet e një bajt informacioni, një regjistër i caktuar do të na sinjalizojë se ky proces ka përfunduar. Ose më mirë, një pjesë e caktuar e një regjistri të caktuar.

Gjithashtu në bllok diagramin shohim një ndarës, hyrja e të cilit merr impulse të orës dhe më pas ndahet me një vlerë të caktuar, ato dërgohen përmes një zinxhiri në këmbën SCK dhe prej andej furnizohen me pajisjen skllav në të njëjtën këmbë. Kjo siguron funksionimin e sinkronizuar të pajisjeve. Frekuenca e orës zgjidhet nga ajo më e ulëta e mbështetur nga të gjitha pajisjet që marrin pjesë në shkëmbim.

Unë them shumës sepse mund të ketë më shumë se dy pajisje në një qark të caktuar. Si sigurohet kjo, me kusht që pajisjet të mos kenë asnjë adresë, tani do t'ju tregoj.

Ka disa mënyra për të shkëmbyer informacion midis disa pajisjeve, domethënë, kur ka disa skllav për një pajisje kryesore. Ne do të shohim dy më të zakonshmet prej tyre.

Metoda e parë është radiale (kliko mbi foto për ta zmadhuar imazhin)

Këtu masteri drejton të dhënat në një pajisje specifike, duke ndezur logjikën 0 në pinin SS. Me këtë metodë, është e mundur të zgjidhni vetëm një pajisje.

Ekziston një metodë tjetër interesante - unazë ose kaskadë (kliko mbi foto për të zmadhuar imazhin)

Këtu shohim se këmbët e përzgjedhjes janë të gjitha paralele dhe shkëmbimi shkon në një rreth. Kështu, shpejtësia zvogëlohet për shkak të faktit se rrethi i transmetimit rritet, por këmbët e portit ruhen.

Të gjitha këto do t'i studiojmë më në detaje në mësimet e ardhshme, kur të përdorim pajisje të caktuara në projektet tona.

Epo, duket me qarkun e transmetimit të të dhënave përmes autobusit SPI e kuptuam.

Tani le të kuptojmë se si ta kontrollojmë këtë proces në nivelin e regjistrave harduerikë të kontrolluesit AVR.

Këta regjistra i shohim në bllok diagramin e mësipërm në faqe.

Atmega8 ka regjistrat e mëposhtëm për servisimin e autobusit SPI.

SPDR (Regjistri i të Dhënave SPI)- regjistri i të dhënave, në bllok diagramin është DATA BUFFER. Ne do të fusim një bajt në këtë regjistër për transmetimin e tij të mëvonshëm në pajisjen skllav, dhe prej tij do të lexojmë bajtin e informacionit që erdhi nga pajisja skllav. Gjithashtu nuk është e nevojshme që kontrolluesi ynë të jetë pajisja kryesore. Më pas, ne do të mbledhim një qark me dy kontrollues, njëri prej të cilëve do të jetë një skllav. Pra, është në këtë regjistër që do të vendoset bajt për dërgimin dhe marrjen.

SPCR (Regjistri i Kontrollit të SPI)- regjistri i kontrollit

Ky regjistër përfshin bitet e mëposhtme:

SPIE (SPI Interrupt Aktivizo)- pak që mundëson ndërprerje.

SPE (SPI Aktivizo)— pak që mundëson autobusin SPI.

DORD (Renditja e të dhënave)- një bit që cakton rendin në të cilin bitet dërgohen nëse është vendosur në 1, atëherë së pari dërgohet biti më pak i rëndësishëm, nëse vendoset në 0, dërgohet biti më i rëndësishëm.

MSTR (Zgjidhja kryesore/skllav)- një bit që përcakton një pajisje si master ose skllav. Kur ky bit vendoset në 1, pajisja do të jetë master.

CPOL (polariteti i orës)— polariteti i sinkronizimit, përcakton se në cilën skaj të pulsit sinkronizues do të inicohet modaliteti i gatishmërisë

Nëse ky bit është 1, atëherë do të kemi një modalitet gatishmërie me një skaj në ngjitje, dhe nëse është 0, atëherë me një skaj zbritës.

CPHA (Faza e orës)- pak përgjegjës për fazën e orës, domethënë në cilën skaj do të transmetohet biti.

Le të shohim diagramet e transferimit të të dhënave në varësi të instalimit të CPOL dhe CPHA

Kjo është një varësi kaq interesante. Ndonjëherë ne ndonjëherë shohim në karakteristikat teknike të një pajisjeje që ajo, për shembull, mund të funksionojë në modalitetin SPI 0:0 dhe SPI 1:1, dhe kjo është pikërisht ajo që ka të bëjë me vendosjen e këtyre biteve.

SPR1, SPR0 (Zgjidhja e shkallës së orës SPI)- këto janë bitet përgjegjëse për vlerën e ndarësit të frekuencës së sinkronizimit që punojnë së bashku me bitin SPI2X gjendet në regjistrin e gjendjes. Është gjithashtu një kontroll, pasi tetë bit në regjistrin e kontrollit nuk ishin të mjaftueshëm për të gjitha cilësimet, dhe ka shumë të lira në regjistrin e statusit.

SPSR (Regjistri i Statusit të SPI)- regjistri i statusit

SPI2X (Bit me shpejtësi të dyfishtë SPI)- një bit që dyfishon shpejtësinë, duke punuar në lidhje me bitet SPR1 dhe SPR0 të regjistrit të kontrollit.

Le të shohim varësinë e frekuencës nga këto tre bit

SPIF (Flamuri i ndërprerjes SPI)— Flamuri i ndërprerjes. Ne presim që ky bit të vendoset në një. kur marrim një bajt. Sapo bajt nga një pajisje tjetër të shfaqet plotësisht në buferin tonë, ky flamur do të vendoset. Ky flamur funksionon vetëm nëse biti që mundëson ndërprerjet është vendosur, si dhe janë aktivizuar ndërprerjet globale.

WCOL (Shkruani flamurin e përplasjes)— Flamuri i konfliktit ose përplasjes do të vendoset nëse ka një konflikt bit gjatë transferimit të të dhënave, nëse gjatë transferimit të të dhënave tentohet të shkruhet në regjistrin e të dhënave.

Epo, tani mund të themi se jemi njohur pak me ndërfaqen SPI.

Shikoni VIDEO TUTORIAL(kliko mbi foto)

Shikime postimi: 6294

Udhëzimet

SPI- Ndërfaqja periferike serike ose "Ndërfaqja periferike serike"është një protokoll transmetimi sinkron për ndërlidhjen e një pajisjeje kryesore me pajisjet periferike (Slave). Pajisja kryesore është shpesh . Komunikimi ndërmjet pajisjeve ndodh me katër tela, kjo është arsyeja pse SPI nganjëherë quhet një "ndërfaqe me katër tela". Këto janë gomat:
MOSI (Master Out Slave In)- Linja e transmetimit të të dhënave nga pajisjet master në slave;
MISO (Master In Slave Out)- linja e transmetimit nga slave në pajisjen kryesore;
SCLK (Ora serike)- pulset e orës së sinkronizimit të krijuara nga pajisja kryesore;
SS (Zgjedhja e skllevërve)- linja e përzgjedhjes së pajisjes skllav; kur linja është "0", pajisja skllav "e kupton" se tani është duke u adresuar.
Ekzistojnë katër mënyra të transferimit të të dhënave (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), të përcaktuara nga kombinimi i polaritetit të pulseve të orës (ne punojmë në nivelin e LARTË ose të ulët), Polariteti i orës, CPOL, dhe faza e pulseve të orës (sinkronizimi në skajin në rritje ose në rënie të pulsit të orës), Faza e orës, CPHA.
Figura tregon dy opsione për lidhjen e pajisjeve përmes protokollit SPI: të pavarur dhe kaskadë. Kur lidhet në mënyrë të pavarur me autobusin SPI, pajisja kryesore akseson secilën pajisje skllav individualisht. Në rastin e kaskadës, pajisjet aktivizohen një nga një, në një kaskadë.

Në Arduino, autobusët e ndërfaqes SPI janë të vendosura në porte specifike. Çdo bord ka caktimin e vet të pinit. Për lehtësi, kunjat dublikohen dhe vendosen gjithashtu në një lidhës të veçantë ICSP (në programimin serial të qarkut, një pajisje e përfshirë në një qark duke përdorur një protokoll serik). Ju lutemi vini re se lidhësi ICSP nuk ka një kunj përzgjedhjeje skllav - SS, sepse supozohet se Arduino do të përdoret si një pajisje kryesore në rrjet. Por nëse është e nevojshme, mund të caktoni çdo pin Arduino si SS.
Figura tregon korrespondencën standarde të kunjave me autobusët SPI për Arduino UNO dhe Nano.

Një speciale është shkruar për Arduino që zbaton protokollin SPI. Ai lidhet kështu: në fillim të programit shtojmë #përfshi SPI.h
Për të filluar përdorimin e protokollit SPI, duhet të vendosni cilësimet dhe më pas të inicializoni protokollin duke përdorur procedurën SPI.beginTransaction(). Ju mund ta bëni këtë me një udhëzim: SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0)).
Kjo do të thotë që ne inicializojmë protokollin SPI në një frekuencë prej 14 MHz, transmetimi i të dhënave ndodh duke filluar me MSB (biti më domethënës), në modalitetin "0".
Pas inicializimit, zgjidhni pajisjen skllav duke lëvizur pinin përkatës SS në gjendjen LOW.
Më pas i transferojmë të dhënat në pajisjen skllav duke përdorur komandën SPI.transfer().
Pas transmetimit, kthejeni SS në gjendjen LARTË.
Puna me protokollin përfundon me komandën SPI.endTransaction(). Këshillohet që të minimizoni kohën e transferimit midis udhëzimeve SPI.beginTransaction() dhe SPI.endTransaction() për të shmangur problemet nëse një pajisje tjetër përpiqet të fillojë një transferim të dhënash duke përdorur cilësime të ndryshme.

Le të shqyrtojmë aplikimin praktik të ndërfaqes SPI. Ne do të ndezim LED-të duke kontrolluar regjistrin e ndërrimit 8-bit përmes autobusit SPI. Le të lidhim regjistrin 74HC595 me Arduino. Ne do të lidhim një LED në secilën nga 8 daljet (përmes një rezistence kufizuese). Diagrami është paraqitur në figurë.

Le të shkruajmë një skicë si kjo.
Së pari, le të lidhim bibliotekën SPI dhe të inicializojmë ndërfaqen SPI. Le të përcaktojmë pinin 8 si pinin e përzgjedhjes së pajisjes skllav. Le të pastrojmë regjistrin e zhvendosjes duke i dërguar vlerën "0". Inicializoni portën serike.
Për të ndezur një LED specifik duke përdorur një regjistër zhvendosjeje, duhet të aplikoni një numër 8-bit në hyrjen e tij. Për shembull, në mënyrë që LED i parë të ndizet, ne furnizojmë numrin binar 00000001, për të dytin - 00000010, për të tretën - 00000100, etj. Këta numra binarë, kur shndërrohen në sistemin e numrave dhjetorë, formojnë sekuencën e mëposhtme: 1, 2, 4, 8, 16, 32, 64, 128 dhe janë fuqi nga 0 në 7.
Prandaj, në ciklin loop() ne rillogaritim nga 0 në 7 bazuar në numrin e funksionit LED fuqi (bazë, gradë) Ngre 2 në fuqinë e numëruesit të lakut. Mikrokontrolluesit nuk punojnë shumë saktë me numra të tipit "double", kështu që ne përdorim funksionin round() për të kthyer rezultatin në një numër të plotë. Dhe ne transferojmë numrin që rezulton në regjistrin e ndërrimit. Për qartësi, monitori i portës serike shfaq vlerat e marra gjatë këtij operacioni: njëri kalon nëpër shifra - LED-et ndizen në valë.


Mikrokontrolluesit AVR përfshijnë module që zbatojnë ndërfaqe standarde. Këto module përdoren për të komunikuar me pajisje të ndryshme periferike si sensorë dixhitalë, çipa memorie, DAC, ADC, mikrokontrollues të tjerë etj. Në këtë artikull, duke përdorur si shembull mikrokontrolluesin atmega16, do të kuptojmë se si të punojmë me një modul të ndërfaqes serike periferike ose një modul SPI (ndërfaqe periferike serike).

Prezantimi

SPI është një autobus sinkron me katër tela i krijuar për shkëmbimin e të dhënave serike midis çipave. Ndërfaqja u zhvillua nga Motorola, por aktualisht përdoret nga të gjithë prodhuesit. Kjo ndërfaqe dallohet nga lehtësia e përdorimit dhe zbatimit, shpejtësia e lartë e shkëmbimit dhe diapazoni i shkurtër.
Gjatë çdo shkëmbimi të të dhënave nëpërmjet SPI, njëra nga pajisjet është Master dhe tjetra është Slave. Zakonisht (por jo gjithmonë) mikrokontrolluesi vepron si master. Masteri e kalon pajisjen periferike në gjendjen aktive dhe gjeneron sinjalin e orës dhe të dhënat. Si përgjigje, pajisja skllav i transmeton të dhënat e saj masterit. Transferimi i të dhënave në të dy drejtimet ndodh në mënyrë sinkrone me sinjalin e orës.
Fizikisht, SPI zbatohet bazuar në një regjistër ndërrimi, i cili kryen funksionet e transmetuesit dhe të marrësit.
Parimi i shkëmbimit të të dhënave nëpërmjet SPI është ilustruar në fotot e mëposhtme.

Sinjalet e përdorura nga kjo ndërfaqe kanë këto qëllime:

MOSI- Hyrja kryesore / skllav. Hyrja kryesore / skllav. Shërben për të transferuar të dhëna nga master tek slave.
MISO
– Hyrja kryesore / Dalja skllav. Hyrja kryesore/dalja skllav. Shërben për të transferuar të dhëna nga një pajisje skllav në një pajisje master.
SLK- Ora serike. Sinjali i sinkronizimit. Shërben për të transmetuar një sinjal të orës në të gjitha pajisjet skllav.
SS- Zgjedhja e skllevërve. Zgjedhja e skllevërve. Përdoret për të zgjedhur një pajisje skllav.

Prodhuesit e çipave shpesh përdorin emra të tjerë për këto sinjale. Opsionet alternative mund të jenë:

MOSI– BËJ, SDO, DOUT.
MISO– DI, SDI, DIN.
SCK– CLK, SCLK.
SS– CS, SYNC.

Diagramet e lidhjes SPI

Një diagram tipik për lidhjen e dy pajisjeve përmes SPI duket kështu.

Është gjithashtu e mundur të lidhni disa pajisje skllav me një pajisje kryesore. Sidoqoftë, në çdo kohë, shkëmbimi mund të ndodhë vetëm me njërën prej tyre, pjesa tjetër duhet të jetë në gjendje joaktive.

Përjashtim bën skema e lidhjes kaskadë nëpërmjet SPI. Me këtë lidhje, regjistrat e zhvendosjes së pajisjes formojnë një regjistër të madh dhe numri i linjave SPI mbetet i barabartë me 4. Vërtetë, jo të gjitha mikroqarqet mbështesin një lidhje të tillë.

Një version i shkurtuar i diagramit të lidhjes është gjithashtu i mundur kur linja MOSI ose MISO nuk përdoret. Kjo do të thotë, transferimi i të dhënave kryhet vetëm në një drejtim. Qarqe të tilla, për shembull, përdoren kur lidhni çipat e jashtëm DAC dhe ADC me mikrokontrolluesin.

Protokolli i komunikimit SPI

Protokolli i shkëmbimit SPI është i ngjashëm me logjikën e regjistrit të zhvendosjes dhe përbëhet nga dalje/hyrje sekuenciale bit-pas-bit të të dhënave në skaje të caktuara të sinjalit të orës. Vendosja e të dhënave dhe marrja e mostrave kryhen në skajet e kundërta të sinjalit të orës.
Specifikimi SPI ofron 4 mënyra të transmetimit të të dhënave, të cilat ndryshojnë në marrëdhënien midis fazës dhe polaritetit të sinjalit të orës dhe të dhënave të transmetuara.
Këto mënyra përshkruhen nga dy parametra:

CPOL- polariteti i orës. Polariteti i orës - përcakton nivelin fillestar të sinjalit të orës
CPHA– faza e orës. Faza e orës - përcakton sekuencën e vendosjes dhe marrjes së të dhënave.

Shifrat e mëposhtme ilustrojnë të katër mënyrat e komunikimit SPI.

Modaliteti SPI 0: CPOL = 0, CPHA=0. Sinjali i orës fillon në nivelin logjik zero. Mbyllja e të dhënave kryhet në një skaj në rritje. Ndryshimet e të dhënave ndodhin në një skaj në rënie. Momentet e mbylljes së të dhënave janë paraqitur në figurat me shigjeta.

Modaliteti SPI 1: CPOL = 0, CPHA=1. Sinjali i orës fillon në nivelin logjik zero. Ndryshimet e të dhënave ndodhin në një avantazh në rritje. Mbyllja e të dhënave kryhet në një skaj në rënie.

Modaliteti SPI 2: CPOL = 1, CPHA = 0. Sinjali i orës fillon në një nivel logjik. Mbyllja e të dhënave kryhet në një skaj në rënie. Ndryshimet e të dhënave kryhen në skajin në rritje të sinjalit të orës.

Modaliteti SPI 3: CPOL = 1, CPHA=1. Sinjali i orës fillon në një nivel logjik. Ndryshimet e të dhënave kryhen në skajin në rënie të sinjalit të orës. Mbyllja e të dhënave kryhet në një skaj në rritje.

Mikrokontrolluesit modernë mbështesin të katër mënyrat e funksionimit SPI.
Vlen të përmendet se transmetimi i të dhënave përmes SPI mund të ndodhë jo vetëm me bitin më të rëndësishëm përpara, por edhe me atë më pak të rëndësishëm. Dhe numri i bajteve të transmetuara gjatë kohës së mbajtjes së sinjalit të përzgjedhjes (SS) nuk është i kufizuar në asnjë mënyrë dhe përcaktohet nga specifikimi i pajisjes skllav të përdorur. Specifikimi për pajisjen skllav tregon gjithashtu mënyrat e funksionimit të mbështetur të SPI, frekuencën maksimale të orës dhe përmbajtjen e të dhënave të transmetuara ose të marra.