CAN BUSZ ÁLTALÁNOS ISMERTETŐ

Hasonló dokumentumok
2.5 Soros adatkommunikációs rendszerek CAN (Ötödik rész)

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

A CAN mint ipari kommunikációs protokoll CAN as industrial communication protocol

Autóipari kommunikációs protokollok a CAN

Hálózati protokoll tervezése

komplex védelem Letöltő szoftver ismertető V1.61 Azonosító: EP Budapest, február

1 Járműipari hálózatok

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Fordulatszámmérő és szabályozó áramkör tervezése egyenáramú kefés motorhoz

I 2 C, RS-232 és USB. Informatikai eszközök fizikai alapjai. Oláh Tamás István

Járműfedélzeti rendszerek II. 6. előadás Dr. Bécsi Tamás

KIT-ASTER1 és KIT-ASTER2

SK2-M típusszekrény kétszivattyús szennyvízátemelőkhöz.

Keresztmetszeti megmunkálás egyengető-, vastagoló-, és kombinált gyalugépekkel

AUDIO ENGINEERING SOCIETY

SITRANS FUS380 ultrahangos áramlásmér. SITRANS FUE380 ultrahangos áramlásmér

Robotkocsi mikrovezérlővel

Paraméter csoport. Alapbeállítások

EUROFLEX-33 ESEMÉNY NYOMTATÓ. -felhasználói és telepítői leírás-

2. lecke: Gépjárművek világító- és jelzőberendezései

ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v1.0 és újabb modul verziókhoz Rev

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

GC1C / GC2C Zár, kapu és sorompó vezérlő. Használati utasítás Magyar

Procontrol RSC-24B. Kezelői, telepítői kézikönyv. RS232 / RS485 adatkonverter. Verzió:

I+K technológiák. Buszrendszerek Dr. Aradi Szilárd

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Programozható vezérlő rendszerek KOMMUNIKÁCIÓS HÁLÓZATOK 2.

Közlekedés gépjárművek elektronikája, diagnosztikája. Mikroprocesszoros technika. Memóriák, címek, alapáramkörök. A programozás alapjai

ELŐADÁS SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA

1 Rendszer alapok. 1.1 Alapfogalmak

PCI Express szabvány

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

SL7000. Intelligens kereskedelmi és ipari fogyasztásmérő

Konfigurálható digitális műszerfal Bosch MonoMotronic befecskendezőrendszerhez

LPT illesztőkártya. Beüzemelési útmutató

Pattantyús-Á. Géza Ipari Szakközépiskola és ÁMK. OM azonosító: HELYI TANTERV Elektrotechnika-elektronika SZAKMACSOPORT

Új módszerek egyfázisú aszinkron motorok jelfeldolgozó kontrolleres vezérléséhez

PROGRAMOZHATÓ LOGIKAI VEZÉRLİK

MIKRO MÉRETŰ PILÓTA NÉLKÜLI REPÜLŐK REPÜLÉSBIZTONSÁGI KÉRDÉSEI ELEKTROMOS TÁPELLÁTÁS BIZTONSÁGA

Digitális bemenetek: 2 darab 0-5V jelszintű digitális bemenet Pl. nyitásérzékelők, risztóközpontok, mozgásérzékelők, átjelzők, stb.

SEAGUARD. Integrált Biztonság-felügyeleti Rendszer

Lokális hálózatok. A lokális hálózat felépítése. Logikai felépítés

ICN 2005 ConferControl

Rendszertervezés házi feladat

1. Egy analóg vagy digitális multiméter segítségével hogyan dönthető el egy UTP kábel két végén lévő csatlakozók bekötésének helyessége?

Zebra XiIII sorozat. Felhasználói kézikönyv

melléklet. Fogyasztásmérők, összegzők

Gyártmányismertető M304 szivattyúvédő modulhoz.

I. A légfékrendszer időszakos vizsgálatához alkalmazható mérő-adatgyűjtő berendezés műszaki

DGSZV-EP DIGITÁLIS GALVANIKUS SZAKASZVÉDELEM. Alkalmazási terület

SW4CP Hálózati teljesítménykapcsoló. Használati utasítás Magyar

Használati utasítás. Egyesített adagolófúvókás dízel befecskendező rendszerek vizsgálókészlete

S7021 ADATGYŰJTŐ. 2-csatornás adatgyűjtő számláló és bináris bemenettel. Kezelési leírás

Topográfia 7. Topográfiai felmérési technológiák I. Mélykúti, Gábor

2013. augusztus Gépjármű villamosságtan Autóelektronikai műszerész pótvizsga feladatok. (14.A.) (teljes egészében kiadható a pótvizsgázónak)

BioEntry TM Telepítési Útmutató

Tájékoztató. Használható segédeszköz: - Értékelési skála: A javítási-értékelési útmutatótól eltérő helyes megoldásokat is el kell fogadni.

