ELEKTRONIKA MA

piackepes

A 32 bites mikrovezérlőkben a nagy számítás igényű feladatok ellátása miatt a Microchip egy új processzormagot alkalmaz az előző 8 és 16 bites mikrovezérlő családoknál jól bevált perifériák megtartása mellett. A PIC32 mikrovezérlő, melynek felépítését a 1. ábrán láthatjuk, az MIPS Technologies cég M4K típusú kis fogyasztású RISC processzormagját használja. (A MIPS az angol Microprocessor without Interlocked Pipeline Stages rövidítése.)

01 felepites

1. ábra. PIC32MX mikrovezérlő felépítése.
(Forrás: Mirochip: PIC32MX5XX/6XX/7XX Data sheet)

Az M4K processzormag Harvard architektúrájú, a különálló adat és utasításbusz egy Bus Matrix egységhez csatlakozik. A Bus Matrix egy kapcsolómátrix, mely pont-pont kapcsolaton keresztül kapcsolja össze az egyes modulokat. Ez a nagysebességű kapcsoló a CPU frekvenciájával azonos sebességen üzemel (SYSCLK frekvencia). A Bus Matrix-ot a Bus Master egységek vezérlik, melyek a CPU, USB, CAN, DMA, ICD modulokkal működnek együtt és a többi modul irányába elvégzik az írási vagy olvasási műveleteket. Amikor egy Bus Master elindít egy átvitelt, a Bus Matrix pont-pont kapcsolatot alakít ki az átvitelben résztvevő két modul között. Az átvitel ideje alatt egy másik Bus Master is indíthat másik két modul között.

A kisebb sebességgel működő perifériák, mind például az UART, I2C, TIMER, ADC, a periféria buszra kapcsolódnak. A periféria buszt és a Bus Matrixot egy periféria híd kapcsolja össze. A periféria busz órajele a PBCLK, melynek értéke megegyezhet a SYSCLK frekvenciával, ekkor az átvitel egy órajel ciklus alatt végbemegy. A SYSCLK és PBCLK aránya például 1:4, akkor az átvitelhez 4 órajel ciklusra van szükség.

A mikrovezérlő 128 bites flash memóriával rendelkezik, ami azt jelenti, hogy egyszerre négy 32 bites utasítás olvasására képes. A memória és a CPU közti átvitelt segíti egy Prefetch modul, mely lehívja a memóriából a következő négy utasítást és elhelyezi a CPU cache memóriájába. [12]

A CPU utasításkészlete a kibővített MIPS32 Release, mely 32 bites utasításokat hajt végre, de képes 16 bites utasításkészlet használatára is, mely a MIPS16e utasításkészlet. A processzor három különböző utasítástípust használ, melyek a konstanst használó utasítások, az ugró utasítások és a regisztereket használó utasítások.

A leggyakrabban az adatmemória regisztereivel történik a műveletek végrehajtása. Ezek az utasítások háromoperandusú utasítások, melyből kettő a forrás, egy a céloperandus. A műveletek operandusait egy 32 regiszterből álló tömb tartalmazza, a művelet ezek között a regiszterek között zajlik.

A konstanst használó utasítások egy 16 bites konstans operandust, valamint egy forrás és egy céloperandust tartalmaznak.

Az ugró utasítások az ugrás helyének meghatározásához 26 bites relatív címet használnak.

Az M4K processzormag az utasítás végrehajtás párhuzamosítására ötállapotú pipeline-t használ, melyben minden utasítás végigmegy mind az öt állapoton, tehát egyszerre öt utasítás végrehajtása folyik. A pipeline öt állapota: utasítás beolvasás, dekódolás, végrehajtás, memória hozzáférés, memória visszaírás. Így lehetővé válik, hogy órajelenként egy utasítást hajtson végre a processzormag, ami 120MIPS utasítás végrehajtási teljesítményt eredményez 80 MHz órajel frekvencia esetében. A CPU utasításkészlete tartalmazza a szorzás és osztás műveletét is. A szorzó és osztó áramkör saját pipeline-nal rendelkezik, aminek következtében a szorzás és osztás művelet végrehajtása alatt, képes a következő utasítás lehívására és végrehajtására. [8]

 

1. Digitális és analóg periféria áramkörök

  • I/O portok:

A mikrovezérlő lábkivezetései biztosítják a kapcsolatot a külvilággal. A lábkivezetések állapotát az I/O portok segítségével, lehet a programba beolvasni, vagy a programból 0/1 állapottal a lábak feszültségét változtatni. Egy I/O láb áramköri felépítését a 2. ábra mutatja.

02 IO port

2. ábra. I/O port felépítése.
(Forrás: Mirochip: PIC32MX5XX/6XX/7XX Data sheet)

Az egyes lábakhoz rendelt I/O regiszterek a memóriában a fájlregiszterek között helyezkednek el, kezelésük megegyezik a fájlregiszterek kezelésével. A regiszter olvasáskor a port csatlakozó lábainak állapotát olvassa be, íráskor pedig az adott regiszterbe írással a port csatlakozó lábait állítja magas vagy alacsony feszültség szintre. A port lábon lévő feszültségszint egy Smitt-triggeres bemeneti fokozaton keresztül jut a periféria áramkörbe. Ez lehetővé teszi a lassan változó jelek érzékelését is.

