4.1.1. I2C , SPI, I2S, USB, PWM, UART, IrDA A címben található jelölések a mikrovezérlők kimentén megjelenő tipikus perifériák, típus jelzései. Mindegyikkel röviden foglalkozni fogunk a folytatásban. I2 C Az (Inter-Integrated Circuit) I2C protokoll, half-duplex, szinkronizált soros adatátvitelre lett kifejlesztve. Az adatátvitel két, kétirányú vonalon keresztül történik (SDA – Serial Data, SCL – Serial Clock). Az I2C modullal ellátott eszközök e két lába mivel kétirányú, ezért open-drain kialakítású, emiatt őket külső ellenállással (Rp) fel kell húzni a pozitiv táp szintjére (Vdd). A protokoll két átviteli sebességet támogat, 100kbps, és 400kbps. A kommunikációscsatorna master és slave eszközökből épül fel. Lehet benne több master és több slave is. Master eszköz a slave-vel mindkét irányban kommunikálhat, slave-ek egymás között nem kommunikálhatnak. Sok eszköz használja az I2C kommunikációs protokollt, például: mikrovezérlő, DAC, ADC, RTC, DSP processzor stb. A következő ábrán egy példát láthatunk az I2C kommunikációs csatorna (busz) felépítéséről.
I2C kommunikációs csatorna felépítése A kommunikációs csatorna szabad, amikor mindkét vonal (SDA, SCL) logikai egyes szinten van, a master csak ebben az esetben kezdeményezhet adatátvitelt. Minden átvitel a kommunikációs csatornán 9 bit hosszú, 8 adatbitet (Data) és 1 jóváhagyás bitet (ACK) tartalmaz. Az átvitt bájtok száma nincs korlátozva a START és STOP feltétel között bármennyi küldhető és fogadható, feltéve, ha minden bájtot jóváhagyott a vevő. A kommunikációs csatornán levő összes slave eszköznek rendelkeznie kell egy egyedi 7 bites azonosító címmel, melynek segítségével a master eszköz megcímzi azt a slave eszközt, amellyel a kommunikációt kezdeményezi. Látható hogy maximálisan 128 slave eszközt lehet egy kommunikációs csatornára kötni. A kommunikáció folyamatát a következő ábra szemlélteti:
Adatátvitel az I2C kommunikációs csatornán keresztül A Start feltétel után a master elküldi a slave 7 bites címét. A 8. bit (R/S) jelzi hogy a kezdeményező küldeni (Send = 0) vagy fogadni (Receive = 1) fog. A cím jóváhagyása (ACK) után következik az adat bájtonkénti átvitele. További információkat az I2C protokollról és annak felhasználásáról a következőoldalon találhatnak: http://en.wikipedia.org/wiki/I%C2%B2C.
SPI Az SPI (Serial Pheripherial Interface) kommunikációs protokoll, full-duplex, szinkronizált, soros adatátvitelre lett kifejlesztve. A kommunikációs csatorna master és slave eszközökből (mikrovezérlők, LCD kijelzők, eeprom vagy flash memória stb.) épül fel. A kovetkező vonalakat használja a kommunikációra: • SCLK – Serial Clock – az adat szinkronizálására szolgáló órajel. A master eszköz szolgáltatja. • MOSI – Master OUT, Slave IN – Master eszköz adat kimenete, Slave eszköz adat bemenete. • MISO – Master IN, Slave OUT – Master eszköz adat bemenete, Slave eszköz adat kimenete. • SS – Slave Select – a slave eszközt kiválasztó vonal, minden slave eszköznek saját select vonala lehet. A következő képen egy példát láthatunk az SPI kommunikációs csatorna felépítésére.
SPI kommunikációs csatorna felépítése Kommunikációt csak master eszköz kezdeményezhet, ő szolgáltatja az órajelet és ő választja ki a slave eszközt. A slave select (SS) vonal nullára aktív. Amikor a master kommunikációt kezdeményez, a kiválasztott slave eszköz select lábát 0-ra húzza, és elindítja az órajel generálását. A protokoll szerint a maximális órajel 100MHz lehet. ARM Cortex M3 mikrovezérlő esetében a maximális SPI órajel a mikrovezérlő órajelének a fele lehet. Ahogyan a képen is látszik a master és slave eszközök kimenete és bemenete egy-egy shift regiszterre kapcsolódik, ami minden órajelre egy bitet küld és fogad, így van megvalósítva a full-duplex kommunikáció.
SPI adatátvitel
I2 S Az I2S (Inter IC Sound) kommunikációs protokoll a digitális audió technikában használt eszközök (audió feldolgozó DSP processzorok, ADC, DAC, Volume Control IC, stb) közötti, digitális audió adatátvitelére lett kifejlesztve. A kommunikáció egyirányú, és minimum három vezetékre van szükség, ezek a következők: • SCLK-SerialClock - az adat szinkronizálására szolgáló órajel, • LRCLK-Left Right Clock - a sztereó csatorna szétválasztására szolgáló órajel, • DATA - adatvonal. E három jel kiegészülhet még az MCLK-val (Master Clock), ami az I2S adatot fogadó eszköz fő órajelét szállíthatja. Erre abban az esetben van szükség, ha a fogadó eszköz nem rendelkezik saját órajel forrással, például osszcillátorral. A jelek közül az LRCLK, SCLK, DATA-nak szinkronban kell lenniük egymással, mert az adat kiolvasása élszinkronizált. A kommunikációs csatorna master és slave eszközökből épül fel. A master eszköz szolgáltatja az órajeleket és az adatokat, a slave eszköz pedig fogadja öket. Több slave eszköz is csatlakozhat egy master-hez. A hanganyag több külünböző módon is átvihető: • TDM – amivel 8 csatornáig vihető át hanganyag. • Standard I2S – Sztereó hanganyag átvitelére alkalmas, 8-32 bit adatszélességig.
I2S hanganyag átvitele A fenti ábrán a sztereó hanganyag átvitele látható 16, 20, 24 bites adatszélességel. Látható hogy az LRCLK órajel minden 32. SCLK órajel után vált. A jobb csatorna az LRCLK magas szintjén, a bal pedig az alacsony szintjén kerül átvitelre. A csatornánkénti rendelkezésre álló 32 bitből a használaton kívüliek mindig 0-val vannak feltöltve. Ennél az átviteli módnál az LRCLK - SCLK aránya 1:64, tehát például ha az audió CD 44,1kHz-es mintavételezésű hanganyagát szeretnénk átvinni, akkor az LRCLK 44,1kHz, az SCLK 2,822MHz lenne. Az MCLK – LRCLK aránya általában 64-512–ig terjed, ez eszközönként és felhasználási módtól függő.
USB Az USB (Universal Serial Bus) közepes sebességű perifériák asztali PC-kre és noteszgépekre történő csatlakoztatására szolgál. Az USB busz felfűzött csillag topológiájú, lekérdezés alapú, master-slave tipusú, half-duplex, soros kommunikációt tud megvalósítani. A kommunikációs csatorna mindig egy host (vezérlő) eszközzel kezdődik, amelyhez vagy egy készülék (device), vagy egy USB-HUB csatlakozik, amely lehetővé teszi újabb készülékek vagy további USBHUB-ok csatlakoztatását. Egy host-hoz a HUB-okon keresztül maximálisan 127 készülék csatlakozhat, az egymáshoz csatlakoztatott HUB-ok szintjeinek száma maximálisan 6 lehet. A következő ábra az USB kommunikációs csatornát ábrázolja:
Az USB topológia bemutatása A kommunikáció vezérlését mindig a master végzi. A host felől érkező forgalmat a HUB-ok minden csatlakoztatott eszköz felé továbbítják. A perifériák válaszai csak a host felé haladnak. A perifériák egymás között kommunikációt nem kezdeményezhetnek. A bus-nak több szabványos adatátviteli sebessége létezik: USB 1.0 – 12Mbit/sec teljes, és 1.5Mbit/sec alacsony sebességen, USB 2.0 –480Mbit/sec, USB 3.0 – 5.0GBit/sec. Az USB protokoll lehetővé teszi az úgynevezett hot plug-int, azaz az eszközök csatlakoztatását vagy leválasztását a programok futása közben. Az USB kábel nem csak adatokat szállít a készülékhez, hanem áramot is. Így fölöslegessé válik a külön tápforrás. Ez alól csak azok az eszközök kivételek, melyek 500 mA-nél több áramot igényelnek, őket külön tápforrásról kell táplálni. Az USB modullal ellátott mikrovezérlőket lehetséges különböző konfigurációban használni: USB Host mód – a mikrovezérlő mint USB host (vezérlő) egység működik, tehát csatlakoztatható hozzá különböző periféria (pl. egér, billentyűzet), USB Device mód – a mikrovezérlő mint USB device (eszköz) egység működik, tehát csatlakoztatható egy host egységhez, és működhet mint perifériás eszköz (pl. egér, billentyűzet, usb memória), On-The-Go mód – a mikrovezérlő működhet host, és device egységként is. Ehhez olyan tipusú vezeték és csatlakozó kell, amivel a mikrovezérlő érzékelni tudja, hogy a kommunikációs csatorna melyik oldalán helyezkedik el (host vagy device).
PWM A vezérlési és szabályzási folyamatok analóg feszültségjelei helyettesíthetőek digitális impulzus sorozatokkal, melyek átlagfeszültsége egyenértékű az analóg jellel. E digitális impulzus sorozatokat nevezzük impulzus szélesség modulált (Pulse Width Modulated) vagy PWM jelnek. Két fő paramétere van: az impulzussorozat frekvenciája, és a kitöltési tényezője. A következő ábra szemlélteti a PWM jel alakját.
PWM jel alakja Az impulzussorozat frekvenciáját úgy kell megválasztani hogy a vezérelt vagy szabályzott eszköz megfelelő működését biztositsa, pl. egy LED dióda fényerejének szabályzásakor a dióda fénye szemmel láthatóan ne vibráljon. Az impulzussorozat kitöltési tényezőjének változtatásával a jel által reprezentált átlagfeszültséget módosítjuk, esetünkben ezáltal a LED dióda fényereje változik.A PWM modullal nem rendelkező mikrovezerlők PWM jelet, számláló segítségével hoznak létre. A számláló ciklikusan körbe számol, és egy megadott érték alatt a kimenetet egyesre, az érték felett pedig nullára állítja be. A PWM modullal rendelkező mikrovezérlők pedig néhány egyszerű beállítás után saját maguk generálják a meghatározott frekvenciájú és kitöltési tényezöjű PWM jelet. UART Az Univerzális Aszinkron Adóvevő, pont-pont alapú aszinkron kommunikációra lett kifejlesztve, például PC-Modem, PC-Terminál között. Az aszinkron kifejezés azt jelenti, hogy a kommunikációs csatornán keresztül az órajel nem kerül átvitelre, ezért a kommunikáló eszközök a saját órajelükhöz szinkronizálják az átvitelt. Ez a tulajdonság korlátozza az elérhető maximális adatátvitel sebességét. A protokoll pont-pont meghatározása miatt az UART nem alkalmas busz kialakítására, tehát mindig csak két eszköz közötti kommunikációra alkalmas. Az univerzális jelző azt jelenit, hogy az adatformátum és az átviteli sebesség nem kötött, hanem több szabványos érték közül választható. Mikrovezérlős környezetben sokszor találkozunk vele olyan helyen, ahol szükséges a számítógéppel vagy más soros porttal rendelkező eszközzel való kommunikálás. A mikrovezérlőben található UART modul direkt nem alkalmas például a PC, RS-232 portjával való kommunikálásra, ehhez a két eszköz közé egy RS-232 átalakító elhelyezése szükséges, ami az UART protokollt átalakítja az RS-232 szabványnak megfelelő átviteli közeggé. IrDA Az IrDA (Infrared Data Association) egy több gyártót csoportosító egyesület, amely megalkotta az infravörös fény segítségével történő drótnélküli kommunikációs protokollt, melyet mobiltelefonok, nyomtatók, tablet PC-k, laptopok, PC-k közötti kommunikációra használnak. Kapcsolat egyszerre csak két eszköz között létesíthető, párhuzamosan több eszköz nem kommunikálhat egymással. Semmilyen optikai akadály nem lehet a két eszköz között, az egymás
közötti távolságuk max 1 méter lehet. Egy infra eszköz kb. 30 fokos kúp alakú területet tud besugározni. Nagy adatátviteli sebesség is elérhető vele, akár 16Mbit/sec. Mikrovezérlős környezetben infravörös kommunikáció használata szükséges lehet például távirányító jelének vételekor, vagy infra adó-vevővel ellátott telefonnal történő kommunikáláskor. Ebben az esetben a mikrovezérlőt el kell látni egy infravörös adó-vevő egységgel ami az irda fizikai rétegét fogja képezni. Az adó vevőt összekötni a mikrovezérlő erre a célra kialakított moduljával (UART modul az ARM Cortex LM3S9B96 mikrovezérlő esetén). A szoftveres réteget a kommunikációs féltől függően kell megválasztani (máshogy kell a távirányító jelét feldolgozni, mint egy mobiltelefonnal történő kommunikációt). CAN A (Controller Area Network) CAN egy számítógépes hálózati protokoll és adatbusz szabvány melyet mikrokontrollerek és egyéb eszközök kommunikációjára terveztek.A protokollt az autóipar számára fejlesztették ki a 80-as években. Hamarosanaz iparban is alkalmazni kezdték a következő pozitív tulajdonságai miatt: -‐ -‐ -‐ -‐ -‐
Az átvitel egy dupla csavart érpáron keresztül történik. Több master eszköz lehet a kommunikációs csatornán. Maximális adatátviteli sebessége 1Mbit/sec. Vezetékek maximális hossza 1Mbit/sec sebességnél elérheti a 40m-t, 5kbit/sec sebességnél pedig a 10km-t. Magas megbízhatóság, kiterjedt hibaellenőrzés.
A CAN busz szimmetrikus jelátvitelt alkalmaz, ehhez két vonalra van szükség, ez lehet árnyékolt vagy árnyékolatlan érpár (CAN_L es CAN_H). Erre az érpárra csatlakoztathatóak az eszközök. A csavart érpár és a szimmetrikus jelátvitel előnye az elektromos zavarással szembeni ellenállósága. A mikorokontrollerekben található CAN buszvezérlő önmagában nem elég a busz meghajtásához. Szükséges még egy vonali illesztő a mikrokontroller és a busz között.
CAN kommunikációs csatorna felépítése