2. Digitális hálózatok...60

TRP-C24 Felhasználói Kézikönyv

Járműfedélzeti kommunikáció. Controller Area Network Dr. Aradi Szilárd

WV1W Vízelzáró vezérlő. Használati utasítás Magyar

XXX Szakközépiskola. OM azonosító: Logo, címer. HELYI TANTERV (tervezet 2007) Elektrotechnika-elektronika SZAKMACSOPORT. Elektronikai technikus..

A TANTÁRGY ADATLAPJA

IRIS.base beépítési útmutató ON.GUARD felhasználók részére

Bevitel-Kivitel. Eddig a számítógép agyáról volt szó. Szükség van eszközökre. Processzusok, memória, stb

Whead 3.0. Szélsebesség és széliránymérő illesztő távadó. Előzetes

H - I - J. frekvenciaváltó gépkönyv

GSM Gate Control Pro 20 GSM Gate Control Pro 1000

haladhatja meg a 600 V-ot. Az egyes mérési tartományok kerámikus nagyteljesítményű biztosítókkal

IRIS.base beépítési útmutató ON.GUARD felhasználók részére

K_EITS8, Multichannel Impedance Meter K_EITS8, nyolc csatornás elektromos impedancia mérő berendezés

Számítógép Architektúrák

Vezeték nélküli, elosztott rendszerű jelzőlámpás forgalomirányítás

FELNŐTTKÉPZÉSI MINŐSÉGIRÁNYÍTÁSI KÉZIKÖNYV

Rendszerfelügyelet Logikai partíciók

PROGRAMOZÓI KÉZIKÖNYV

ERserver. iseries. Szolgáltatási minőség

Számlakészítés a SPRINT programmal

M-Bus Master MultiPort 250D/L

Bevezetés. Személygépjárművek. Fedélzeti elektromos rendszer. Hagyományos 12V-os rendszerek

B-TEL99 Kétcsatornás telefonhívó

Mielıtt használná termékünket Az eltérı környezeti körülmény elektromos áramütést, tüzet, hibás mőködést vagy. okozhat.

Szakdolgozat GYIK. Mi az a vázlat?

Beágyazott rendszerek analízise laboratórium

ACE6000. Intelligens kereskedelmi és ipari fogyasztásmérő

VHR-23 Regisztráló műszer Felhasználói leírás

V. FEJEZET MÓDOSÍTOTT MŰSZAKI LEÍRÁS

Magyar. APC Smart-UPS SC. 1000/1500 VA 110/120/230 Vac. Toronykivitelű vagy 2U magas, RACK-be szerelhető szünetmentes tápegységhez

Abszolút forgójeladók Kimenetek

UEP 01/1. Unicontact Embedded PSTN modem. Kezelési és karbantartási útmutató. Dok. No. UEP M 2007/08

FPGA áramkörök alkalmazásainak vizsgálata

1. Ismertesse az átviteltechnikai mérőadók szolgáltatásait!

NAPSUGÁR ÓVODA SONNENSTRAHL KINDERGARTEN

KING GATES ROLLS 650 ÉS 1200 PROGRAMOZÁS FIGYELMEZTETÉSEK

Az 5-2. ábra két folyamatos jel (A és B) azonos gyakoriságú mintavételezését mutatja ábra

5.2. Benzinbefecskendező és integrált motorirányító rendszerek (Második rész L-Jetronic rendszer I.)

Vigilec Mono. Egyfázisú szivattyú vezérlő és védelmi doboz. I. A csavarok eltávolítása után csúsztassuk felfelé az előlapot a felső állásba (A ábra)

HASZNÁLATI ÚTMUTATÓ HORDOZHATÓ INDÍTÓ BERENDEZÉS, KOMPRESSZORRAL KM0505 GARANCIALEVÉL

Méréstechnika. 3. Mérőműszerek csoportosítása, Elektromechanikus műszerek általános felépítése, jellemzőik.

DREHMO Standard hajtások gépkönyve

Átírás:

CAN BUSZ ÁLTALÁNOS ISMERTETŐ 1. KIADÁS 2009 Szerző: Somlyai László Kandó Kálmán Villamosmérnöki Kar, IV. évfolyam oldal 1

Tartalomjegyzék 1. Bevezetés... 3 2. CAN busz... 4 2.1. Kialakulása... 4 2.2. Fizikai réteg... 7 2.3. Az üzenetek keretformátumai... 11 2.4. A CAN üzenetek fajtái... 12 2.5. Arbitráció... 13 2.6. A CAN busz felhasználási területei... 15 3. CAN kommunikáció... 16 4. Firmware... 17 4.1. Firmware fejlesztés... 17 4.2. Inicializálás... 18 4.3. CAN... 20 5. Irodalomjegyzék... 23 6. Mellékletek... 24 M4.a melléklet: MCP2551 specifikáció... 25 M4.b melléklet: MCP2551, DC karakterisztika... 26 M4.c melléklet: MCP2551, DC karakterisztika... 27 oldal 2

