Sunteți pe pagina 1din 35

MICROCONTROLERE

Laboratorul nr. 8
- Controller Area Network (CAN) - MCBSTR7x I Scopul
Scopul acestui laborator este acela de: a prezenta funcionarea controlerului de pe microcontrolerul STR71x; a prezenta facilitile funcionale; a programa i utiliza CAN-ul n contextul unor aplicaii date.

II Introducere
C_CAN este constituit din nucleul CAN, RAM-ul mesajelor, tratarea mesajelor, registrele de control i interfaa modulului (se face referire la Figura IV-1) Partea central a CAN realizeaz comunicaie n conformitate cu versiunea 2.0 a protocolului CAN, partea A i B. Viteza de transmisie a biilor poate fi programat la valori de pn la 1MBit/s. Pentru conectarea nivelului/stratului fizic, este necesar ca hardware suplimentar un emitor-receptor. Pentru comunicaia cu reeaua CAN, trebuie configurate Obiectele de tip mesajelor. Obiectele de tip Mesaj i Mtile Identificatorului pentru filtrarea acceptrii mesajelor primite sunt stocate n RAM-ul de mesaje. Toate funciile cu privire la tratarea mesajelor sunt implementate de ctre un handler de mesaje. Aceste funcii includ filtrarea de acceptare, transferul mesajelor ntre nucleul CAN i RAM-ul de nesaje, tratarea cererilor de transmisie, precum i generarea ntreruperilor modulului. Setul de regitrii pentru C_CAN poate fi accesat direct de ctre CPU prin interfaa modulului. Aceti regitri sunt utilizai pentru a controla/configura nucleul CAN i Tratarea Mesajelor, precum i accesul la RAM-ul mesajelor.

III Caracteristici principale


Suport versiunea 2.0 a protocolului CAN, partea A i B; Vitezele de bit de pn la 1MBit/s; 32 obiecte de tip mesaj; Fiecare obiect de tip mesaj are propria masc a identificatorului; Mod FIFO programabil (concatenarea obiectelor de tip mesaj); ntrerupere ce poate fi mascat; Dezactiveaz retransmisia automat pentru aplicaiile de lucru n modul Time Teggered; Modul de conectare n bucl pentru operaiile de auto-testare; Dou module de interfa pe 16 bii pentru magistrala APB.

IV Diagrama bloc

-1-

MICROCONTROLERE C_CAN se interfaeaz cu magistrala AMBA APB. Figura IV-1 prezint diagrama bloc pentru C_CAN. Nucleul CAN Conine controller-ul de protocol CAN i registrul de deplasare Rx/Tx. RAM-ul mesajelor Stocheaz obiectele de tip mesaj i mtile identificatorului. Regitrii Toi regitrii sunt utilizai pentru a controla i configura C_CAN. Tratarea (handler-ul) mesajelor Este realizat de automatul cu stri finite ce controleaz transferul de date dintre registrul de deplasare Rx/Tx a nucleului CAN i RAM-ul mesajelor, precum i generarea de ntreruperi, dup cum au fost programate n regitrii de control i configuraie. Interfaa modulului Interfaa modulului ofer interfaa dintre magistrala APB pe 16 bii i regitrii C_CAN.

Figura IV-1. Diagrama bloc a perifericului CAN

V Descriere funcional
V.1 Iniializarea software
Iniializarea software este realizat prin setarea bitului Init n registrul de control CAN, fie prin software sau reset hardware sau prin utilizarea strii Bus_Off. n timp ce este utilizat bitul Init, toate transferurile de mesaj ctre i de la magistrala CAN sunt stopate, iar starea pinului de ieire CAN_TX este regresiv (HIGH). Mecanismele/dispozitivele de contorizare din logica de management a erorii (EML) sunt neschimbate. Setarea bitului Init nu va schimba nici un registru de configuraie. Pentru iniializarea controller-ului CAN, trebuie s se seteze prin software registrul de temporizare al bitului i fiecare obiect de tip mesaj. Dac nu este solicitat un obiect de tip mesaj, bitul corespunztor MsgVal ar trebui ters. n caz contrar, ntregul obiect de tip mesaj trebuie iniializat.

-2-

MICROCONTROLERE Accesul la registrul de temporizare al bitului i la registrul de extensie al demultiplicatorului vitezei de transmitere (BRP) pentru configurarea temporizrii bitului este activat atunci cnd biii Init i Activarea schimbrii configuraiei (CCE) din registrul de control CAN sunt ambii setai. Resetarea bitului Init (doar prin CPU) finalizeaz iniializarea software. Mai trziu, procesorul irului de bii (BSP) (a se vedea Configurarea temporizrii de bit) sincronizeaz el nsui transferul de date la magistrala CAN prin ateptarea apariiei unei secvene de 11 bii consecutivi regresivi ( starea de idle a magistralei) nainte de a lua parte la activitile magistralei i de a ncepe transferul mesajului. Iniializarea obiectelor de tip mesaj este independent de Init i poate fi realizat din mers, dar pentru obiectele de tip mesaj ar trebui configurai toi identificatori particulari sau setai ca fiind invalizi (not valid) nainte ca BSP s nceap transferul de mesaje. Pentru a schimba configuraia unui obiect de tip mesaj, n timpul unei funcionri normale, software-ul trebuie s nceap prin resetarea bitului MsgVal corespunztor. Atunci cnd configurarea este complet, MsgVal este setat din nou.

V.2 Transferul de mesaje CAN


Odat iniializat C_CAN i bitul Init este ters, nucleul C_CAN se autosincronizeaz cu magistrala CAN i ncepe transferul de mesaje. Mesajele primite sunt stocate n obiectele de tip mesaj corecte dac vor trece de filtru de acceptare a mesajelor. ntregul mesaj, incluznd biii de arbitrare, DLC i opt bii de date sunt stocai n obiectul de tip mesaj. Dac este utilizat masca de identificare, biii de arbitrare ce sunt mascai la starea nu conteaz (dont care) pot fi suprascrii n obiectul de tip mesaj. Software-ul poate citi sau scrie mesajul la orice moment de timp prin regitrii de interfa, iar tratarea (hanler-ul) mesajelor va garanta consistena datelor n cazul accesrilor concomitente. Mesajele ce trebuie transmise sunt actualizate prin software-ul aplicaiei. Dac exist un obiect de tip mesaj permanent (biii de arbitrare i control sunt setai n timpul configuraiei) pentru mesaj, doar biii de date sunt actualizai, iar bitul TxRqst cu bitul NewDat sunt setai pentru a ncepe transmisia. Dac sunt atribuite unele mesaje de transmisie aceluiai obiect de tip mesaj (atunci cnd numrul de obiecte de tip mesaj nu este suficient), ntregul obiectul de tip mesaj trebuie configurat nainte de a cere transmisia acestui mesaj. Transmisia oricrui numr de obiecte de tip mesaj poate fi solicitat n acelai timp. Obiectele de tip mesaj sunt transmise consecutiv n conformitate cu prioritatea lor intern. Mesajele pot fi actualizate sau setate la starea de invailde n orice moment, chiar dac cererea de transmisie este nc n ateptare. Datele vechi vor fi ndeprtate atunci cnd un mesaj este actualizat nainte ca transmisia n ateptare s fi nceput. n funcie de configuraia obiectului de tip mesaj, transmisia unui mesaj poate fi solicitat autonom, prin recepia unui cadru rezervat cu un identificator corespunztor.

V.3 Dezactivarea modului de retransmisie automat


n conformitate cu specificaiile CAN (a se vedea ISO11898, Managementul de recuperare), C_CAN ofer mijloace pentru retransmiterea automat a cadrelor ce au pierdut arbitrarea sau au fost perturbate de erori n timpul transmisiei. Serviciul -3-

MICROCONTROLERE transmisiei de cadre nu va fi confirmat ctre utilizator nainte ca transmisia s fie executat cu succes. Acest lucru nseamn c, implicit, retransmisia automat este activat. Poate fi dezactivat pentru a activa C_CAN s lucreze ntr-un mediu CAN cu declanare n timp (TTCAN, a se vedea ISO11898-1). Modul de retransmisie automat dezactivat este activat prin setarea bitului retransmisiei automate dezactivate (DAR) n registrul de control CAN. n acest mod de operare, programatorul trebuie s ia n considerare comportamentul diferit al biilor TxRqst i NewDat n regitrii de control ai buffer-elor de mesaje: Atunci cnd ncepe o transmisie, bitul TxRqst al buffer-ului mesajului respectiv este ters, n timp ce bitul NewDat rmne setat. Atunci cnd o transmisie este executat cu succes, bitul NewDat este ters. Atunci cnd o transmisie eueaz (arbitrare pierdut sau eroare), bitul NewDat rmne setat. Pentru restartarea transmisiei, CPU ar trebui s seteze bitul TxRqst din nou.

V.4 Modul de testare


Modul de testare este introdus prin setarea bitului de test n registrul de control CAN. n modul testare, pot fi scrii biii Tx1, Tx0, LBack, Silent i Basic din Registrul de test. Bitul Rx monitorizeaz starea pinului CAN_RX i din acest motiv poate fi doar citit. Toate funciile registrului de test sunt dezactivate atunci cnd bitul Test este ters. Modul silent Nucleul CAN poate fi setat n modul Silent prin programarea bitului Silent din registrul de test pe valoarea 1. n modul Silent, C_CAN este capabil de a primi cadre de date valide i cadre de control de la distan valide, dar trimite doar biii regresivi la magistrala CAN i nu poate ncepe o transmisie. Dac i se cere nucleului CAN s trimit un bit dominat (bitul ACK, Cadre de erori), bitul este redirecionat intern, astfel nct nucleul CAN va monitoriza bitul semnificativ, dei magistrala CAN poate rmne n starea regresiv. Modul Silent poate fi utilizat n analizarea traficului la magistrala CAN, fr afectarea acestuia de transmisia biilor semnificativi/dominani. Figura V-1 prezint conexiunea semnalelor CAN_TX i CAN_RX la nucleul CAN n modul Silent.
Figura V-2. Nucleul CAN n modul Silent