Azt, hogy az adott portot kimenetként vagy bemenetként használjuk a TRIS adatirány regiszterekkel lehet beállítani. A TRIS regiszter egyes bitjeit 1 értékűre állítva a hozzá tartozó port láb kimenetként, 0 értékűre állítva pedig bemenetként funkcionál.

Az I/O regisztereket operandusként használó utasítások a Read-Modify-Write utasítások. Az utasítás, végrehajtása előtt a regiszterhez tartozó I/O lábak értékét beolvassa (Read), elvégzi a műveletet (Modify) és visszaírja a módosított értéket a regiszterbe, emiatt a portlábak állapota megváltozhat. Ennek elkerülésére minden port három tárolót tartalmaz. Ezek a TRIS, a LAT és a PORT.

A LAT regiszter használata biztosítja a Read-Modify-Write utasítás végrehajtása alatt a kimenet állapotának megőrzését, oly módon, hogy a láb írásakor a LAT regiszterbe történik az írás, olvasásakor pedig a PORT regiszter tartalmazza a lábon lévő értéket. Az ODC regiszterrel, a portlábak normál digitális, vagy Open-Drain-ü kimenetként konfigurálhatók. Az ODC regiszter értéke, ha 1 a kimenet Open-Drain-ü, ha 0 normál digitális. Ha a port bemenetként van konfigurálva, visszaáll normál digitális működésre.

A mikrovezérlő lábkivezetései általában több funkciót is ellátnak. Ha egy olyan perifériát használunk, mely lábkivezetést igényel az eredetileg I/O portként működő kivezetés funkcióját felváltja az adott periféria funkciója. Ez multiplexer segítségével valósul meg. [5]

  • Számlálók, időzítők:

Ha a számlálóáramkör a bemenetén egy külső jelváltozást érzékel, akkor a számláló képes a processzortól függetlenül a külső események számlálására. Ekkor a számláló áramköröket perifériaként használjuk. A számlálók léptető impulzusa származhat egy I/O lábon fellépő jelváltozástól. Amikor a mikrovezérlőt működtető leosztott órajelet kapcsoljuk a számláló bemenetére, akkor a tartalma és az órajel periódusidejének szorzata az eltelt idővel arányos, tehát időzítőként használható.

03 szamlalo

3. ábra. Számláló áramkörök.
A: TIMER1; B: TIMER2, TIMER3, TIMER4, TIMER5.
(Forrás: Mirochip: PIC32MX5XX/6XX/7XX Data sheet)

A számláló bemenetére érkező léptető impulzus egy előosztón keresztül jut a számláló regiszterre. Minden léptetés után összehasonlításra kerül a számláló regiszter és a PR periódusregiszter tartalma egy komparátoron keresztül. Egyezéskor a számláló megszakítást generál, illetve egy flag bittel jelzi az egyezést. A PIC32MX mikrovezérlők 5 db 16 bites számláló áramkört tartalmaznak. A Timer2 és Timer3, valamint a Timer4 és Timer5 összekapcsolásával 32 bites számlálóként használhatjuk, amint az 3. ábra mutatja. A Timer1 továbbra is 16 bites számlálóként használható, viszont ehhez a számlálóhoz egy külső oszcillátor is kapcsolható, melynek segítségével aszinkron módban is tud működni. [5]

  • Output Compare modul:

A korábbi mikrovezérlő családoknál használt CCP (Capture/Compare/PWM) modult különválasztották az Input Capture és Output Compare/PWM modulra.

Az Output Compare modul, az összehasonlító (Compare) műveleteken kívül PWM jelek előállítására is alkalmas. A PWM (Pulse Width Modulation), impulzus szélesség moduláció a legegyszerűbb digitál/analóg átalakítási módszer. Szabályozási folyamatok analóg feszültségértéke digitális impulzussorozattal (négyszög jel) helyettesítve, annak átlagfeszültsége egyenértékű az analóg feszültséggel. A négyszög jel UATLAG DC jelre és szinuszos összetevőkre bontható, ezért egy aluláteresztő szűrővel a kiszűrhető a DC komponens. [1]

04 output compare

4. ábra. Output Compare modul blokkvázlata.
(Forrás: Mirochip: PIC32MX5XX/6XX/7XX Data sheet)

A mikrovezérlő 5 Output Compare modult tartalmaz. A minden modul két regisztert (OCR, OCRS) tartalmaz az összehasonlítandó érték számára. Az összehasonlítást el lehet végezni a TIMER2 vagy a TIMER3 számlálóval, a kiválasztást a modul kontroll regiszterének OCTSEL bitjével lehet megtenni. A jel periódus idejét az időzítő regiszterébe töltött érték határozza meg.

A modul a számláló regiszter folyamatosan változó értékét összehasonlítja az OCR regiszter értékével és egyezéskor a modul kontroll regiszterében lévő OCM <2:0> bitek értéke szerint különböző kimeneti impulzus illetve jelsorozat állítható elő.

05 PWM jel

5. ábra. PWM jel.