1. Bevezetés A dokumentáció célja, hogy egy általános leírás adjak a CAN buszról. A dokumentum elkészítésének alapját a szakdolgozatom (CAN buszra csatlakoztatható kijelző 32 bites mikrokontrollerrel; 2009-BMF-KVK) szolgáltatta. Célom a dolgozattal, hogy segítséget nyújtsak azoknak, akik a CAN busszal szeretnének foglalkozni. Az általam összegyűjtött adatok jó kiindulási alapként szolgálhatnak. A dolgozat elején a CAN busz általános ismertetése történik az interneten fellelhető forrásokból összegyűjtve. A dokumentum még fejlesztés alatt áll. Jelen verzió, az 1. kiadás. Később, a CAN busz elektronikai és szoftveres vonatkozásaival bővítem a leírást. oldal 3

CAN busz 1.1. Kialakulása Napjainkban sok jármű tartalmaz különböző elektronikus vezérlőegységeket (ECU 1 ). Az autóipar fejlődésével egyre több elektronikus rendszer került az autókba. Ezek egyrészt a felhasználói igényeket elégítik ki, így például az elektromos ablakemelők, multimédiás eszközök. Másrészt környezetvédelmi (az autó káros anyag kibocsájtás és az üzemanyag fogyasztásának a csökkentéséért többek közt az ECU 2 felelős) és biztonsági célokat (ABS 3, ASC 4, ACU 5 ) szolgálnak. Az eszközök bonyolultsága elengedhetetlenné teszi a kommunikációt közöttük. Ilyen egység például az ASC, itt a motor időzítése és a karburátor működik együtt, hogy a meghajtott kerék megcsúszása esetén, csökkenjen a meghajtó nyomaték. Egy másik példa a különálló egységek összehangolására az elektromos sebességváltó. A sebességváltás a gyújtás precíz vezérlésével állítható. Eleinte a különálló alrendszerek dedikált vonalakon tartották egymással a kapcsolatot. Így minden vezérlő, külön vezetékeket kapott az egyes funkciókhoz. Ez azonban az egyre összetettebbé váló rendszerek esetén egyre nagyobb problémát jelentett. Ezeket a vezetékkötegeket kábelkorbácsoknak nevezik. Jelentősen megnehezíti a szerelést és igen magas az ára. Valamint egy idő után az összeköttetések száma már tovább nem növelhető. Manapság egy autóban 50-70 ECU is található. Egy érdekes adat, hogy egy mai átlagos autó vezetéseinek hossza 2-2,5 km és 100 Kg súlyú is lehet, illetve lehetne. 1 ECU: Electronic Control Unit, azaz elektronikus vezérlő egység. Az autóiparban használt autóelektronikák összefoglaló neve. 2 ECU: Engine Control Unit, más néven a motorvezérlő elektronika. 3 ABS: Anti-lock Braking System, a blokkolásgátló fékrendszer vezérlő elektronikája. A blokkolásgátló a kerekek blokkolását, illetve az útfelületen való csúszását hivatott megelőzni. 4 ASC: Automatic Stability Control, vonóerő szabályozás. Az ASC megelőzi a hajtott kerekek kipörgését és gondoskodik a lehető legjobb vonóerőről és stabilitásról, miközben az autó az úton van. 5 ACU: Airbag Control Unit, más néven a légzsák vezérlő elektronika. Az ő feladata a légzsákok felfújása baleset esetén. oldal 4

A régi kommunikációs módok kiváltására dolgozta ki a 80 -as években a Robert Bosch Kft. a CAN buszt (Controller Area Network). A kábelkorbácsok kiváltását egy soros kommunikációs csatorna alkalmazása oldotta meg. A rendszer lényege, hogy egy kétvezetékes kommunikációs csatornán helyezkednek el, a különböző elektronikus vezérlőegységek (0.1. ábra). Az első CAN buszvezérlő chipet az Intel és a Philips készítette el 1987-ben. Ez a vezérlő még a CAN 1.0-ás szabványt ismerte. A ma is használt CAN 2.0-ás szabványt a Bosch 1991-ben publikálta. A CAN busz megfelelő hibadetektálással és zavarvédelemmel rendelkezik, valamint a nagy adatátviteli (akár 1 Mbit/sec) sebesség tette alkalmassá az autóipari alkalmazásra. A magas megbízhatóság elengedhetetlen, hiszen ezen a csatornán helyezkednek el olyan rendszerek, mint az ABS, ASC, amiknek életvédelmi szempontból elengedhetetlen a megbízható működésük. A nagy adatforgalom és a biztonság növelése miatt már nem egy, hanem legalább 2 különálló CAN busz található a gépjárművekben. Az egyik általában a nagysebességű (1 Mbit/sec) vonal, ezen kapnak helyet a motorvezérlő elektronika, ABS, ASC. A másik egy kis sebességű busz (125 Kbit/sec), itt a nem létfontosságú eszközök helyezkednek el. Ilyen például a központi zár, elektromos ablakemelő és az ablaktörlő. 0.1. ábra - CAN busz a gépjárműben [6] oldal 5