n ISO11898-1, modul Silent este denumit Modul de Monitorizare al Magistralei.

-4-

MICROCONTROLERE

Modul de conectare n bucl (loop back) Nucleul CAN poate fi setat n modul Loop Back (conectare n bucl) prin programarea bitului LBACK din registrului de test la valoarea unu. n acest mod, partea central a CAN trateaz mesajele proprii transmise ca fiind mesaje primite i le stocheaz n buffer-ul de primire (dac acestea trec de filtrarea de acceptare). Figura V-2 prezint legtura semnalelor, CAN_TX i CAN_RX, la nucleul CAN pentru modul de conectare n bucl (loop back).
Figura V-3. Nucleul CAN n modul de conectare n bucl

Acest mod este oferit pentru funciile de auto-testare. Pentru a fi independent de stimularea extern, nucleul CAN ignor erorile de confirmare (acknowledge) (bitul regresiv eantionat n slot-ul de confirmare a cadrului de date/ rezervat) n modul de conectare n bucl. n acest mod, partea central a CAN realizeaz un feedback (reacie n bucl nchis) de la ieirea sa Tx la intrarea sa Rx. Mesajele transmise pot fi monitorizate la pinul CAN_TX. Fuzionarea/combinarea modului de conectarea n bucl i a modului Silent Exist posibilitatea de a combina modul de conectare n bucl cu modul Silent, prin programarea biilor LBack i Silent la valoarea unu n acelai timp. Acest mod poate fi utilizat pentru un Hot SelfTest (auto-testare rapid), ceea ce nseamn c acest C_CAN poate fi testat fr afectarea unui sistem CAN ce ruleaz conectat la pinii CAN_TX i CAN_RX. n acest mod, pinul CAN_RX este deconectat de la nucleul CAN, iar pinul CAN_TX este meninut regresiv. Figura V-3 prezint legtura semnalelor CAN_TX i CAN_RX la nucleul CAN n situaia fuziunii modului de conectare n bucl cu modul Silent.
Figura V-4. Nucleul CAN n situaia fuziunii modului de conectare n bucl cu modul Silent.

-5-

MICROCONTROLERE

Modul de baz Nucleul CAN poate fi setat n modul de baz prin programarea bitului Base din registrul de test pe valoarea unu. n acest mod, C_CAN ruleaz fr RAM-ul mesajelor. Regitrii IF1 sunt utilizai ca buffer de transmitere. Transmisia coninuturilor regitrilor IF1 este cerut prin scrierea pe 1 a bitului Busy al registrului de cerere a comenzii (Command Request Register). Regitrii IF1 sunt blocai n timp ce este setat bitul Busy. Bitul Busy indic faptul c transmisia este n ateptare. Imediat ce magistrala CAN este n starea de idle, regitrii IF1 sunt ncrcai n registrul de deplasare (shift register) al nucleului CAN, i transmisia este nceput. Atunci cnd transmisia a fost executat, bitul Busy este resetat, iar regitrii IF1 blocai sunt eliberai. O transmisie n ateptare poate fi abandonat la orice moment de timp prin resetarea bitului Busy din registrul de cerere al comenzii, n timp ce regitrii IF1 sunt blocai. Dac CPU a resetat bitul Busy, o posibil retransmisie n cazul unei arbitrri pierdute sau n caz de eroare este dezactivat. Regitrii IF2 sunt utilizai ca buffer de primire. Dup receptarea unui mesaj, coninuturile registrului de deplasare sunt stocate n regitrii IF2, fr vreo filtrare de acceptare. Suplimetar, coninuturile actuale ale registrului de deplasare pot fi monitorizate n timpul transferului de mesaj. De fiecare dat cnd este iniiat un obiect de tip mesaj, prin scrierea bitului Busy n registrul IF2 al cererii de comand la valoarea unu, coninuturile registrului de deplasare sunt stocate n registrele IF2. n modul de baz, evaluarea biilor de control i stare corespunztori obiectului de tip mesaj i a biilor de control ai regitrilor IFn ai mtii de comand sunt oprii. Numrul mesajului din regitrii de cerere ai comenzii nu este evaluat. Biii NewDat i MsgLst ai registrului de control al mesajului rein funcia lor, DCL3-0 indicnd DLC primit, iar ceilali bii de control sunt citii ca valoare 0. Controlul prin software al pinului CAN_TX Sunt disponibile patru funcii de ieire, pentru pinul de transmisie CAN, CAN_TX. Suplimentar funciei sale implicite (ieirea de date serial), pinul de transmisie CAN poate controla semnalul CAN Sample Point (punctul de eantionare CAN) pentru monitorizarea temporizrii evoluiei n timp al bitului CAN_Core (al nucleului prii centrale CAN) i poate controla valorile semnificative/dominante sau regresive. Ultimele dou funcii, fuzionate cu pinul de recepie CAN_RX al CAN ce poate fi citit, vor putea fi utilizate pentru verificarea nivelului fizic al magistralei CAN. Modul de ieire pentru pinul CAN_TX este selectat prin programarea biilor TX1 i TX0 ai registrului de test CAN. Aceste trei funcii ale pinului CAN_TX interfereaz cu toate funciile de protocol CAN. CAN_TX trebuie s fie lsat la funcia sa implicit, atunci cnd sunt selectate transferul mesajului CAN sau oricare din modurile de testare (modul de conectare n bucl, modul Silent sau modul de baz).

-6-

MICROCONTROLERE

VI Descrierea regitrilor
C_CAN aloc un spaiu de adres de 256 bytes. Regitrii sunt organizai ca regitri pe 16 bii. Dou seturi de regitri de interfa (IF1 i IF2) controleaz accesul CPU la RAM-ul mesajelor. Acetia buffer-eaz datele ce trebuie transmise ctre i de la RAM, evitnd conflictele dintre accesrile CPU i receptarea/transmisia mesajelor. n aceast seciune, se utilizeaz urmtoarele abrevieri: Read/write (rw) Software-ul poate citi i scrie aceti bii. citire/scriere Read-only (r) Software-ul poate doar citi aceti bii. doar citire Write-only (w) Software-ul poate ar trebui doar s scrie la aceti bii. doar scriere Regitrii CAN sunt prezentai n Tabelul VI-1.
Tabel VI-1. Regitrii CAN

-7-

MICROCONTROLERE

VI.1 Starea de reset a interfeei CAN


Dup resetarea hardware, regitrii C_CAN menin valorile de reset date n Tabelul VI-1, iar descrierile regitrilor dup cum urmeaz. Suplimentar, starea de busoff este resetat i ieirea CAN_TX est setat a fi regresiv (HIGH). Valoarea 0x0001 (Init = 1) din registrul de control CAN va activa iniializarea software. C_CAN nu va influena magistrala CAN, pn cnd CPU reseteaz bitul Init la valoarea 0. Datele stocate n RAM-ul mesajelor nu sunt afectate de resetarea hardware. Dup pornire, vor fi definite coninuturile RAM-ului mesajelor.

-8-

MICROCONTROLERE

VI.2 Regitrii corespunztori protocolului CAN


Aceti regitri sunt se refer la controller-ul de protocol al nucleului CAN. Acetia controleaz modurile de funcionare i configurarea temporizrii bitului CAN, i ofer informaiil de stare. Registrul de control CAN (CAN_CR) Address Offset: 00h Reset value: 0001h

Biii 15:8 Bitul 7 Bitul 6

Bitul 5 Bitul 4 Bitul 3

Bitul 2

Bitul 1 Bitul 0

Rezervai, forai prin hardware la valoarea 0. Test: Modul de test activ 0: funcionare normal 1: modul test CCE: activarea schimbrii configuraiei 0: nici un acces de scriere la registrul de temporizare a bitului 1: acces permis de scriere la registrul de temporizare a bitului (n timp ce bitul Init = 1) DAR: Retransmisia automat dezactiv 0: retransmisie automat activat a mesajelor perturbate 1: retransmisie automat dezactivat. Rezervai, forai prin hardware la valoarea 0. EIE: ntreruperea de eroare activ 0: dezactivat nu va fi generat nici o ntrerupere a strii de eroare 1: activat o schimbare la biii BOff i EWam din Registrul de Stare va genera o ntrerupere SIE: Activarea ntreruperii la schimbarea de stare activ 0: dezactivat - nu va fi generat nici o ntrerupere la schimbarea strii 1: activat: va fi generat o ntrerupere atunci cnd transferul mesajului este executat cu succes sau atunci cnd este detectat o eroare a magistralei CAN IE: Activarea ntreruperii modulului 0: dezactivat 1: activat Init: Iniializare 0: funcionare normal 1: este nceput iniializarea

Meniune: Secvena de recuperare busoff (a se vedea specificaiile CAN Rev.2.0) nu poate fi scurtat prin setarea sau resetarea bitului Init. Dac dispozitivul funcioneaz n starea busoff, va seta Init prin acordul propriu, oprind toate activitile magistralei. O dat ce Init a fost ters de ctre CPU, dispozitivul va atepta apoi 129 evenimente de stare Idle ale magistralei (129*11 bii regresivi consecutivi) nainte de