1: Timer indítása, kitöltési tényez értéke betöltve az OCRS és az OCR regiszterbe; 2: A Timer és az OCR regiszter értéke megegyezik, OC láb alacsony szintű lesz; 3: Timer túlcsordul, az új kitöltési tényező betöltése OCRS regiszterből az OCR regiszterbe, OC láb magas szintű lesz.

Az egyik legfontosabb funkció a PWM jel előállítása, mely az OCM bitek 110 értékénél működik. A 4. ábrán látható, hogy az OCRS regiszterbe kell írni azt az értéket, mely a számláló periódusidejével szorozva megadja a PWM jel kitöltési tényezőjét, vagyis azt az időt, ameddig a jel a periódus időn belül magas szinten van. Minden periodusidő végén, az OCRS regiszter tartalma átíródik az OCR regiszterbe, amivel a számláló regisztere összehasonlításra kerül. Mivel csak az OCRS regiszter írható, a kitöltési tényező a periódusidő alatt nem tud felülíródni. [5]

  • A/D átalakító:

A mikrovezérlő PORTB-hez tartozó lábkivezetései a digitális I/O funkción kívül analóg bemenetként is konfigurálhatók (AN0..AN15), ekkor digitális kimenetként is használhatók. Az analóg bemenetként konfigurált portok egy belső A/D konverterre multiplexálódnak. Az A/D konverzió eredményként 10 bites digitális értéket szolgáltat. Referenciafeszültségnek a mikrovezérlő tápfeszültsége, vagy külső feszültség egyaránt használható.

Az analóg bemeneteket egy analóg multiplexer irányítja a mintavevő/tartó áramkörre. A mintavevő/tartó kimenete csatlakozik az A/D átalakítóra. Az A/D konverzió szukcesszív approximációs (fokozatos megközelítésű) elven működik. A módszer lényege, hogy egy komparátor egyik bemenetére az aktuális analóg jel kerül, a másikra pedig egy referencia-feszültség sorozat. A sorozat első lépcsőjében megfelezzük a mérendő feszültség tartományt, ez lesz a legmagasabb helyiértékű bit. Következő lépcsőben megint megfelezzük a szakaszt, s így tovább. Az eljárás során tíz egymást követő komparálást kell végezni mintánként.

A konverzió megkezdése előtt gondoskodni kell a mintavételi idő kivárásáról, mivel a konverzió feltétele, hogy a CHOLD kondenzátor 6. ábra teljesen feltöltődjön az analóg feszültség szintjére. A feltöltési idő TMV az analóg jelforrás ellenállásától RS, a belső ellenállásától RIC és a mintavevő kapcsoló elem 6. ábra SS ellenállásától RSS függ, a (1) képlet szerint:

TMV=CHOLD(RIC+RSS+RS)        (1)

A mintavételi időt tovább növeli az erősítőelemek beállási ideje, valamint a hőmérsékletet is figyelembe kell venni.

06 analog bemenet

6. ábra. Analóg bemenet mintavevő tartó áramköre.

A konverzió a modul kontroll regiszterének SAMP bitjével indítható, de automatikus mintavételezés is választható. Automatikus mintavételezés esetén egy számlálóval indítható a konverzió. Az eredmények ekkor egy 16 regiszteres pufferbe kerülnek. Egyszeres konverzió esetén a kontroll regiszter DONE bitje jelzi a konverzió befejezését. A pufferből való kiolvasás előtt meg kell határozni, hogy milyen alakban van szükségünk az adatra, mely 16 vagy 32 bites értékként kezelhetünk.

Az A/D adatformátumok:

  • Integer: jobbra igazított felső bitek értéke 0.
  • Signed integer: jobbra igazított, tízedik bit negált, a felső bitek értéke a tízedik bit negáltja.
  • Fractional: balra igazított, alsó bitek értéke 0.
  • Signed fractional: balra igazított, tízedik bit negált, alsó bitek értéke 0.

 

2. Kommunikációs protokollok és megvalósításuk periféria áramkörökkel

  • USART soros I/O:

A Universal Synchronous Asynchronous Receiver Transmitter soros kommunikációs jelátvitelt az RS232 soros átvitel valósítja meg. Pont-pont összeköttetésre alkalmas, eredetileg a számítógép és a modem közötti kapcsolatra dolgozták ki. Felhasználásával modem nélküli átvitel is létrehozható, valamint a számítógép és a perifériák közötti jelkapcsolatra is használják. Az aszinkron soros csatlakozó az IBM PC szabványos illesztő felülete (COM), de igen sok mikrovezérlőben is megtalálható. A legegyszerűbb esetben egy kétirányú soros kapcsolathoz egy adó és egy vevő jelvezeték valamint egy GND (0 V) vezeték szükséges, de a szabványos megoldásban további jelek átvitelét is előírják. Sodrott érpár segítségével 15 m távolságot hidal át, legnagyobb adatsebessége 20 Kbit/s.

A soros kommunikációnak alapvetően két fajtája létezik, a szinkron és az aszinkron. A szinkron kommunikáció során az adó (transmitter), és a vevő (receiver) az egész adatátvitel alatt szinkronban vannak, közös szinkronjelet használnak. Az adatbiteket egy további vezetéken kiküldött órajel sorozat segítségével lehet szinkronizálni