A CAN busz mellet 1990-ben egy másik kommunikációs protokoll került kifejlesztésre az európai autógyártók által, a LIN busz (Local Interconnect Network). Ennek jóval kisebb az adatátviteli sebessége (19,2 Kbit/sec) valamint a megbízhatósága is kisebb. Nagy előnye abban rejlik, hogy igen olcsó. Általában a CAN hálózatok alhálózataként használják. A magasabb prioritású, fontos üzenetek a CAN buszon közlekednek, míg a LIN buszt a kisebb feladatok megoldására használják, ilyen lehet például az elektromos ablakemelés és ablaktörlés. Az egyre több elektronikával felszerelt járművek miatt a CAN busz is kezdi kinőni magát. A CAN kiváltására fejlesztették ki a FlexRay-t, ami 2007-ben látott napvilágot. Az adatátviteli sebessége 20 Mbit/sec. Az első FlexRay-el felszerelt autó 2007-ben gurult ki a BMW gyárból. oldal 6

1.2. Fizikai réteg A fizikai réteg feladata a bitek hibamentes továbbítása. Ezen a szinten van megfogalmazva a vezetékezés és a bitek továbbítási formája. A CAN hálózat szimmetrikus jelátvitelt alkalmaz. A szimmetrikus jelátvitelhez két vonalra van szükség, ami egy sodrott érpáron történik. Ez lehet árnyékolt, vagy árnyékolatlan érpár. A két vezetéket CAN_H-nak és CAN_L-nek nevezik. Erre az érpárra csatlakoztathatóak az eszközök (0.2. ábra). Előnye a buszrendszernek, hogy könnyedén csatolhatóak rá további eszközök, és el is távolíthatunk róla állomásokat. Két ISO szabvány rögzíti a CAN-t. Ezek között a különbség a fizikai rétegben jelentkezik. Az ISO 11898 a nagysebességű (akár 1 Mbit/sec) CAN alkalmazásokat foglalja magában, míg az ISO 11519 az alacsony sebességűeket (125 Kbit/sec). 0.2. ábra - CAN hálózat A CAN busz az NRZ (Non-Returnto-Zero) [3] kódolást alkalmazza. A kódolás lényege, hogy csak akkor van átmenet a bitidő kezdetén, ha az előzőzőtől különböző bit érkezik (0.3. ábra). Az NRZ kódolásból nem lehet kinyerni az órajelet, ezért szükséges minden, a kommunikációban résztvevő eszköznek szinkronizálódnia a vételhez. 0.3. ábra - NRZ kódolás [3] oldal 7

A szinkronizálásnak kétféle fajtája van. Az egyik esetben az üzenet első bitjére történik a szinkronizálás, ez a SOF bit (Start of Frame). A busz nyugalmi helyzetben magas szinten van. A SOF bit kezdetekor egy lefutó él generálódik. Erre az élre történik az első szinkronizáció. Ezt Hard Syncronization -nak nevezik. A szinkronizáció második variációja előtt meg kell nézni egy fontos dolgot. Ez nem más, mint a Staff Bits, vagy más néven a beszúrt bit. Amikor létrejött az adó és a vevő eszköz közötti szinkron, az idő múlásával egyre jobban elcsúsznak egymástól. Hiszen saját órajel forrásuk van az eszközöknek és ezek sebessége, még ha igen kis mértékben is, de eltér egymástól. Egy 8 bites aszinkron adatátvitelnél, mint például az RS232, ez nem jelent gondot, hiszen a kevés bitidő alatt nem történik nagy szinkronelcsúszás. A CAN csomagok esetében két probléma merül fel. Az egyik a bitek nagy számából (akár 100 bit egy csomagban) és az NRZ kódolásból adódó bitátmenet hiánya. Abban az esetben, ha nagyon sok megegyező bit követi egymást, nem történik jelszint változás a buszon. Az alábbi ábrán (0.4. ábra) látható egy adat csomag, majd alatta a CAN busz által átalakított üzenet. A CAN szabvány kimondja, ha 5 megegyező bit követi egymást, akkor egy ellentétes bitértéket kell beszúrni. De hogy erre miért is van szükség? 0.4. ábra Beszúrt bitek [4] oldal 8