-9-

MICROCONTROLERE reluarea operaiilor normale. La finalul secvenei de recuperare busoff, mecanismele de numrare/msurare ale managementului erorii vor fi resetate. n timpul perioadei de ateptare de dup resetarea Init, de fiecare dat cnd a fost monitorizat o secven de 11 bii regresivi, codul Bit0Error este scris la registrul de stare, activnd CPU pentru a verifica rapid dac magistrala CAN este rmas la dominant sau continuu perturbat i pentru a monitoriza efectuarea secvenei de recuperare busoff. Registrul de stare (CAN_SR) Address Offset: 04h Reset value: 0000h

Biii 15:8 Bitul 7 Bitul 6

Bitul 5

Bitul 4

Bitul 3

Biii 2:0

Rezervai, forai prin hardware la valoarea 0. BOff: Starea Busoff 0: modulul CAN nu este n starea busoff 1: modulul CAN este n starea busoff EWarn: Starea de avertizare (warning) 0: ambii numrtori de eroare se afl sub limita de avertizare a erorii de 96 1: cel puin unul din numrtorii de eroare din EML a atins limita de avertizare a erorii de 96 EPass: Eroare pasiv 0: nucleul CAN este cu eroare activ 1: nucleul CAN este n starea de eroare pasiv, dup cum e definit n CAN Rx0k: Recepionarea cu succes a unui mesaj 0: nu a fost receptat cu succes nici un mesaj, deoarece acest bit a fost ultimul resetat de CPU. Acest bit nu este niciodat resetat de nucleul CAN 1: a fost recepionat cu succes un mesaj, deoarece acest bit a fost ultimul resetat de ctre CPU (independent de rezultatul filtrrii de acceptare) Tx0k: Transmiterea unui mesaj cu succes 0: deoarece acest bit a fost resetat de CPU, nu a fost transmis cu succes nici un mesaj. Acest bit nu este niciodat resetat de ctre nucleul CAN. 1: deoarece acest bit a fost ultimul resetat de CPu, a fost transmis cu succes un mesaj (eroare zero/free i confirmat de cel puin un nod). LEC[2:0]: Codul ultimei erori (tipul ultimei erori ce are loc pe magistrala CAN) Cmpul LEC menine un cod, ce indic tipul ultimei erori ce a avut loc pe magistrala CAN. Acest cmp va fi setat la 0, dac a fost transferat un mesaj (recepie sau transmitere) fr erori. Codul 7 neutilizat poate fi scris de CPU pentru verificarea actualizrilor. Tabelul VI-2 descrie codurile de erori. - 10 -

MICROCONTROLERE

Tabel VI-2. Codurile de erori

Codul erorii 0 1 2 3 4

Semnificaie Nici o eroare Eroarea Stuff: mai mult de 5 bii egali au fost recepionai ntr-o secven pe o poriune a mesajului recepionat, unde aceast secven nu este permis. Eroarea Form: o parte fix a formatului cadrului recepionat prezint un format greit. AckError: mesajul transmis de nucleul CAN nu a fost confirmat de ctre alt nod. Bit1Error: n timpul transmisiei unui mesaj (cu excepia cmpului de arbitrare), dispozitivul a dorit trimiterea nivelului regresiv (valoarea logic 1), dar valoarea magistralei monitorizate a fost dominant. Bit0Error: n timpul transmisiei unui mesaj (sau a unui bit de confirmare, sau a unui indicator al erorii active, sau a unui indicator de depire), dei dispozitivul a dorit trimiterea unui nivelul dominant (date sau valoarea logic 0 a bitului identificatorului), caloarea monitorizat a fost recesiv. n timpul recuperrii busoff, aceast stare este setat de fiecare dat cnd a fost monitorizat o secven de 11 bii regresivi. Aceasta activeaz CPU pentru monitorizarea msurilor secvenei de recuperare busoff (indicnd faptul c magstrala nu este rmas la dominant sau este continuu perturbat). CRCError: Suma de verificare CRC a fost incorect n mesajul primit, iar CRC-ul primit pentru un mesaj de intrare nu s-a potrivit cu CRC-ul calculat pentru datele primite. Neutilizat: atunci cnd LEC prezint valoarea 7, nici un eveniment al magistralei CAN nu a fost detectat, deoarece CPU a scris aceast valoare la LEC.

6 7

ntreruperile de stare O ntrerupere de stare este generat de biii BOff i EWarn (ntreruperea erorii) sau de RXOk, TXOk sau LEC (ntreruperea schimbrii strii), presupunnd faptul c biii de activare corespunztori din registrul de control CAN sunt setai. O schimbare a bitului EPass sau o scriere la RxOk, TxOk sau LEC nu va genera niciodat o ntrerupere de stare. Citirea registrului de stare va terge valoarea strii de ntrerupere dac biii corespunztori erau n ateptare (8000h). Numrtorul erorii (CAN_ERR) Address Offset: 08h Reset value: 0000h

- 11 -

MICROCONTROLERE

Bitul 15

Biii 14:8 Biii 7:0

RP: Eroare de receptare pasiv 0: numrtorul erorii de recepie este sub valaorea nivelului erorii pasive. 1: numrtorul erorii de recepie a atins valoarea nivelului de eroare pasiv, dup cum a fost definit n specificaiile CAN. REC[6:0]: numrtorul erorii de recepie Starea actual a numrtorului erorii de recepie. Valori cuprinse ntre 0 i 127. TEC[7:0]: numrtorul erorii de transmisie Starea actual a numrtorului erorii de transmisie. Valori cuprinse ntre 0 i 255.

Registrul de temporizare a bitului (CAN_BTR) Address Offset: 0Ch Reset value: 2301h

Bitul 15 Biii 14:2

Biii 11:8

Biii 7:6

Biii 5:0

Rezervai, forai prin hardware la valoarea 0. TSeg2: segmentul de timp de dup punctul de eantionare 0x0-0x7: valori valide pentru TSeg2 sunt: [0...7]. Interpretarea actual de ctre hardware a acestei valori este aceea c se va folosi valoarea programat plus unu. TSeg1: segmentul de timp nainte de punctul de eantionare minus Sync_Seg 0x01-0x0F: valori valide pentru TSeg sunt [1...15]. Interpretarea actual de ctre hardware a acestei valori este aceea c se va folosi valoarea programat plus unu. SJW: (Re)Sincronizarea limii de salt 0x0-0x3: valorile valide programate sunt [0...3]. Interpretarea actual de ctre hardware a acestei valori este aceea c se va folosi valoarea programat plus unu. BRP: demultiplicatorul vitezei de transmitere 0x01-0x3F: valoarea prin care frecvena oscilatorului este divizat pentru generarea cuantumului de timp al bitului. Perioada timpului este format dintr-o multitudine de astfel de cuantumuri. Valorile valide pentru demultiplicatorul vitezei de transmitere sunt [0 ... 63]. Interpretarea actual de ctre hardware a acestei valori este aceea c se va folosi valoarea programat plus unu.

Meniune: Cu un ceas al modulului APB_CLK de 8MHz, valoarea de reset 0x2301 configureaz C_CAN pentru viteza de transmisie de 500kBit/s. Regitrii pot fi doar scrii dac sunt setai biii CCE i Init din registrul de control CAN. Registrul de testare (CAN_TESTR) Address Offset: 14h Reset value: 0000 0000 R000 0000 b (R:current value of RX pin) - 12 -

MICROCONTROLERE

Biii 15:8 Bitul 7 Biii 6:5

Bitul 4 Bitul 3 Bitul 2 Biii 1:0

Rezervai, forai prin hardware la valoarea 0. Rx: valoarea curent a pinului CAN_RX 0: magistrala CAN este dominant (CAN_RX=0) 1: magistrala CAN este regresiv (CAN_RX=1) Tx[1:0]: controlul pinului CAN_TX 00:valoare de reset, CAN_TX este controlat de nucleul CAN 01: punctul etalon poate fi monitorizat la pinul CAN_TX 10: pinul CAN_TX genereaz o valoare dominant (0) 11: pinul CAN_TX genereaz o valoare regresiv (1) LBack: modul de conectare n bucl 0: este dezactivat modul de conectare n bucl 1: este activat modul de conectare n bucl Silent: modul Silent 0: funcionare normal 1: modulul este n modul Silent Basic: modul de baz 0: modul de baz dezactivat 1: regitrii IF1 utilizai ca TxBuffer, regitrii IF2 utilizai ca RxBuffer Rezervai, forai prin hardware la valoarea 0.

Accesul de scriere la registrul de testare este activat prin setarea bitului Test din registrul de control CAN. Pot fi combinate funciil de test diferite, dar Tx1-0 00 vor perturba transferul de mesaje. Registrul de extensie BRP (CAN_BRPR) Address Offset: 18h Reset value: 0000h

Biii 15:4 Biii 3:0

Rezervai, forai prin hardware la valoarea 0. BRPE: extensia demultiplicatorului vitezei de transmisie 0x00-0x0F: prin programarea BRPE, demultiplicatorul vitezie de transmisie poate fi extins la valori de pn la 1023. Interpretarea actual de ctre hardware a acestei valori este aceea c se va folosi valoarea programat plus unu BRPE (MSB) i BRP (LSB).

VI.3 Seturile regitrilor de interfa a mesajelor


Exist dou seturi de regitri de interfa, ce sunt utilizate pentru a controla accesul CPU la RAM-ul mesajelor. Regitrii de interfa evit conflictele dintre accesul CPU la RAM-ul mesajelor i recepia i transmisia de mesaje CAN prin - 13 -