Az aszinkron kommunikáció esetében az adó és a vevő egy byte átvitelének idejéig marad szinkronban, külön szinkronjelet használnak, a karakter átküldése után a vonal határozatlan időre inaktív állapotba kerül. Az adatátvitel során az adóról érkező biteket a vevőnek egyértelműen azonosítani kell, ehhez szükséges, hogy azonosan értelmezzék a jeleket. Az aszinkron soros átvitelnél a bitcsoportos átviteli mód biztosítja az adó és vevő közti szinkront. A szinkronizáláshoz plusz biteket kell felhasználni. Ezek a start és stop bitek, melyeket keretező biteknek nevezünk, mivel a tényleges információt keretbe foglalják. A start bit az adatbitek kezdetét, a stop bit pedig a tényleges adat végét jelzi. A 9. ábra 1 adatbájt soros átvitelének idődiagramját mutatja.

07 soros

7. ábra. Soros adatátvitel.

A soros protokoll szerint, ha a soros vonalon nem történik adatátvitel, a vonal magas szinten van. Az adatátvitel megkezdésekor az adó a vonalat 1 bit átvitelének idejéig alacsony szintre állítja, ezt nevezzük start bitnek. Ezután 1 bit átvitelének idejéig várakozva, veszi az adatbiteket. Az átvitel végén, ha a vevő stopbitet érzékel, egy újabb startbitet vár, ami egy következő bitsorozat átvitelét jelenti. A stop bit megérkezése után a következő állapot változás egy újabb adás kezdetét jelenti.

Az átvitel során lehetséges paritásos hibaellenőrzés, ekkor a stopbitet megelőzi 1 paritásbit. A paritásos hibaellenőrzés során az átvitt adatbit-csoportot 1 paritás bittel egészítjük ki úgy, hogy a kiegészített adatcsoportban lévő 1 értékű bitek száma páros (páros paritás), vagy páratlan (páratlan paritás) legyen. Ha az átvitel során 1 bit megsérül, akkor a kiegészítés miatt nem fog egyezni az egyes bitek száma, azaz paritáshiba lép fel. Statisztikailag kimutatható, a több bit sérülésének, illetve a paritáshiba kialakulásának nagyon kicsi az esélye. Jó minőségű, zajmentes összeköttetésnél nincs is szükség paritásbitre.

A soros átvitel a következő adatokkal jellemezhető:

  • Az átvitel során használt adatbitek száma:

Az átvitel során 5, 6, 7, 8 adatbitet használható.

  • átvitel során használt stopbitek száma:

A bitcsoport átvitele után a logikai 1 állapotának ideje. A szabvány szerint ez az idő 1, 1,5 és 2 bit hosszú lehet. A legrövidebb, 1 bitnyi idő biztosítja, hogy a vevő felkészülhessen a következő start bit érzékelésére. Két stop bit használatára akkor van szükség, ha a vett adatok azonnali feldolgozása miatt szükséges a hosszabb várakozási idő. A 1,5 stopbit csak az 5 bites adatbit-szám mellett használható.

  • A paritás ellenőrzés típusa:

Az átvitel során használt paritásellenőrzés típusa. Használata nem kötelező, de amennyiben alkalmazzuk meghatározható, hogy páros, illetve páratlan paritás számot kívánunk-e használni az ellenőrzésre.

  • Átviteli sebesség:

Az időegység alatt átvitt bitek száma. Ezt bitütemezésnek (baud-rate) nevezzük, és bit/sec-ben (bps) mérjük.

A soros átvitel megvalósítására céláramköröket fejlesztettek ki. Az áramkörök shiftregiszterek segítségével végzik el a párhuzamos adatok sorossá, és a soros adatok párhuzamossá alakítását, a start- és stop bitek kezelését, valamint az átvitelt. [4]

A mikrovezérlő UART modulja önálló baud-rate generátorral rendelkezik, 16 bites előosztóval. A küldendő és vett adatok egy-egy nyolc tárolós FIFO pufferbe kerülnek. Képes a modul automatikus átviteli sebesség meghatározása a fogadott karakterekből.

  • I2C modul:

A I2C soros kommunikációs buszrendszer kétvezetékes kapcsolatot használ, melyek az SDA adat és az SCL óra. A mikrovezérlő SDA és SCL lábai nyitott kollektoros kimenetek, ezért külső felhúzó ellenállást igényelnek. A buszrendszerre több eszköz is csatlakozhat és minden eszköznek saját címe van. Hétbites cím esetén 127 eszköz címezhető, az egy buszra csatlakozó eszközök számát a busz kapacitása korlátozza, ami maximum 400 pF lehet. Az átvitel soros nyolcbites kétirányú adatforgalmat valósít meg, sebessége 100 kbit/s, gyors átvitel estén 400 kbit/s. Adáskor kell egy kitüntetett eszköz a Master, amelyik az órajelet is adja, a többi Slave. A Master képes adóként és vevőként is működni.

A 8. ábrán szemléltetem a START és STOP feltétel kialakulását az I2C buszon Az adatátvitel indítása a start feltétellel, lezárása a stop feltétellel történik. Start feltételkor az SCL láb magas szinten van és az SDA lábon felfutó él alakul ki (start bit). Stop feltételkor az SCL láb magas szintje mellett az SDA lábon felfutó él alakul ki (stop bit).