Erre a válasz az újra szinkronizáció. Lényege, hogy minden recessziv 1 - domináns 2 bitátmenetnél vevők újra szinkronizálódnak az adáshoz (0.5. ábra). Ezzel csökkentve az aszinkron kommunikációból eredő szinkronizáció problémáját. 0.5. ábra Újra szinkronizálás [4] A CAN vezérlő TTL jelszinten kommunikál a buszmeghajtó áramkörrel. A kontroller a CAN_TX és CAN_RX vonalakon küldi és fogadja a biteket. A buszmeghajtó feladata, hogy előállítsa a csavart érpárra jutó szimmetrikus jelértéket. A buszon kétféle érték lehet, az egyik a domináns 0, a másik a recesszív 1 bitérték. Mint az alábbi ábrán (0.6. ábra) is látható a CAN_H és a CAN_L vonalak feszültség különbsége adja meg, hogy a bit domináns, vagy recesszív értékű. A következő táblázat mutatja a jelszintekhez tartozó feszültségértékeket. Az itt rögzített értékek az ISO 11898 által megfogalmazott nagysebességű CAN alkalmazásokra értendők. Bitérték Feszültség Tűrés domináns 0 0V max. 0,5V recesszív 1 2V min. 0,9V 0.6. ábra - CAN busz jelszintek A csavart érpár és a szimmetrikus jelátvitel nagy előnye, az elektromágneses zavarással szembeni ellenállósága. Mint azt a 0.7. ábra is szemlélteti, ha egy 1 A recesszív bit a CAN buszon a logikai 1 -nek felel meg. 2 A domináns bit a CAN buszon a logikai 0 -nak felel meg és magasabb prioritással rendelkezik. oldal 9

elektromágneses impulzus éri a buszt, az mind a CAN_H és a CAN_L vonalon megjelenik, azonos előjellel. Mivel a két vonal különbsége adja meg a jelszintet, ez a zavarás kiesik. Az Udiff feszültség változatlan marad. Ez az egyik fontos tulajdonsága a busznak, ami alkalmassá tette az autókban való alkalmazásra. 0.7. ábra - Elektromágneses zavarás A fizikai rétegnél még egy fontos dolgot szükséges tárgyalni, ez nem más, mint a vezetékezés. A CAN szabvány kimondja, hogy megadott adatátviteli sebesség esetén mi a maximálisan használható vezetékhossz. Ezen kívül a lezáró ellenállások értékét is táblázat rögzíti (0.1. táblázat). Távolság Lezáró ellenállás Max. baud rate 0-40 m 124 Ω 1 Mbit/s 40-300 m 127 Ω 500 Kbit/s 300-600 m 150 300 Ω 100 Kbit/s 600-1000 m 150 300 Ω 50 Kbit/s 0.1. táblázat - CAN busz, vezetékek A maximálisan megadott kábelhossz értékeknél fontos szerepet játszott a jelterjedési idő. Az adó által kiadott domináns vagy recesszív bit, különböző késésekkel érkezik meg a vevőhöz, a jelterjedési idő miatt. Fontos kritérium a CAN busz esetében, hogy a kialakuló legnagyobb időkésés nem érheti el a mindenkori bitidő felét. oldal 10

1.3. Az üzenetek keretformátumai A CAN buszra kerülő üzenetek meghatározott keretformátumot kapnak. Az első változata a CAN 1.0 volt, ezt ma már nem használják. A ma használatos kétféle üzenettípus a CAN 2.0A és a CAN 2.0B. Mint azt a 0.8. ábra is mutatja, az eltérés a keretformátumok között az arbitrációs 1 részben van. Ez tulajdonképpen a csomag azonosítója vagy címe. A CAN 2.0A formátumnál 11 bit azonosít egy csomagot. Ezt Standard Frame -nek hívják. Ilyenkor 2048 féle cím osztható ki az üzeneteknek. Abban az esetben, ha ez kevésnek bizonyulna egy alkalmazásnál, akkor lehet használni a CAN 2.0B-t. Ilyenkor a 11 bit mellett további 18 bit áll a rendelkezésre a cím megadására. Ezt hívják Extended Fame -nek. Itt az összesen 29 bit segítségével 536870912 db cím adható meg. 0.8. ábra - CAN keretformátumok [4] Az arbitrációs részt leszámítva látható, hogy az üzenetformák nagyjából megegyeznek. Általánosságban elmondható egy keretről, hogy a SOF (Start of Frame) bittel kezdődik. Majd ezután következik az arbitrációs rész, vagyis az üzenet azonosítója (ID-je). Majd a RTR (Remote Transmission Request) bit következik. Ha ennek a bitnek az értéke 1, akkor adáskérést jelent egy másik állomástól, azonban ha 1 Arbitráció: A CAN üzenet elejét, az üzenet címét jelenti. Az üzenet küldésekor ebben a részben dől el több adó között kinek lesz joga az adáshoz. Vagyis versengés a buszért. oldal 11