MICROCONTROLERE buffer-izarea datelor de transferat. Un obiect de tip mesaj complet (a se vedea Obiectul de tip mesaji din memoria de mesaje) sau poriuni din obiectul de tip mesaj pot fi transferate ntre RAM-ul mesajelor i regitrii IFn ai buffer-ului mesajului (a se vedea Regitrii IFn ai buffer-ului mesajului) ntr-un singur transfer. Funcia celor dou seturi de regitri de interfa este identic, cu excepia modului de testare de baz. Acestea pot fi folosite astfel nct un set de regitri este utilizat pentru transferul de date la RAM-ul mesajelor, n timp ce cellalt set de regitri este utilizat pentru transferul datelor de la RAM-ul mesajelor, permind ambelor procese de a fi ntrerupte unul de ctre cellalt. Tabelul VI-3: setul de regitri IF1 i IF2 de interfa a mesajelor ofer o vedere de ansamblu a celor dou seturi de regitri de interfa. Fiecare set de regitri de interfa const din regitrii buffer ai mesajului, controlai de proprii regitri de comand/control. Registrul mtii de control specific direcia transferului de date i care pri din obiectului de tip mesajul vor fi transferate. Registrul de cererilor de control este utilizat pentru a seta obiectul de tip mesaj n RAM-ul mesajelor, ca int (target) sau surs pentru transfer i pentru nceperea unor aciuni specificate n registrul mtii de control.
Tabel VI-3. Setul de regitri IF1 i IF2 de interfa pentru mesaje

Registrul IFn de cerere de control (CAN_IFn_CRR) Address offset: 20h (CAN_IF1_CRR), 80h (CAN_IF2_CRR) Reset Value: 0001h

Transferul mesajelor este nceput imediat ce aplicaia software a scris mesajul la registrul de cerere de control. Cu aceast operaie de scriere, bitul Busy este automat setat pentru a ntiina CPU de faptul c transferul este n curs de desfurare. Dup un timp de scriere de la 3 pn la 6 perioade APB_CLK, este

- 14 -

MICROCONTROLERE executat transferul dintre registrul de interfa i RAM-ul mesajelor. Bitul Busy este eliberat. Bitul 15 Busy: indicatorul busy 0: aciunea de citire/ scriere a fost ncheiat 1: scrierea la registrul IFn de cerere de control este n curs de desfurare. Acest bit poate fi citit doar prin software. Rezervai, forai prin hardware la valoarea 0. Numrul mesajului: 0x01-0x20: numr valid al mesajului, este selectat pentru transferul de date un obiect de tip mesaj din RAM-ul mesajelor 0x00: nu este un numr valid al mesajului, este interpretat ca 0x20. 0x21-0x3F: nu este un numr valid al mesajului, este interpretat ca 0x01-0x1F.

Biii 14:6 Biii 5:0

Meniune: Atunci cnd un numr al mesajului ce nu este valid va fi scrie la registrul de cerere de control, numrul mesajului va fi transformat ntr-un numr valid i obiectul de tip mesaj va fi transferat. Regitrii IFn masc de control (CAN_IFn_CMR) Address offset: 24h (CAN_IF1_CMR), 84h (CAN_IF2_CMR) Reset Value: 0000h

Biii masc de control ai registrului IFn specific direcia de transfer i selecteaz care din regitrii IFn buffer ai mesajului sunt surs sau destinaie (target) pentru transferul de date. Biii 15:8 Bitul 7 Rezervai, forai prin hardware la valoarea 0. WR/RD: scriere/citire 0: Citire: datele sunt transferate de la obiectul de tip mesaj, adresat de registrul de comand al cererii, la regitrii buffer ai mesajului 1: Scriere: datele de transfer de la regitrii buffer ai mesajului la obiectul de tip mesaj, adresat de registrul de comand al cererii. Aceti bii ai registrului IFn masc de control au diferite funcii n funcie de direcia de transfer. Direcie = scriere Bit 6 = biii masc de acces masc 0: biii masc neschimbai 1: transfer masca de identificare + MDir + Mxtd la obiectul de tip mesaj Bitul 5: biii de arbitrare ai accesului Arb 0: bii de arbitrare neschimbai 1: transfer identificatorul + Dir + Xtd + MsgVal la obiectul de tip mesaj Bitul 4: biii de control pentru controlul accesului 0: biii de control neschimbai

Biii 6:0

- 15 -

MICROCONTROLERE 1: transfer biii de control la obiectul de tip mesaj Bitul 3: bitul n ateptare pentru tergerea/eliberarea ntreruperii ClrIntPnd Pentru scrierea la un obiect de tip mesaj, acest bit est ignorat. Bitul 2: bitul de cerere de acces pentru transmisie TxRqst/NewDat 0: bitul TxRqst neschimbat 1: bitul TxRqst setat. Dac transmisia este solicitat prin programarea bitului TxRqst/NewDat n registrul masc de control IFn, bitul TxRqst din registrul de control al mesajului va fi ignorat. Bitul 1: datele A, acceseaz octeii de date 3:0 0: octeii de date 3: 0 neschimbai 1: octeii de date 3:0 sunt transferai la obiectul de tip mesaj Bitul 0: datele B, acceseaz octeii de tate 7:4 0: octeii de date 7:4 neschimbai 1: octeii de date 7:4 sunt transferai la obiectul de tip mesaj. Direcie= citire Bit 6 = masc: biii masc de acces 0: biii masc neschimbai 1: transfer masca identificatorului + MDir + Mxtd la registrul IFn buffer al mesajului Bitul 5: Arb: biii de arbitrare de acces 0: bii de arbitrare neschimbai 1: transfer identificatorul + Dir + Xtd + MsgVal la registrul IFn buffer al mesajului Bitul 4: control: biii de control pentru acces 0: biii de control neschimbai 1: transfer biii de control la registrul IFn buffer al mesajului Bitul 3: ClrIntPnd: bitul n ateptare pentru tergerea/eliberarea ntreruperii 0: bitul IntPnd rmne nemodificat, 1: bitul IntPnd este ters Bitul 2: TxRqst/NewDat: bitul de cerere de acces pentru transmisie 0: bitul NewDat rmne neschimbat 1: terge bitul NewDat n obiectul mesajului. Un acces de citire la obiectul mesajului poate fuziona cu resetarea biilor de control IntPnd i NewDat. Valorile acestor bii transferai la registrul IFn de control al mesajului va reflecta ntotdeauna starea nainte de resetarea acestor bii. Bitul 1: datele A, acceseaz bytes de date 3:0 0: bytes de date 3: 0 neschimbai 1: bytes de date de transfer 3:0 la registrul IFn buffer al mesajului Bitul 0: datele B, acceseaz bytes de date 7:4 0: bytes de date 7:4 neschimbai 1: bytes de date de transfer 7:4 la registrul IFn buffer al mesajului.

Biii 6:0

- 16 -

MICROCONTROLERE Regitrii IFn buffer pentru mesaje Biii regitrilor buffer de mesaje oglindesc obiectele de tip mesaj din RAM-ul mesajelor. Funcia biilor obiectelor de tip mesaj este descris n Obiectul de tip mesaj din memoria mesajelor. Registrul IFn masc 1 (CAN_IFn_M1R) Address offset: 28h (CAN_IF1_M1R), 88h (CAN_IF2_M1R) Reset Value: FFFFh

Funcia biilor Msk este descris n Obiectul de tip mesaj din memoria mesajelori. Registrul IFn masc 2 (CAN_IFn_M2R) Address offset: 2Ch (CAN_IF1_M2R), 8Ch (CAN_IF2_M2R) Reset Value: FFFFh

Funcia biilor obiectelor de mesaj este descris la Obiectul de tip mesaj din memoria mesajelori. Registrul IFn de arbitrare a mesajului 1 (CAN_IFn_A1R) Address offset: 30h (CAN_IF1_A1R), 90h (CAN_IF2_A1R) Reset Value: 0000h

Funcia biilor obiectelor de mesaj este descris la Obiectul de tip mesaj din memoria mesajelori. Registrul IFn de arbitrare a mesajului 2 (CAN_IFn_A2R) Address offset: 34h (CAN_IF1_A2R), 94h (CAN_IF2_A2R) Reset Value: 0000h

- 17 -

MICROCONTROLERE Funcia biilor obiectelor de mesaj este descris la Obiectul de tip mesaj din memoria mesajelori. Regitrii IFn de control al mesajelor (CAN_IFn_MCR) Address offset: 38h (CAN_IF1_MCR), 98h (CAN_IF2_MCR) Reset Value: 0000h

Funcia biilor obiectelor de mesaj este descris la Obiectul de tip mesaj din memoria mesajelori. Regitrii IFn de date A/B (CAN_IFn_DAnR i CAN_IFn_DBnR) Biii de date ai mesajelor CAN sunt stocai n regitrii IFn buffer ai mesajului n urmtoarea ordine:

ntr-un cadru de date CAN, Data(0) este primul, Data(7) este ultimul byte de transmis sau de primit. n transmisia de bii serial CAN, MSB (bitul cel mai semnificativ) al fiecrui byte va fi transmis primul. Obiectul de tip mesaj din memoria de mesaje Exist 32 obiecte de tip mesaj n RAM-ul mesajelor. Pentru a evita conflictele dintre accesarea CPU la RAM-ul mesajelor i recepia sau transmisia mesajului CAN,

- 18 -