08 start stop

8. ábra. START és STOP feltétel kialakulása I2C buszon.

Az SDA vonalon az adatokat nyolcbites csoportokban (bájtonként) lehet átvinni. Egy bájt átvitele után a vevő egy ACK bittel igazolja, hogy fogadta az adatot, ehhez az SDA vonalat alacsony szintre kell állítania, miután az adó azt elengedte (ACK kérés). Ha a vevő nem képes az adatok fogadására, úgy jelzi az adónak, hogy nem küld ACK bitet, vagy alacsonyan tartja az SCL vonalat. Ha nem érkezik ACK bit a vevőtől, az adó megszakítja az adást, majd később agy újabb start feltétel után újra próbálkozik. Amikor az SCL vonal alacsony szinten tartásával jelzi a vevő a hibát, az adó megvárja míg az SCL vonal ismét szabad lesz és onnan folytatja az adást ahol félbeszakadt. Amikor a vevő egyben a master, negatív nyugtázást (NACK) kell küldenie, ami azt jelenti, hogy bár generál ACK jelet, de nem húzza alacsony szintre az SDA vonalat.

09 ido

9. ábra. Adatátvitel idődiagramja I2C buszon.
A buszon minden eszköz saját címmel rendelkezik. A cím hétbites, a nyolcadik bit jelzi a fogadó eszközzel, hogy írni (0), vagy olvasni (1) akarja e az adó.

Adás megkezdésekor a master küld egy start bitet, majd kiadja a buszra a slave eszköz címét. A slave, amelyiknek a címe kikerült a buszra, egy ACK üzenetet küld vissza. Ha a cím R/W bitje 0, az visszaigazolás megérkezése után a master elküldi az adatokat. Az utolsó bájt elküldése után stop állapotba hozza a buszt. Amikor a cím R/W bitje 1, a master fogadja a slave-től az adatokat, majd az utolsó bájt elküldése után a slave NACK bittel jelzi, hogy befejezte az adatküldést. Ekkor a master stop állapotba állítja a buszt. Az adatok fogadásakor a master minden bájt átvitel után újra indítja és zárja a buszt.

Az IIC modul önálló órajel generátorral rendelkezi, melynek alapját PBCLK órajel adja.

Az adatok küldésére a Transmit Regiszter, fogadására a Receive Buffer Register szolgál.

  • USB modul

Az USB közös hozzáférésű, lekérdezés alapú csillag topológiájú perifériahálózat. A perifériák a hoszttól kapott token megszerzése után küldhetnek, vagy fogadhatnak. Az egyenrangú perifériák egyedi azonosítóval rendelkeznek, mely 1-127 közötti érték.

Az USB kommunikáció keretezett csomagokat használ, a hibamentességet CRC ellenőrzőkód biztosítja. Az adatátvitelt a 10. ábrán látható NRZI kódolással valósítja meg, melynek lényege, hogy az átvitel során a logikai 1 értékű bithez, ha az előző logikai 1 értékű bithez 0 feszültségszint tartozott, akkor magas feszültségszint fog tartozni, ha az előző logikai 1 értékű bithez magas feszültségszint tartozott, akkor 0 feszültségszint fog tartozni.

10 NRZI

10. ábra. NRZI kódolás.
(Forrás: Kónya László: Számítógép-hálózatok)
A logikai 0, vagy 1 értékét különbségi jelszintekkel határozza meg az USB busz. Az információt a D+ és D- vezetékek közötti feszültségkülönbség hordozza. Ha a D- feszültségéhez képest a D+ feszültsége nagyobb, mint 200 mV akkor a logikai 1 állapot, ha kisebb a logikai 0 állapot áll fenn. Reset jelzésére használatos az az állapot, amikor mindkét vezetéken 0 feszültségszint van.

Az adatok továbbítása csomagokban történik, 1 ms hosszú keretben.

USB csomagok:

  • Token csomag (jelzi a következő feladatot)
  • Opcionális adatcsomag
  • Státusz csomag (sikeres tranzakció jelzése)

Az USB kommunikáció az eszközök azonosítására, a végpontok és funkciók meghatározására úgynevezett leírókat (Descriptor) használ. A leírók tartalmazzák a gyártó nevét, termékszámot (Device); a készülék áramfelvételét, interfészek számát (Configuration); a végpontok számát (Interface); a végponton zajló kommunikáció típusát (Endpoint); szöveges információt (String).

Az USB három adatátviteli sebességet határoz meg, melyek az alacsony (1,5 Mbit/s), teljes sebességű (12 Mbit/s) és nagysebességű (480 Mbit/s). Az USB hálózatra kapcsolódó eszközöknek jelezniük kell az adatátviteli sebességüket. Az alacsony sebességű eszközök a D- vonal, a teljes sebességű eszközök a D+ vonal 3,3V-ra való felhúzásával jelzik. Az USB modul rendelkezik belső felhúzó ellenállással, mely a programból az kapcsolható be. A teljes sebességű eszközök, 48 MHz USB órajelet használnak. Akkor is ezt az órajelet kell használni, ha a CPU más frekvenciával működik.

11 USB