0, akkor adatküldés van. A standard és kiterjesztett formátumú üzenetet az IDE (Identifier Extension) bit különbözteti meg. Melynek értéke 0 a standard formátumú keret esetében, míg értéke 1, ha kiterjesztett formátumú a keret. Az ezt követő szakasz, a vezérlő rész (CTRL). Az IDE bit az általános keret esetében itt kapott helyet. A DLC (Data Length Code) adja meg az üzenetben található adatbájtok számát. Ennek az értéke minimum nulla és maximum nyolc lehet. Ebből a 4 bites részből fogja tudni a vevő, hogy hány bájt adat fog érkezni. A következő maximum 64 biten találhatóak az adatbájtok. Itt legfeljebb 8 bájtnyi hasznos információ tárolható. Ezután következik egy 15 bites CRC (Cyclic Redundancy Code) mező. Ez a kód az üzenet hibamentes célba juttatását segíti. Az adó állomás az adatbájtokból matematikai műveletek segítségével előállít egy 15 bites CRC kódot, majd az üzenetbe illeszti. A vevő egység ezt a kódot ugyanazokkal a matematikai műveletekkel visszafejti, és ha megegyezik az adatbájtokkal, akkor tudjuk az üzenetről, hogy az átvitel során nem szenvedett sérülést. A CRC mező végén található az ACK (Acknowledge) bit. Ha valamelyik vevő, a CRC alapján helyesnek találta az üzenetet, akkor a vevő ennek a bitnek a helyét domináns értékkel írja felül, így az adó látja, hogy az üzenet sikeresen célba ért. Amennyiben egy állomás se írja felül ezt a bitet, vagyis recesszív értéket olvas vissza, abban az esetben az adó átvált hibakereső üzemmódba. A keret végén egy 7 bites EOF (End of Frame) szakasz jelzi az üzenet végét. Minden bitjének értéke 1. Itt nem érvényes az 5 bitenkénti ellentétes bit beszúrása, ha nem történt változás a bitek értékében. 1.4. A CAN üzenetek fajtái A CAN buszon négy féle üzenetet különböztetünk meg. Ezek az üzenetek szállíthatnak adatot, vagy jelezhetnek hibát, esetleg adatot kérhetnek. Data Frame (Adat keret): Ez a csomag adatot juttat el az adótól a veő(k)ig. A már korábban tárgyalt bitek (0.8. ábra) közül a RTR bit domináns értéke jelzi egy üzenet Data Frame mivoltát. oldal 12

Remote Frame (Adat kérő keret): Az adatkérő keret lényege, hogy egy eszköz kezdeményezhesse, hogy egy másik állomás üzenetet küldjön. Fontos hogy az adatkérő keret azonosítójával megegyező azonosítójú választ kell küldenie. A Remote Frame -et az RTR bit recesszív értéke jelzi. Error Frame (Hibakezelő keret): A keret a segítségével jelezhetik vissza az állomások, ha hibát észleltek a fogadott adatban. Overload Frame (Túlcsordulást jelző keret): Ha egy csomópont nem tud több adatot fogadni pillanatnyilag, akkor ezzel az üzenettel jelezheti a hálózat fele, hogy késleltessék a neki küldött üzeneteket. 1.5. Arbitráció Az előző pontokban ismertetésre került a CAN busz fizikai rétege és az üzenetek formátumai. Mint korábban szó esett róla kétféle keretet használ a CAN. Az egyik a Standard Frame, ami 11 bites azonosítót tartalmaz, míg a másik az Extended Frame, ami 29 bites üzenetazonosítóval rendelkezik. A CAN busz esetében nem az állomásoknak van címe, hanem az üzeneteknek. Ha egy csomópont üzenetet akar küldeni, előtte meg kell szereznie a buszhozzáférési jogot. Azt, hogyha több eszköz egyszerre szeretne adni, ki kapja meg az adási jogot elsőként, az arbitrációs rész határozza meg. Két bitérték van, a domináns és a recesszív. A 0.9. ábra szemléltet egy olyan esetet mikor 3 csomópont szeretne egyszerre adni. A felső 3 idődiagram az egyes állomások kiküldött üzenete. Az alsó diagram pedig a CAN buszon megjelenő üzenet. Az üzenetküldés kezdetén mind a 3 állomás elkezdi az adást. Sorra küldik ki a biteket, majd visszaolvassák a buszt. oldal 13