MICROCONTROLERE CPU nu poate accesa direct obiectele de tip mesaj, aceste accesri fiind tratate prin regitrii IFn ai interfeei. Tabelul VI-4 ofer o vedere de ansamblu a structurilor obiectului de tip mesaj.
Tabel VI-4. Structura obiectului mesajului n memoria mesajului

Regitrii de arbitrare ID28-0, Xtd i Dir sunt utilizai pentru definirea identificatorului i tipului de mesaje de plecare i sunt utilizate (mpreun cu regitrii masc Msk28-0, MXtd i MDir) pentru filtrarea de acceptare a mesajelor de sosire. Un mesaj recepionat este stocat n obiectul de tip mesaj valid cu potrivirea identificatorului i a direciei setat pentru primire (cadrul de date) sau comanda de la distan (remote frame). Cadrele extinse pot fi stocate doar n obiectele de tip mesaj cu bizul Xtd setat, iar cadrele standard n obeictele de tip mesaj cu bitul Xtd ters. Dac un mesaj recepionat (cadru de date sau cadru rezervat) se potrivete cu mai mult de o valoare valid a obiectului de tip mesaj, aceasta va fi stocat n obiectul cu numrul cel mai mic al mesajului. Pentru detalii, se va observa Filtrarea de acceptare a mesajelor primite. MsgVal Mesaj valid 1: obiectul de tip mesaj este configurat i ar trebui luat n considerare de ctre tratarea mesajelor 0: obiectul de tip mesaj este ignorat de tratarea mesajelor Meniune: software-ul de aplicaie trebuie s reseteze valoarea bitului MsgVal pentru toate mesajele neutilizate n timpul iniializrii nainte de a reseta bitul Init n registrul de control CAN. Acest bit trebuie, de asemenea, s fie resetat, nainte ca identificatorul Id28-0, biii de control Xtd, Dir sau codul lungimii de date DLC3-0 s fie modificate sau dac obiectul de tip mesaj nu mai este solicitat. Utilizarea mtii de acceptare 1: utilizarea mtii (Msk28-0, MXtd i MDir) pentru filtrarea de acceptare. 0: masc ignorat Meniune: Dac bitul UMask este setat la unu, biii mtii obiectului de tip mesaj trebuie s fie programai n timpul iniializrii obiectului de tip mesaj, nainte ca valoarea MsgVal s fie setat la unu. Identificatorul mesajului ID28-ID0, identificatorul pe 29 bii (cadru extins) ID28-ID18, identificator pe 11 bii (cadru standard) Masca identificatorului 1: bitul identificatorului corespunztor este utilizat pentru filtrarea de acceptare. 0: bitul identificatorului corespunztor al obiectului de tip mesaj nu poate opri potrivirea pentru filtrarea de acceptare. Identificatorul extins 1: identificatorul pe 29 bii (extins) va fi utilizat pentru obiectul de tip mesaj.

UMask

ID28-0 Msk28-0

Xtd

- 19 -

MICROCONTROLERE 0: identificatorul pe 11 bii va fi utilizat pentru acest obiect de tip mesaj mesajului. Identificatorul masc extins 1: bitul identificatorului extins (IDE) este utilizat pentru filtrarea de acceptare. 0: bitul identificatorului extins (IDE) nu are efect la filtrarea de acceptare. Meniune: atunci cnd se utilizeaz identificatorii pe 11 bii (standard) pentru un obiect de tip mesaj, identificatorii cadrelor de date primite sunt scrii n biii ID28 la ID18. Pentru filtrarea de acceptare, doar aceti bii mpreun cu biii masc Msk28 la Msk18 sunt luai n considerare. Direcia mesajelor 1: Direcia = transmisie: la TxRqst, obiectul de tip mesaj respectiv este transmis ca i cadru de date. La recepionarea unui cadru de comand de la distan cu identificatorul de potrivire corect, bitul TxRqst al obiectului de tip mesaj este setat (dac RmEn=unu). 0: Direcia = recepie: la TxRqst este transmis un cadru cu comand de la distan cu identificatorul acestui obiect de tip mesaj. La recepia cadrului de date cu identificatorul de potrivire corect, acel mesaj este stocat n acest obiect de tip mesaj. Masca direciei mesajului 1: bitul de direceie a mesajului (Dir) este utilizat pentru filtrarea de acceptare. 0: bitul de direcie a mesajului direcionat (Dir) nu produce efect la filtrarea de acceptare. Final buffer 1: un singir obicet de tip mesaj sau ultimului obiect de tip mesaj al buffer-ului FIFO. 0: obiectul de tip mesaj aparine unui buffer FIFO i nu este ultimul obiect de tip mesaj al acelui buffer FIFO. Meniune: acest bit este utilizat pentru concatenarea a dou sau mai multor obiecte de tip mesaj (pn la 32) pentru a construi un buffer FIFO. Pentru obiectele de tip mesaj singure (ce nu aparin unui buffer FIFO), acest bit trebuie s fie ntotdeauna setat la valoarea unu. Pentru detalii la concatenarea obiectelor de tip mesaj se va urmri Seciunea Configurarea unui buffer FIFO. Date noi 1: tratarea mesajului sau software-ul aplicaiei a scris noi date la poriunea de date a acestui obiect de tip mesaj. 0: nu au fost scrise noi date la poriunea de date a acestui obiect de tip mesaj prin tratarea mesajului, deoarece ultima oar acest indicator a fost ters prin software-ul de aplicaie. Mesaj pierdut (valid doar pentru obiectele de tip mesaj cu direcia = recepie) 1: tratarea mesajelor a stocat un nou mesaj la acest obiect la momentul n care NewDat a fost nc setat, iar CPU a pierdut mesajul. 0: nici un mesaj nu a fost pierdut, deoarece ultima oar acest bit a fost resetat de ctre CPU. - 20 -

MXtd

Dir

MDir

EoB

NewDat

MsgLst

MICROCONTROLERE RxIE ntrerupere la recepionare activ 1: IntPnd va fi setat dup recepionarea cu succes a unui cadru. 0: IntPnd va fi lsat neschimbat dup o recepionare cu succes a unui cadru. ntrerupere la transmisie activ 1: IntPnd va fi setat dup ce o transmisie cu succes a unui cadru. 0: IntPnd va fi lsat neschimbat dup o transmisie cu succes a unui cadru. ntrerupere n ateptare 1: acest obiect de tip mesaj mesajului reprezint sursa unei ntreruperi. Identificatorul ntreruperii n registrul de ntrerupere va indica acestui obiect de tip mesaj mesajului dac mai exist vreo surs de ntrerupere cu prioritate mai mare. 0: acest obiect de tip mesajului nu reprezint sursa unei ntreruperi. Cadru de comand de la distan activ 1: la recepionarea unui cadru de comand de la distan, este setat TxRqst. 0: la recepionarea unui cadru rezervat, TxRqst va fi lsat neschimbat. Cerere de transmisie 1: transmisia acestui obiect de tip mesaj este solicitat i nu este nc realizat. 0: Acest obiect de tip mesaj nu ateapt transmisie. Codul lungimii de date 0-8: cadrul de date are 0-8 bytes de date 9-15: cadrul de date are 8 bytes de date Meniune: codul lungimii de date al obiectului mesajului trebuie definit la fel ca i n toate obiectele corespunztoare cu identificatorul i la alte noduri. Atunci cnd tratarea mesajelor stocheaz un cadru de date, va scrie DLC la valoarea dat de mesajul recepionat. Data 0: primul byte de date al cadrului de date CAN Data 1: al doilea byte de date al cadrului de date CAN Data 2: al treilea byte de date al cadrului de date CAN Data 3: al patrulea byte de date al cadrului de date CAN Data 4: al cincilea byte de date al cadrului de date CAN Data 5: al aselea byte de date al cadrului de date CAN Data 6: al aptelea byte de date al cadrului de date CAN Data 7: al optulea byte de date al cadrului de date CAN Meniune: byte-ul o al datei reprezint primul byte de date deplasat n registrul nucleului CAN, n timpul recepiei, n timp ce byte-ul datei 7 este ultimul. Cnd tratarea mesajului stocheaz cadrul de date, va scrie toi cei opt bytes de date la obiectul de tip mesaj. Dac respectivul cod al lungimii de date este mai mic de 8, bytes rmai ai obiectului mesajului vor fi suprascrii, prin valori nespecificate.

TxIE

IntPnd

RmTEn

TxRqst

DLC3-0

VI.4 Regitrii de tratare a mesajelor


Toi regitrii de tratare a mesajelor sunt read-only. Coninuturile lor, biii TxRqst, NewDat, IntPnd, MsgVal pentru fiecare obiect de tip mesaj i identificatorul - 21 -

MICROCONTROLERE de ntrerupere reprezint informaiile de stare oferite de automatul cu stri finite pentru tratarea mesajelor. Registrul de identificare a ntreruperilor (CAN_IDR) Address Offset: 10h Reset value: 0000h

Biii 15:0

IntId[15:0]: identificatorul ntreruperii (Tabelul VI-5 prezint sursa ntreruperii) Dac mai multe ntreruperi sunt n ateptare, registrul de ntreruperi CAN va indica ntreruperea n ateptare cu cea mai mare prioritate, nelund n considerare ordinea cronologic. O ntrerupere rmne n ateptare pn ce software-ul de aplicaie l-a luat n consirare. Dac IntId este diferit de 0x0000 i este setat IE, semnalul ntreruperii IRQ la EIC este activ. ntreruperea va rmne activ pn ce IntId va fi setat napoi la valoarea 0x0000 (cauza ntreruperii este resetat) sau pn ce IE este resetat. ntreruperea de stare are cea mai mare prioritate. Dintre ntreruperile de mesaje, prioritatea ntreruperii a unui obiect de tip mesaj descrete o dat cu creterea numrului mesajului. O ntrerupere de mesaj este tears prin tergerea bitului IntPnd al obiectului de tip mesaj. ntreruperea de stare este eliberat/tears prin citirea registrului de stare.