11. ábra. Az USB modul blokkvázlata.
(Forrás: Mirochip: PIC32MX5XX/6XX/7XX Data sheet)

A mikrovezérlő CPU-ja és a soros illesztőegysége (SIE) egy elkülönített kettős hozzáférésű memóriaterületen keresztül végzi az adatforgalom lebonyolítását. A VUSB lábon keresztül kívülről lehet biztosítani a 3,3V tápfeszültséget, ha nem a mikrovezérlő belső tápellátását használjuk.

A modul OTG módban is képes üzemelni. Ekkor hosztként kell konfigurálni és képes fogadni az USB eszközöket. A mikro/mini USB csatlakozók negyedik érintkezője az úgynevezett ID pin. Ha ez ellenállás közbeiktatása nélkül le van húzva GND-re, a kábel csatlakoztatásakor az USB modul hoszt módba vált. Ezért a csatlakozó bekötésekor a modul ID kivezetéséhez kell kötni a csatlakozó 4. lábát. A modul VBUS kivezetésén keresztül biztosítja az USB eszközök táplálására szolgáló 5V feszültséget. [5]

Az USB szabvány több kommunikációs osztályba sorolja az eszközöket, melyek a következők:

  • Communication Device Class (soros port USB-s emulációjához)
  • Human Interface Device Class (például egy USB-s egér)
  • Mass Storage Class (pendrive)
  • Custom Device Class (egyéb eszköz)

Amikor egy USB eszköz csatlakozik a buszra, akkor a hoszt ezt érzékeli, majd egy RESET jelet ad ki a vonalra és egyben bekapcsolja a tápfeszültséget. Ez után a hoszt lekérdezi az eszköz leíróiban lévő adatokat, majd küld egy címet, amit az eszköz a kapcsolat ideje alatt használhat.
A hoszt kérésére az eszköz beolvassa a konfigurációs leírót ezután visszaküldi a konfigurációs leírójában lévő adatokat. Végül a hoszt elfogadtatja a konfigurációs értékeket az eszközzel. Ezután az eszköz kész a kommunikációra. [6], [9], [10]

  • CAN modul

A CAN (Controller Area Network) vezérlési rendszert a Robert Bosch Gmbh. a járműipar számára fejlesztette ki. A protokoll 1986-ban jelent meg hivatalosan. A gépjárművekben alkalmazott vezérlő elektronika, a hozzá kapcsolódó érzékelők és beavatkozók összehangolt működését biztosító CAN rendszer az ipari felhasználók érdeklődését is felkeltette. Nagyfokú megbízhatóságának, egyszerű kiépítésének és a gyors, robosztus kommunikációnak köszönhetően egyre terjed az ipari és vezérlési folyamatokban való használata. A CAN protokoll az OSI modell fizikai és adatkapcsolati rétegét valósítja meg.

12 CAN OSI

12. ábra. A CAN és az OSI kapcsolata.

Az OSI modell alkalmazási rétegét a CAN-re épülő két nyílt buszrendszer a CANopen és a DeviceNet írja le, melyek lehetővé teszik az adatok értelmezését. Készülékek közti egyenrangú kommunikációt biztosít, az egymás közötti pontosan definiált információátadással. Ez lehetővé teszi a különböző gyártóktól származó eszközök összekapcsolását. [3]

A CAN soros buszrendszer, átviteli közege árnyékolt, vagy árnyékolatlan csavart érpár. A vonal hossza 40 m-től 1 km-ig terjedhet, ami csupán az alkalmazható adatátviteli sebességre van hatással. A 40 m-es vonalon a maximális adatátviteli sebesség 1 Mbit/s, 1 km-es vonalon azonban csak 50 kbit/s lehet.

A CAN a jelszinteket, amit a 13. ábra szemléltet huzalozott-és konfigurációval állítja elő.
A logikai H szintnek U feszültség felel meg, a logikai L szintnek 0V. Ha mindegyik csomópont logikai H szintet küld a buszra, csak akkor lesz a buszon U feszültségszint. Amennyiben egyetlen csomópont is logikai L szintet küld, a busz 0V feszültségszintre kerül. Ezért nevezzük a 0 (L) bitet dominánsnak, az 1-est (H) recesszívnek. A CAN-H magas és CAN-L alacsony vezetékek feszültségszintje határozza meg a buszon lévő feszültség értéket. A CAN-H és CAN_l vezetékek közti feszültségkülönbség 1,5 és 3 V közötti, akkor a jelszint domináns, ha 0 és 0,5V közötti recesszív. Mivel a bitek értéke a vezetéken feszültség különbségből adódik, az elektromágneses zavar mindkét vezetékre egyformán hat, ezzel az elektromágneses interferencia ellen védve van a busz.

13 jel CAN

13. ábra. Jelszintek a CAN buszon.

A különböző kódolási eljárások közül, a CAN az NRZ, nullára vissza nem térő kódolást használja. Az NRZ (Non Return to Zero) kódolás lényege, hogy a teljes bitidő alatt változatlan a jelszint. Ez azt eredményezi, hogy az átvitt információtól függően hosszabb ideig is változatlan maradhat a jel állapota. Például több egymás utáni egyes érték esetén a jelszint mindaddig domináns marad, míg nulla nem követi az egyeseket. Ebben az esetben nem valósul meg a jel szinkronizációja. Ezt a hibát küszöböli ki a bitbeszúrás, (bit stuffing) módszer, lásd 14. ábra, mely minden öt egymást követő azonos értékű bit után beszúr egy ellentétes értékű bitet, melyet a fogadó csomópont automatikusan kivesz.