0.9. ábra - Arbitráció A busz hozzáférési jog a döntési mezőben dől el. Addig, amíg mind a 3 állomás megegyező biteket küld a buszra, nem történik semmi, mind adó módban vannak. Az 5. bitnél történik az első fontos esemény. A második állomás recesszív, míg a többi domináns bitet küldött. A CAN buszon a domináns bit fog megjelenni, hiszen ez rendelkezik nagyobb prioritással. Mivel az eszköz vissza is olvassa a buszt, tudni fogja, hogy egy, vagy több állomás domináns bitet küldött, így ő elveszti az adási jogot, és átvált vételi módba. Majd a 2. bitnél az első állomás is elveszti az adási jogot. Ezzel a módszerrel nem alakul ki ütközés az üzenet küldésekor. Amelyik eszköz elveszti az adási jogot, átvált vételre és megkapja az aktuális csomagot. Összegezve tehát, annak az üzenetnek van nagyobb prioritása a buszon, aminek az azonosító ID-je kisebb értékű. oldal 14

1.6. A CAN busz felhasználási területei A CAN buszt elsősorban az autóipar használja. Hiszen eredetileg gépjárművekbe fejlesztették ki. Az autóipari alkalmazása megkövetelte a megbízható működést, gyorsaságot, magas zavarvédelmet. Manapság azonban egyre több helyen kezdik alkalmazni a megbízható működése miatt (0.10. ábra). 0.10. ábra - CAN busz alkalmazási területei [4] A CAN busz elterjed kommunikációs protokollnak számít, az ipari folyamatautomatizálásban és az orvostechnikában, tömegközlekedésben, épületautomatizálásban, robotikában és még számos helyen. oldal 15

2. CAN kommunikáció A mikrokontrollerben található 2 db CAN vezérlő önmagában nem elég a buszmeghajtáshoz. Szükséges egy vonali illesztő elhelyezése a processzor és a CAN busz között. A mikrokontroller kimenete (CANRX, CANTX) 0-3,3V-os jelszinteket ad ki. A CAN busz vonalmeghajtó ezeket a jeleket illeszti a szimmetrikus jelszinteket tartalmazó buszra. A kapcsolásba az MCP2551 nevű vonali illesztő került. Az illesztő adatlapjából néhány oldal az M4-es mellékletben látható. Az M4.a melléklet tartalmazza az IC paramétereit. Az illesztő 1Mbit/sec adatátvitelre képes és az ISO- 11989-es CAN szabványt támogatja. A kapcsolási rajz elkészítésénél az MCP2551-nek szükséges 5V-os tápfeszültségről kell gondoskodni, valamint a felfutási időt állító ellenállást (Rcanx) kell elhelyezni (2.1. ábra). Mivel a processzor 3,3V, és az illesztő 5V-os tápfeszültséget kap, elvileg szükséges lenne egy jelszint illesztés. Azonban a processzort támogatja a TTL jelszinteket és az MCP2551 a 3,3V-os bemenetet. A processzor bemenete elviseli az 5V-os jelszintet, és az illesztő már 2V-tól logikai 1 -nek veszi a jelet. Ez a M4.c mellékletben látható. 2.1. ábra - CAN busz vonalillesztők A kapcsolási rajzon látható kondenzátoroknak zavarszűrési szerepe van. Az IC, a kimenet változásakor megrántja a tápfeszültséget. Ezeket az ingadozásokat szűrik a kondenzátorok. Végül az RcanxCLS ellenállás, a CAN busz lezárásáról gondoskodik. Ezt csak akkor kell beforrasztani, ha az eszköz végponton kapott helyet. oldal 16

3. Firmware Ebben a fejezetben a mikrokontrolleren futó szoftver tervezése szerepel. Ez a kód működteti az egyes perifériákat, vezérli a kommunikációkat. A következőkben bemutatásra kerülnek az egyes vezérlőmodulok működése, a róluk készült folyamatábrák segítségével. 3.1. Firmware fejlesztés A mikrokontroller programkódja C nyelven készül. Saját modulok lettek tervezve a perifériák működtetéséhez. A modulok elkészítésénél az AT91SAM7A3 adatlapja [7] nyújtott segítséget. Az elkészült modulok fordítása a GCC fordítóprogrammal [8] történt. A szoftver felépítése moduláris, ezek a függvénygyűjtemények egy-egy nagyobb feladattal foglalkoznak. Az adott fájlon belül minden szükséges függvény megtalálható, ami ahhoz szükséges, hogy a modul el tudja látni a feladatát. Az alábbi 3.1. ábra szemléleti a modulok egymással való kapcsoltat. A legfelső szinten helyezkedik el a main.c fájl, ez alá sorakoznak fel a különböző funkciókat ellátó részek. A hardverszinttel a legalsó (spi.c, can.c, usart.c, uif.c) modulok tartják a kapcsolatot. 3.1. ábra - Modulok oldal 17