Tabel VI-5. Sursa de ntreruperi

- identificatorul de ntrerupere

- cauza ntreruperii

Regitrii de cerere/solicitare a transmisiei 1 & 2 (CAN_TxRnR) Address Offset: 100h (CAN_TxR1R), 104h (CAN_TxR2R) Reset Value: 0000 0000h

- 22 -

MICROCONTROLERE

Aceti regitri menin biii TxRqst ai obiectelor de tip mesaj. Prin citirea biilor TxRqst, CPU poate verifica ce obiect de tip mesaj dintr-o cerere de transmisie se afl n ateptare. Bitul TxRqst al unui obiectul de tip mesaj specific poate fi setat/resetat prin software-ul aplicaiei, prin intermediul regitrilor de interfa a mesajelor sau prin Tratarea mesajelor, dup recepionarea unui cadru de comand de la distan (remote) sau dup o transmisie realizat cu succes. Biii 31:16 TxRqst [32:17] Biii de cerere de transmisie (ai tuturor obiectelor de tip mesaj) 0: acest obiect de tip mesaj nu ateapt transmisia. 1: transmisia acestui obiect de tip mesaj este solicitat i nu este nc realizat. Aceti bii sunt read only (pot fi doar citii). TxRqst[16:1]: Biii de cerere de transmisie (al tuturor obiectelor de mesaje) 0: acest obiect de tip mesaj nu ateapt transmisia 1: transmisia acestui obiect de tip mesaj este solicitat i nu este nc realizat. Aceti bii sunt read only (pot fi doar citii).

Biii 15:0

Regitrii de date noi 1 & 2 (CAN_NDnR) Address Offset: 120h (CAN_ND1R), 124h (CAN_ND2R) Reset Value: 0000 0000h

Aceti regitri menin biii NewDat ai celor 32 obiecte de tip mesaj. Prin citirea de bii NewDat, CPU poate verifica pentru ce obiect de tip mesaj, poriunea de date a fost actualizat. Bitul NewDat al unui obiect de tip mesaj specific poate fi setat/resetat prin CPU, cu ajutorul regitrilor Ifn de interfa a mesajelor, sau prin Tratarea mesajelor, dup recepia unui cadru de date sau dup o transmisie cu succes. Biii 31:16 NewDat[32:17]: Biii de date noi (ai tuturor obiectelor de mesaje) 0: nu au fost scrise date noi la poriunea de date a obiectului de tip mesaj prin tratarea mesajului, de la ultima dat cnd indicatorul a fost ters de software-ul de aplicaie. 1: tratarea mesajelor sau software-ul de aplicaie au scris noi date - 23 -

MICROCONTROLERE la segmentul de date al obiectului de tip mesaj. NewDat[16:1]: Biii de date noi (ai tuturor obiectelor de tip mesaje) 0: nu au fost scrise date noi la poriunea de date a obiectului de tip mesaj prin tratarea mesajului, de la ultima dat cnd indicatorul a fost ters de software-ul de aplicaie. 1: tratarea mesajelor sau software-ul de aplicaie au scris noi date la segmentul de date al obiectului de tip mesaj.

Biii 15:0

Regitrii de ntrerupere n ateptare 1 & 2 (CAN_IPnR) Address Offset: 140h (CAN_IP1R), 144h (CAN_IP2R) Reset Value: 0000 0000h

Aceti regitri conin biii IntPnd ai celor 32 obiecte de tip mesaj. Prin citirea de bii IntPnd, CPU poate verifica pentru ce obiect de tip mesaj, o ntrerupere este n ateptare. Bitul IntPnd al unui obiect de tip mesaj specific poate fi setat/resetat prin software-ul de aplicaie, cu ajutorul regitrilor IFn de interfa la mesaje sau prin tratarea mesajelor dup recepie sau dup o transmisie cu succes a unui cadru. Aceasta va afecta de asemenea i valoarea lui IntPnd din registrul de ntrerupere. Biii 31:16 IntPnd[32:17]: biii de ntrerupere n ateptare (ai tuturor obiectelor de tip mesaj) 0: acest obiect de tip mesaj nu reprezint sursa vreunei ntreruperi. 1: acest obiect de mesaj reprezint sursa unei ntreruperi. IntPnd[16:1]: biii de ntrerupere n ateptare (ai tuturor obiectelor de tip mesaj) 0: acest obiect de tip mesaj nu reprezint sursa vreunei ntreruperi. 1: acest obiect de tip mesaj reprezint sursa unei ntreruperi.

Biii 15:0

Regitrii de mesaje valide 1 & 2 (CAN_MVnR) Address Offset: 160h (CAN_MV1R), 164h (CAN_MV2R) Reset Value: 0000 0000h

Aceti regitri menin biii Msgval ai celor 32 obiecte de tip mesaj. Prin citirea biilor MsgVal, software-ul de aplicaie poate verifica ce obiect de tip mesaj este valid.

- 24 -

MICROCONTROLERE Bitul MsgVal al unui obiect de tip mesaj specific poate fi setat/resetat prin software-ul de aplicaie, cu ajutorul regitrilor IFn de interfa a mesajelor. Biii 31:16 MsgVal[32:17]: biii de mesaje valide (ai tuturor obiectelor de tip mesaj) 0: acest obiect de tip mesaj este ignorat de tratarea mesajelor. 1: acest obiect de mesaj este configurat i ar trebui luat n considerare de tratarea mesajelor. MsgVal[16:1]: biii de mesaje valide (ai tuturor obiectelor de tip mesaj) 0: acest obiect de tip mesaj este ignorat de tratarea mesajelor. 1: acest obiect de tip mesaj este configurat i ar trebui luat n considerare de tratarea mesajelor.

Biii 15:0

VII Harta regitrilor


Tabel VII-6. Harta registrului CAN

- 25 -

MICROCONTROLERE

- 26 -

MICROCONTROLERE

VIII Comunicaiile CAN


VIII.1 Gestionarea (tratarea) obiectelor de tip mesaj
Configurarea obiectelor de tip mesaj din RAM-ul mesajelor (cu excepia biilor MsgVal, NewDat, IntPnd i TxRqst) nu va fi afectat de resetarea chip-ului. Toate obiectele de tip mesaj trebuie s fie iniializate de software-ul aplicaiei, sau trebuie sa fie n starea invalid (MsgVal = 0), iar temporizarea bitului trebuie s fie configurat nainte ca software-ul de aplicaie s elibereze/tearg bitul Init n registrul CAN. Configurarea unui obiect de tip mesaj este realizat prin setarea cmpurilor de programare Mask (masc), Arbitration (arbitrare), Control (de control) i Data (de date), al unuia din cei doi regitri de interfa, la valorile dorite. Prin scrierea la registrul IFn de cerere de control corespunztor, regitrii IFn ai buffer-ului de mesaje sunt ncrcai pentru obiectul de tip mesaj adresat, n RAM-ul mesajului. Atunci cnd bitul Init din registrul de control CAN este ters, automatul de stare al controller-ului de protocol CAN pentru nucleul CAN i automatul de stare al tratrii mesajului controleaz fluxul de date intern al C_CAN. Mesajele primite ce trec de filtrarea de acceptare sunt stocate n registrul de deplasare al nucleului CAN i sunt transmise prin intermediul magistralei CAN. Software-ul de aplicaie citete mesajele primite i actualizeaz mesajele ce trebuie transmise prin intermediul regitrilor IFn de interfa. n funcie de configurare, CPU este ntrerupt la anumite mesaje cAN i evenimente de erori CAN.

VIII.2 Automatul de stare al tratrii mesajelor


Tratarea mesajelor controleaz transferul de date dintre regitrii de deplasare Rx/Tx ai nucleului CAN, RAM-ul mesajelor i regitrii IFn. Tratarea mesajelor FSM controleaz urmtoarele funcii: Transferul de date de la regitrii IFn la RAM-ul mesajelori Transferul de date de la RAM-ul mesajelor la regitrii IFn Transferul de date de la registrul de deplasare (shift register) la RAM-ul mesajelor Transferul de date de la RAM-ul mesajelor la registrul de deplasare (shift register) Transferul de date de la registrul de deplasare la unitatea de filtrare pentru acceptare Scanarea RAM-ului mesajelor pentru potrivirea cu obiectul de tip mesaj Tratarea indicatorilor TxRqst Tratarea ntreruperilor. Transferul de date de la/la RAM-ul mesajului Atunci cnd CPU iniiaz un transfer de date dintre regitrii IFn i RAM-ul mesajelor, tratarea mesajelor seteaz bitul Busy n registrul corespunztor de cerere de control (CAN_IFn_CRR). Dup ce transferul a fost completat, bitul Busy este din nou ters (a se vedea Figura VIII-1). Registrul corespunztor al mtii de control va specifica dac vor fi transferate un obiect de tip mesaj complet sau doar segmente din acesta. Datorit structurii - 27 -

MICROCONTROLERE RAM-ului mesajelor, nu este posibil scrierea de bii/bytes singuri ai unui obiect de tip mesaj. Astfel, transferul de date de la regitrii IFn la RAM-ul mesajelor necesit un ciclu citire-modificare-scriere. La nceput, vor fi citite acele segmente ale obiectului de tip mesaj ce nu trebuie schimbate, de la RAM-ul mesajelor, iar coninuturile complete ale regitrilor buffer de mesaj vor fi scrise napoi n obiectul de tip mesaj.
Figura VIII-5 Transferul de date dintre regitrii IFn i RAM-ul mesajelor