14 bitbeszuras

14. ábra. Bitbeszúrás. (S: a beszúrt bit)

A CAN buszon küldendő üzeneteknek két formája létezik, formáját az azonosító mező hossza határozza meg. Az egyik a szabványos, lásd 15. ábra, mely 11 bites azonosító mezőt használ, a másik a kiterjesztett formátumú, 29 bites azonosító mezővel.

A CAN minden üzenet tartalmához egy egyedi azonosítót rendel, mely egyben az üzenet prioritását is meghatározza. Ennek a buszhozzáféréskor van jelentősége: Több eszköz egyidejűadása esetén a magasabb prioritású üzenet marad érvényben. Minden résztvevő fogadja a buszra került összes üzenetet. Ha az üzenet neki szól, elfogadja, ha nem, eldobja. Az adatkeret 11 bites azonosító mezőjének egy kijelölt részét a készülékek megjelölésére használják.

15 szabvanyos

15. ábra. Szabványos CAN adatkeret.
RTR: Üzenetküldést kérő bit; IDE: Azonosító kiterjesztés bit; RB0: Foglalt bit;
CRC del: CRC nyugtázó bit; ACK: nyugtázó bit; SOF: Üzenet kezdete; IFS: Üzenet utáni szünet

A CAN busz adatátviteli protokoll CSMA/CA vivőérzékeléses többszörös hozzáférésű ütközés elkerüléses közeghozzáférési módot alkalmazza. Az ütközést nem érzékeli, hanem elkerüli. Ütközés esetén a kisebb értékű azonosítóval rendelkező üzenet szerzi meg a busz használati jogát, mivel minél kisebb szám az üzenet azonosítója, annál nagyobb a prioritása.

16 arbitacio

16. ábra. Busz arbitáció.

Az ütközést minden csomópont bitenként figyeli. A domináns bit felülírja a recesszív bitet. Minden recesszív bitet küldő csomópont domináns bitet vesz a buszról, elveszíti a versengést.
A vesztes csomópontok megszakítják a küldést és vevővé válnak. A megszakított küldést a csomópont csak akkor kezdheti újra, ha a busz szabaddá válik. Ezt nevezzük busz arbitációnak, amit a 16. ábrán láthatunk.

Fontos, hogy a csomópontok megfelelő bitrátán kommunikáljanak egymással, még akkor is, ha az egyes csomópontok különböző órajelet használnak működésükhöz. Mivel nincs külön órajel, ezért a csomópontoknak kell a buszhoz szinkronizálni az órajelüket. A pontos szinkronizált órajel előállításához egy digitális fáziszárt hurkot kell használni a csomópontoknak. Egy adott bitráta beállításához szükség van az időkvantumnak, valamint ennek alapján a névleges bitidőnek a meghatározására. Az időkvantum TQ rögzített időegység, mely az oszcillátor periódusidejéből Fosc és a Boud Rate előosztójának BRP értékéből származtatható a (2) képlet szerint.

TQ=((BRP+1)/FOSC)2    (2)

A névleges bitidő négy darab időszegmenssel adható meg, mely a 19. ábrán látható:

17 bitido

17. ábra. A CAN bitidő.

A hardver inicializálásakor az egyes szegmensek beállítása a CNF2 és CNF3 regiszterekben a következő:

Szinkronizációs szegmens: Sync. Segm

Terjedési idő szegmens: Prop. Segm

1. szinkron puffer szegmens: PS1

2. szinkron puffer szegmens: PS2

tNBT  névleges bitidő az egyes szegmensek idejéből számítható a (3) képlet alapján.

tNBT=tSyncSegm+tPropSegm+tPS1+tPS2    (3)

Ahol a tSyncSegm a szinkronizációs szegmens, a tPropSegm a terjedési idő szegmens, a tPS1 az 1. szinkron puffer szegmens és a tPS2 a 2. szinkron puffer szegmens bit ideje.

Ebből a CAN busz átviteli frekvenciája fCAN, a (4) képlettel számítható ki.

Ahol tNBT az előbb számított névleges bitidő. [2], [7]

fCAN=1/tNBT           (4)

 

18 CAN blokk

18. ábra. CAN modul blokkvázlata.
(Forrás: Mirochip: MCP2515 adatlap)

A CAN modul, melynek blokkvázlatát a 18. ábrán láthatjuk, a protokoll motorból (Protocol Engine), az üzenet feldolgozó szűrőkből (Filters) és a MAB tárolóból (Message Assembly Buffer) áll. A protokoll motor továbbítja és fogadja az üzeneteket a CAN buszról. A fogadott üzenetet CRC ellenőrzés után az RXB0 vagy az RXB1 vételi pufferbe továbbítja. Ha az egyik puffer még nem üres, a másikba kerül a vett keret. Ezután a keret azonosító része a szűrőkhöz kerül kiértékelésre. Az RXB0 pufferhez kettő vételi szűrő és egy maszk regiszter, az RXB1 pufferhez négy vételi szűrő és egy maszk regiszter tartozik. Ha a szűrő és a maszk bitjei egyeznek a beérkezett üzenet azonosító bitjeivel, az üzenet elfogadásra kerül. A beérkezett üzenet azonosító mezője bitről-bitre kerül összehasonlításra a szűrő és a maszk regiszter azonos helyiértékű bitjeivel.

 