3.2. Inicializálás Az inicializálás függvény, a main.c modulban található. Ez a funkció csak egyszer, a processzor indítása után fut le. Feladata a processzor konfigurálása, az egyes perifériák élesztése. Az inicializálás blokkvázlata látható az alábbi ábrán (3.2. ábra), amit az Init() függvény valósít meg. 3.2. ábra - Inicializálás Első lépésként a mikrokontroller perifériáinak és IO portjainak konfigurálása történik. A perifériák beállítására segítséget nyújt az AT91SAM73A adatlapjában található példa a 213.oldalon [7]. Itt példákat hoznak fel kimeneti portok konfigurálására, például a port IO, periféria A vagy B használatára. Az IO inicializálásnál a port irányok beállítása történik. A következő részekben az SPI, az USART, a CAN és az LCD inicializálások történnek. Itt az Init() függvény csak meghívja a perifériakezelő modulok konfigurációs részét. Ezeknek a függvényeknek paraméterátadással leget megadni a periféria adatait, oldal 18

mint például a kommunikációs sebesség (baud rate), CAN esetében szűrőket, maszkokat, valamint a FIFO-k méretét is. A TIMER0 inicializálás azért szükséges, mert ez ad egy rendszeridőzítést. Vannak folyamatok, amiknek meghatározott időben újra és újra le kell zajlaniuk, ilyenkor az időzítő által generált megszakítás indítja el őket. A kimeneti kommunikációs FIFO-k ellenőrzése lehet egy példa. Hiszen bizonyos időnként ellenőrizni kell, nincsen e küldendő adat egy pufferben. Az inicializálás legvégén még a megszakítások engedélyezését el kell végezni. oldal 19

3.3. CAN Az alábbi ábrán látható a CAN modul kommunikációért felelős része (7.5. ábra). Ha egy folyamat küldeni szeretne ünetet, a CAN buszra, akkor azt a push() (3.5. ábra) függvénnyel teheti meg. A CAN kezelőnél alkalmazott FIFO-k tulajdonképpen kétdimenziós struktúra tömbök. A struktúra felépítése: typedef struct { unsigned char adr3; unsigned char adr2; unsigned char adr1; unsigned char adr0; unsigned char dlc; unsigned char data[8]; }mob; //üzenet címe //adatbájtok száma //8 bájt adat Egy ilyen típusú struktúrát kell átadni a FIFO-nak. Az adat elvétel a pop() (3.6. ábra) függvény segítségével történik. Ha a függvény visszatérési értéke nulla, akkor nincs beérkezett adat, egyébként egy struktúra címe, ami CAN csomag típusú. 3.3. ábra - CAN kommunikáció oldal 20

Az AT91SAM7A3 mikrokontroller CAN modulja (3.4. ábra) 16 db úgynevezett MOB-ot (Message Object) tartalmaz. Tulajdonképpen postaládák, amikbe a küldendő, vagy a vett adat érkezik. Ezek a MOB-ok tartalmaznak a vezérléshez szükséges változókat, és egy CAN csomag tárolásához szükséges megfelelő regisztereket. Egy MOB-ot lehet adó, vagy vevő módban használni. Az alábbi ábrán láthatók a MOB-ok, amiket MBx-el jelöltek. A vezérlő ezekből a MOB-okból prioritási sorrendben veszi ki az adatokat és kerül a CAN Protokol Controller -be, ami elküldi a buszra. A beérkező üzenet szintén egy postafiókba érkezik, majd egy megszakítás generálódik, ahol le kell kezelni az üzenetet, célszerűen a bemeneti FIFO-ba töltéssel. 3.4. ábra - Az AT91SAM7A3 CAN vezérlője A vezérlő függvény feladata, hogy figyelje a kimeneti puffert. Ha van a FIFO-ban adat, és szabad a CAN busz, akkor a soron következő elemet másolja egy MOB-ba. Ezután már a mikrokontroller hardvere a felelős az üzenet továbbításáért. oldal 21

3.5. ábra - FIFO írás 3.6. ábra - FIFO olvasás oldal 22

4. Irodalomjegyzék [1] BOSCH - CAN Specification version 2.0: http://www.semiconductors.bosch.de/pdf/can2spec.pdf [2] CAN busz - http://en.wikipedia.org/wiki/controller-area_network [3] NRZ - http://en.wikipedia.org/wiki/non-return-to-zero [4] ATMEL - CAN tutorial: http://www.efo.ru/ftp/pub/atmel/_c51_and_avr_with_can/can_cd_ju ne_2005/pdf/can_tutorial.pdf [5] http://www.can-cia.de/ [6] http://www.semiconductors.bosch.de/en/20/can/index.asp [7] AT91SAM7A3 adatlap: http://www.atmel.com/dyn/resources/prod_documents/doc6042.pdf [8] GCC: http://gcc.gnu.org/ oldal 23

5. Mellékletek oldal 24

M4.a melléklet: MCP2551 specifikáció oldal 25

M4.b melléklet: MCP2551, DC karakterisztika oldal 26

M4.c melléklet: MCP2551, DC karakterisztika oldal 27