Dup o scriere parial a obiectului de tip mesaj, regitrii buffer-ului de mesaje ce nu sunt selectai n registrul masc de control vor prelua coninutul actual al obiectului de tip mesaj. Dup o citire parial a obiectului de tip mesaj, regitrii buffer-ului de mesaje ce nu sunt selectai n registrul masc de control vor rmne neschimbai. Transmisia de mesaje Dac registrul de deplasare al nucleului CAN este pregtit de ncrcare i nu exist transfer de date ntre regitrii IFn i RAM-ul mesajelor, vor fi evaluai biii MsgVal din registrul de mesaj valid i biii TxRqst din registrul de cerere de transmisie. Obiectul valid de tip mesaj cu cererea de transmisie n ateptare, avnd prioritatea cea mai mare, va fi ncrcat la registrul de deplasare, de ctre automatul pentru tratarea mesajelor, transmisia fiind astfel nceput. Bitul NewDat al obiectului de tip mesaj va fi resetat. Dup o transmisie cu succes i dac, de asemenea, nu au fost scrise date noi la obiectul de tip mesaj (NewDat=0), de la nceputul transmisiei, bitul TxRqst al registrului de control al mesajului (CAN_IFn_MCR) va fi resetat. Dac bitul TxIE al registrului de control al mesajului (CAN_IFn_MCR) este setat, bitul IntPnd al registrului de identificare al ntreruperii (CAN_IDR) va fi setat dup o transmisie cu succes. Dac C_CAN a pierdut arbitrarea sau dac a avut loc vreo eroare n timpul - 28 -

MICROCONTROLERE transmisiei, mesajul va fi retransmis imediat ce magistrala CAN este liber, din nou. ntre timp, dac a fost solicitat transmisia unui mesaj cu prioritate mare, mesajele vor fi transmise n ordinea prioritii lor. Filtrarea de accept pentru mesajele recepionate n situaia n care cmpul de arbitrare i control (identificator + IDE + RTR + DLc) al unui mesaj n sosire va fi complet deplasat n registrul Rx/Tx din nucleul CAN, automatul de stare FSM de tratarea a mesajului va ncepe scanarea RAM-ului mesajelor, n scopul potrivirii cu un obiect de tip mesaj valid. Pentru a scana RAM-ul mesajelor n scopul potrivirii obiectului de tip mesaj, unitatea de filtrare de accept va fi ncrcat cu biii de arbitrare de la registrul de deplasare al nucleului CAN. Cmpurile de arbitrare i masc (incluznd MsgVal, UMask, NewDat i EoB) ai obiectului 1 de tip mesaj sunt apoi ncrcate la unitatea de filtrare de accept i comparate cu cmpul de arbitrare de la registrul de deplasare. Aceast operaie este repetat pentru fiecare obiect de de tip mesaj ce urmeaz, pn ce este gsit un obiect de tip mesajului potrivit, sau pn ce este atins captul (finalul) RAM-ului de mesaje. Dac are loc o potrivire, scanarea este oprit i FSM (automatul ) pentru tratarea mesajelor va continua, n funcie de tipul cadrului primit (cadrul de date sau cadrul de comand de la distan (remote)). Recepionarea cadrului de date Automatul FSM pentru tratarea mesajelor stocheaz mesajul din registrul de deplasare al nucleului CAN la obiectul de tip mesaj corespunztor n RAM-ul mesajelor. Acest lucru este realizat pentru a menine bytes de date conectai la identificator, chiar dac sunt folosii regitrii masc de arbitrare. Bitul NewDat este setat pentru a indica faptul c noile date (ce nu au fost vzute nc de CPU) au fost recepionate. Software-ul de aplicaie ar trebui s reseteze bitul NewDat atunci cnd a fost citit obiectul de tip mesaj. Dac la momentul recepionrii, bitul NewDat a fost deja setat, MsgLst este setat pentru a indica faptul c datele anterioare (presupunnd c nu au fost vzute de CPU) sunt pierdute. Dac bitul RxIE este setat, va fi setat bitul IntPnd, determinnd registrul de ntrerupere s indice acest obiect de tip mesaj. Bitul TxRqst al acestui obiect de tip mesaj este resetat pentru a preveni transmisia unui cadru rezervat (remote), n timp ce cadrul de date cerut tocmai a fost recepionat. Recepionarea unui cadru pentru comanda de la distan (remote) Atunci cnd este recepionat un cadru pentru comanda de la distan (remote frame), trebuie luate n considerare trei configuraii diferite ale potrivirii obiectului de tip mesaj: 1. Dir = 1 (direcie = transmisie), RmtEn=1, UMask=1 sau 0 La recepionarea unui cadru remote cu potrivire, bitul TxRqst al obiectului de tip mesaj este setat. Restul obiectului de tip mesaj va rmne neschimbat. 2. Dir = 1 (direcie = transmisie) RmtEn=0, UMask=0

- 29 -

MICROCONTROLERE La recepionarea unui cadru remote cu potrivire, bitul TxRqst al obiectului de tip mesaj rmne neschimbat; cadrul remote este ignorat. 3. Dir = 1 (direcie = transmisie), RmtEn=0, UMask=1 La recepionarea unui cadru remote cu potrivire (acceptat), bitul TxRqst al obiectului de tip mesaj este resetat. Cmpul de arbitrare i control (identificator + IDE + RTR + DLC) de la registrul de deplasare este stocat n obiectul de tip mesaj al RAM-ului mesajelor i bitul NewDat al obiectului de tip mesaj este setat. Cmpul de date al obiectului de tip mesaj va rmne neschimbat; cadrul remote fiind tratat similar cu un cadru de date recepionat. Prioritatea de recepie/transmisie Prioritatea de recepionare/transmisie pentru obiectele de tip mesaj este ataat la numrul mesajului. Obiectul de tip mesaj 1 are prioritatea cea mai mare, n timp ce obiectul de tip mesaj 32 are prioritatea cea mai mic. Dac mai mult de o cerere de transmisie este n ateptare, acestea vor fi servite n funcie de prioritatea obiectului de tip mesaj corespunztor.

VIII.3 Configurarea obiectului de transmisie


Tabelul VIII-1 prezint modul n care un obiect de transmisie trebuie iniializat.
Tabel VIII-7. Iniializarea unui obiect de transmisie

Valorile registrului de arbitrare (ID28-0 i bitul Xtd) sunt oferite de aplicaie. Acestea definesc identificatorul i tipul de mesaje ce pleac. Dac este utilizat un identificator pe 11 bii (cadru standard), acesta va fi programat pe biii ID28-ID18. ID17-ID0 nu pot fi luai n considerare. Dac este setat bitul TxIE, bitul IntPnd va fi setat dup o transmisie cu succes a obiectului de tip mesaj. Dac este setat bitul RmtEn, potrivirea unui cadru remote recepionat va cauza setarea bitului TxRqst; cadrului remote i se va rspunde autonom cu un cadru de date. Valorile regitrilor de date (DCL3-0, Data0-7) sunt oferite de aplicaie, TxRqst i RmtEn nu pot fi setai nainte ca datele s fie valide. Regitrii masc (biii Msk28-0, UMask, MXtd i MDir) pot fi utilizai (UMask=1) pentru a permite grupurilor de cadre rezervate cu identificatori similari de a seta bitul TxRqst. Bitul Dir nu ar trebui mascat.

VIII.4 Actualizarea obiectului de transmisie


CPU poate actualiza tipurile de date ale unui obiect de transmisie la orice moment de timp, cu ajutorul regitrilor IFn de interfa, unde nici MsgVal i nici TxRqst nu trebuie resetate nainte de actualizare. Chiar dac doar o parte din bytes

- 30 -

MICROCONTROLERE de date trebuie actualizat, toi cei patru bytes ai registrului IFn de date A i ai registrului IFn de date B trebuie s fie valizi nainte ca respectivele coninuturi ale acelui registru s fie transferate la obiectului de tip mesaj. Fie CPU trebuie s scrie toi cei patru bytes n registrul IFn de date, fie obiectul de tip mesaj poate fi transferat la registrul IFn de date, nainte ca CPU s scrie noi bytes de date. Atunci cnd doar (opt) bytes de date sunt actualizai, primul 0x0087 este scris la registrul masc de control, iar numrul obiectului de tip mesaj este scris la registrul de cerere de control, actualiznd n acelai timp bytes de date i setnd TxRqst. Pentru a preveni resetarea TxRqst la finalul unei transmisii ce poate fi deja n curs de desfurare, n timp ce datele sunt actualizate, NewDat trebuie s fie setat mpreun cu TxRqst. Pentru detalii, se va observa Transmisia de mesaje. Atunci cnd NewDat este setat mpreun cu TxRqst, NewDat va fi resetat imediat ce noua transmisie a nceput.

VIII.5 Configurarea obiectului de recepie


Tabelul VIII-2 prezint modul n care un obiect de recepie trebuie iniializat.
Tabel VIII-8. Iniializarea unui obiect de recepie.