1. táblázat. Szűrő és maszk igazságtábla.

Maszk   bit Szűrő   bit

Üzenet azonosító bit

Elfogadás vagy elutasítás

0 X X elfogadva
1 0 0 elfogadva
1 0 1 elutasítva
1 1 0 elutasítva
1 1 1 elfogadva

 

Ellenőrzéskor, ha a maszk bit 0 értékű, az üzenetbit az értékétől függetlenül átjuthat. Ha a maszkbit 1, a bit ellenőrzésekor egyeznie kell a szűrő megfelelő bitjének értékével. Ha az üzenet azonosítójának összes bitje egyezik a szűrő bitjeivel, vagy a maszk miatt ez közömbös, az üzenet a vevő pufferbe kerül. A vételi szűrők tartalmaznak egy-egy vezérlőbitet (EXID), annak eldöntésére, hogy szabványos vagy kiterjesztett azonosítót fogadnak. A maszk regiszterekben is van egy-egy vezérlőbit (MIDE), melynek értéke ha 0, szabványos és kiterjesztett azonosítók egyaránt szűrhetők. Amennyiben a MIDE bit értéke 1, az EXID bit határozza meg, hogy szabványos vagy kiterjesztett keret szűrhető.

A CAN modul adáshoz három adó puffert használ, de egy időben mindig csak az egyik pufferből lehet adatot küldeni. Az adó puffer első kettő regisztere tartalmazza az üzenetazonosítót, a következő regiszterekbe a 64 bit (8 bájt) elküldendő adat kerül. Az adat bájtok számát a puffer DLC mezője tartalmazza. Azt, hogy szabványos vagy kiterjesztett azonosítót használunk, az adó puffer vezérlő regiszterének IDE bitjével kell jelezni. Ha értéke 0 szabványos, ha 1 kiterjesztet azonosítót használunk. Az üzenet összeállítása után az adás vezérlő regiszter TXREQ bitjének 1-be állításával kezdeményezhető az üzenet elküldése. A keret elküldése után a TXREQ bit automatikusan törlődik, ezután kérhető a következő adás.

Abban az esetben, amikor mindhárom adó puffer tartalmaz elküldendő keretet, az adó szabaddá válása után prioritási sorrend alapján a következő pufferből kerül elküldésre az adat. A prioritási sorrend az adás vezérlő regiszterek TXPR<1:0> bitpárosával határozható meg. 00 a legalacsonyabb, 11 a legmagasabb prioritást jelenti. [5]

 

Irodalomjegyzék

[1]  Ferenczi Ö.: Teljesítményszabályozó áramkörök: Műszaki Könyvkiadó, Budapest (1981), pp. 1-249.

[2]  Fodor A. és Vörösházi Zs.: Beágyazott rendszerek és programozható logikai eszközök: Typotex Kiadó, Egyetemi tananyag, Pannon Egyetem (2011), pp. 1-251.

[3]  Dr. Fodor D.: Autóipari kommunikációs protokollok – a CAN: Pannon Egyetem, Veszprém (2012), pp. 1-68.

[4]  Dr. Madarász L.: A soros adatkezelés előretörése a digitális elektronikában: GAMF Közleményei, Kecskemét, XIII. évfolyam (1996-97), pp. 1-24.

[5]  Microchip Technology Inc: PIC32MX Family Reference Manual: Microchip Technology Inc. (2008), pp. 1-1198.

[6]  Microchip Technology Inc: USB Framework Library: [online]

Elérhetőség: http://www.microchip.com/stellent/idcplg?IdcService= SS_GET_PAGE&nodeId=2680&dDocName=en547784(utolsó látogatás időpontja: 2013. október 10.)

[7]  Robert Bosch GmbH: CAN Specification 2.0.: Robert Bosch GmbH, Stuttgart (1991).

[8]  Sweetman, D.: See MIPS run 2nd Edition: Morgan Kaufmann Publishers, San Francisco, Kalifornia (2007), pp. 1-28.

[9]  USB.org: On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification: LSI Corporation, Hewlet-Packard Company, Intel Corporation, Microsoft Corporation, NEC Corporation, ST-NXP Wireless Company (2009), pp. 1-79.

[10] USB.org: Universal Serial Bus Specification

 

Az itt megjelenített tartalom az online jogról szóló törvény értelmében a szerző szellemi tulajdonát képezik.
A fenti ismérvek alapján a szerző egyedi engedélyével átvehetőek lényegben tett változtatás, szándékos torzítás nélkül, aktív forráslink feltűntetése esetén.
Mindez a szerző által átvett anyagokra természetesen nem vonatkozik, annak joga minden esetben az eredeti szerzőt illeti meg.

 

Áramkörépítő