Valorile registrului de arbitrare (ID28-0 i bitul Xtd) sunt oferite de aplicaie. Acestea definesc identificatorul i tipul de mesaje acceptate la recepie. Dac este utilizat un identificator pe 11 bii (cadru standard), acesta va fi programat pe ID28ID18. ID17-ID0 pot s fie ignorai. Dac este setat bitul RxIE, bitul IntPnd va fi setat atunci cnd un cadru de date este acceptat i stocat n obiectul de tip mesaj. Codul lungimii de date (DCL3-0) este oferit de aplicaie. Atunci cnd tratarea mesajelor stocheaz un cadru de date n obiectul de tip mesaj, va stoca codul lungimii de date i opt bytes de date. Dac acest cod al lungimii de date este mai mic dect 8, bytes rmai ai obiectului de tip mesaj vor fi suprascrii cu valori nespecificate. Regitrii masc (biii Msk28-0, UMask, MXtd i MDir) pot fi utilizai (UMask=1), pentru a permite grupurilor de cadre de date cu identificatori similari de a fi acceptate. Bitul Dir nu ar trebui mascat n aplicaiile standard.

VIII.6 Tratarea mesajelor recepionate


CPU poate citi un mesaj recepionat la orice moment de timp prin intermediul regitrilor IFn de interfa. Consistena datelor este garantat de automatul de stare al tratrii mesajelor. Tipic, CPU va scrie mai nti 0x007F la registrul masc de control, iar apoi numrul obiectului de tip mesaj la registrul de cerere de control. Aceast combinaie va transfera ntregul mesaj recepionat de la RAM-ul mesajelor la registrul buffer al mesajului. Suplimentar, biii NewDat i IntPnd sunt eliberai n RAM-ul mesajelor (nu n buffer-ul de mesaj).

- 31 -

MICROCONTROLERE Dac obiectul de tip mesaj utilizeaz mti pentru filtrarea de accept, biii de arbitrare vor arta care din mesajele cu potrivire au fost acceptate. Valoarea actual a NewDat arat dac a fost recepionat un mesaj nou, de la ultima dat a citirii obiectului de tip mesaj. Valoarea actual a MsgLst arat dac mai mult de un mesaj a fost recepionat de la ultima dat a citirii obiectului de tip mesaj. MsgLst nu va fi resetat automat. Prin intermediul unui cadru remote, CPU poate solicita unui alt nod CAN s ofere noi date pentru un obiect de recepie. Setarea bitului TxRqst pentru un obiect de recepie va determina transmisia unu cadru remote cu identificatorul obiectului de tip mesaj recepionat. Cadrul remote va declana cellalt nod CAN pentru a ncepe transmisia cadrului de date care s-a potivit. n situai n care cadrul de date de potrivire este recepionat nainte de a putea fi transmis cadrul remote, bitul TxRqst este automat resetat.

VIII.7 Configurarea unui buffer FIFO


Cu excepia bitului EoB, configurarea obiectelor de recepionare aparinnd unui buffer FIFO este aceeai cu configurarea unui (singur) obiect de recepionare, a se vedea: Configurarea unui obiect de recepionare. Pentru a concatena dou sau mai multe obiecte de mesaje ntr-un buffer FIFO, identificatorii i mtile (n cazul utilizrii lor) ai obiectelor de mesaje trebuie s fie programate cu valorile de potrivire. Datorit prioritii implicite a obiectelor mesajelor, obiectul de mesaje cu numrul cel mai mic va fi primul obiect de mesaj al buffer-ului FIFO. Bitul EoB al obiectelor de mesaj al buffer-ului FIFO, cu excepia ultimului, trebuie s fie programat la zero. Biii EoB ai ultimului obiect de mesaj al unui buffer FIFO este setat la unu, configurndu-l ca i captul unui bloc.

VIII.8 Recepionarea mesajelor cu buffer-ele FIFO


Recepionarea mesajelor cu identificatori ce se potrivesc unui buffer FIFO sunt stocate ntr-un obiect de tip mesaj al unui buffer FIFO, ncepnd cu obiectul de tip mesaj cu numrul de mesaj cel mai mic. Atunci cnd este stocat un mesaj la un obiect de tip mesaj al unui buffer FIFO, va fi setat bitul NewDat al acestui obiect de tip mesaj. Prin setarea NewDat n timp ce EoB este zero, obiectul de tip mesaj este blocat pentru un acces viitor n scrierea de ctre tratarea mesajelor, pn ce software-ul de aplicaie a scris bitul NewDat napoi la zero. Mesajele sunt stocate ntr-un buffer FIFO pn ce este gsit ultimul obiect de tip mesaj al acestui buffer FIFO. Dac nici unul din obiectele de tip mesaj precedente nu este eliberat prin scrierea lui NewDat la zero, toate mesajele urmtoare pentru acest buffer FIFO vor fi scrise peste ultimul obiect de tip mesaj al buffer-ului FIFO i astfel se vor suprascrie mesajele anterioare. Citirea de la un buffer FIFO Atunci cnd un CPU transfer coninuturile unui obiect de tip mesaj la registrul IFn buffer-ului de mesaj, prin scrierea numrului su la registrul IFn de cerere de control, registrul masc de control corespunztor ar trebui programat astfel nct biii NewDat i IntPnd sunt resetai la zero (TxRqst/NewDat = 1 i CtrlIntPnd = 1). - 32 -

MICROCONTROLERE Valorile acestor bii din registrul de control al mesajului vor reflecta ntotdeauna starea nainte de resetarea acestor bii. Pentru a asigura funcionarea corect a buffer-ului FIFO, CPU ar trebui s citeasc obiectele de tip mesaj ncepnd de la obiectul FIFO cu numrul cel mai mic al mesajului. Figura VIII-2 prezint modul de setare al obiectelor de tip mesaj ce sunt concatenate unui buffer FIFO, ce poate fi tratat de ctre CPU.
Figura VIII-6. Tratarea CPU a unui buffer FIFO

VIII.9 ntreruperile de tratare


Dac mai multe ntreruperi se afl n ateptare, registrul de ntrerupere CAN va indica spre acea ntrerupere n ateptare cu prioritatea cea mai mare, nelund n considerare ordinea lor cronologic. O ntrerupere rmne n ateptare pn ce software-ul aplicaiei a eliberat-o. ntreruperea de stare are prioritatea cea mai mare. Dintre ntreruperile de mesaje, prioritatea ntreruperii pentru obiectul mesajului descrete o dat cu creterea numrului mesajului. - 33 -

MICROCONTROLERE O ntrerupere de mesaj este eliberat prin tergerea bitului IntPnd din obiectul mesajului. ntreruperea de stare este eliberat prin citirea registrului de stare. Identificatorul de ntrerupere, IntPnd, din registrul de ntrerupere, indic acea cauza a ntreruperii. Atunci cnd nu se afl n ateptare o ntrerupere, registrul nu va menine valoarea zero. Dac valoarea registrului de ntrerupere este diferit de zero, atunci exist o ntrerupere n ateptare i, dac IE este setat, semnalul IRQ al ntreruperii la EIC va fi activ. ntreruperea rmne activ pn ce registrul de ntrerupere este napoi la valoarea zero (cauza ntreruperii este resetat) sau pn ce IE este resetat. Valoarea 0x8000 indic faptul c o ntrerupere este n ateptare deoarece nucleul CAN a actualizat (nu neaprat schimbat) registrul de stare (ntrerupere de eroare sau ntrerupere de stare). Aceast ntrerupere are cea mai mare prioritate. CPU poate actualiza (reseta) biii de stare RxOk, TxOk i LEC, dar un acces de scriere al CPU la registrul de stare nu poate genera niciodat sau reseta o ntrerupere. Toate celelalte valori indic faptul c sursa ntreruperilor este una aparinnd obiectelor de tip mesaj. IntPnd indic ntreruperea mesajului n ateptare, cu prioritatea de ntrerupere cea mai mare. CPU controleaz dac o schimbare a registrului de stare poate cauza o ntrerupere (biii EIE i SIE din registrul de control CAN) i dac linia de ntrerupere devine activ la setarea registrului de ntrerupere dac acesta este diferit de zero (bitul IE din registrul de control CAN). Registrul de ntrerupere va fi actualizat chiar i n cazul resetrii IE. CPU prezint dou posibiliti de a urmri sursa ntreruperii unui mesaj. Mai nti, poate urmri Intld din registrul de ntrerupere i apoi, poate indica registrul de ntrerupere n ateptare (a se vedea Regitrii de ntrerupere n ateptare 1&2). O rutin serviciu de ntrerupere ce citete mesajul ce reprezint sursa unei ntreruperi poate citi un mesaj i reseta IntPnd al obiectului de tip mesaj la acelai moment de timp (bitul CtrIntPnd din registrul masc de control). Dac este eliberat IntPnd, registrul de ntrerupere va indica urmtorul obiect de tip mesaj cu o ntrerupere n ateptare.

IX Echipamente i dispozitive folosite


Pentru buna desfurare a lucrrii se vor folosi urmtoarele dispozitive i resurse software MCBSTR7 plac de evaluare 11 Surse de alimentare 7-9V, max 190 mA 11 Versiunea de evaluare MDK-ARM 11 ULINK 1 Generator de semnale 1 Osciloscoape 11 Analizoare logice INTRONIX 11 Aparate de msur digitale 2 Osciloscoapele, analizoarele i generatorul vor permite vizualizarea i generarea semnalelor prin conectarea la header-e.

- 34 -

MICROCONTROLERE 1. Se vor studia i evidenia facilitile KEIL pentru simularea controlerului CAN. (vezi HELP-ul KEIL). 2. Se va analiza, executa i testa exemplul din aplicaia Keil pentru CAN. 3. Se vor analiza i descrie funciile de bibliotec utilizate.

- 35 -

S-ar putea să vă placă și