Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Calculatoare


Index » educatie » » informatica » Calculatoare
» C.A.N. (CONTROLLER AREA NETWORK) - PREZENTARE GENERALA


C.A.N. (CONTROLLER AREA NETWORK) - PREZENTARE GENERALA


C.A.N ( CONTROLLER AREA NETWORK )

CAN PREZENTARE GENERALA



INTRODUCERE

CAN este un concept si un protocol de comunicatie pe linii seriale. Conceptul CAN desemneaza domeniul aplicatiilor care include controlul unor procese distribuite intr-o retea de noduri de proces relativ simple conectate cat mai economic, dar relativ fiabil. Nodurile sunt controloare de proces, cu rol de culegere sau emitere de informatii, de organizare de date de stare sau executie, precum si transferul de informatii de control proprii gestiunii retelei, implementand nivelurile OSI (Open System Interconnection) fizic, de legatura de date si de retea. Protocolul CAN de comunicatie pe linii seriale este un set de reguli si proceduri destinate implementarii standardizate a nivelurilor OSI pentru construirea unei retele de noduri bazate pe o pereche de linii diferentiale la care se conecteaza, ca la o magistrala unica, toate controloarele CAN care sunt necesare unei aplicatii distribuite de proces. Principalele cerinte ale aplicatiilor industriale pentru care a fost relizat conceptul CAN sunt:

- transmiterea multiplexata de pachete scurte de date de maximum 10 octeti;

- semnalarea erorilor la receptie si implementarea unor proceduri de corectie;

- asigurarea unui inalt nivel de siguranta a datelor;

- performante de viteza acceptabile (pana la 1Mbit/s);

- pret de cost al implementarii redus prin linii de comunicatii seriale;

- noduri usor de implementat prin controloare standard;

- implementare hardware a protocoalelor de nivel jos;

- implementare software a protocoalelor de nivel inalt;

- incarcarea cat mai redusa a calculatorului front-end spre reteaua CAN;

Conceptul CAN a fost initiat proiectat de firma BOSH si implementat de mai multe firme producatoare de circuite dedicate destinate aplicatiilor pentru echipamente de proces, dintre care se distinge firma PHILIPS. Primele specificatii de protocol CAN au fost publicate in 1985 si pe baza acestora au fost concepute o serie de circuite dedicate si de implementari de programe de aplicatii, care au permis, prin codesign, transferarea in hardware, cu performante de viteza corespunzatoare, dar la un pret de cost relativ modest, a unor proceduri ale protocoalelor aferente. Specificatiile s-au succedat, pentru includerea unor facilitati suplimentare, la fiecare noua versiune. Toate versiunile ulterioare sunt compatibile cu versiunile anterioare, fiind concepute ca seturi mai largi de reguli decat cele anterioare. Unele incompatibilitati exista totusi, dar apar in situatii rare si sunt relativ simplu de remediat.

Specificatia CAN, versiunea 1.0 a aparut in 1985.

Versiunea 1.1 din 1987 a refacut o serie de modificari in specificatiile intervalelor de timp pe bit.

Versiunea 1.2 din 1990, care este varianta cea mai raspandita si astazi, a permis tolerante mai mari la variatiile de viteza ale secventei receptionate.

Versiunea 2.0 din 1991 este compusa din 2 parti, partea A si partea B, dintre care partea A este chiar versiunea 1.2 din 1990, pastrata astfel integral. Partea B defineste un format suplimentar optional "extins", care permite performante de multiplexare in plus fata de cele deja definite.

Se dau mai jos detalii asupra schimbarilor aduse de fiecare versiune.

Intre versiunile 1.0 si 1.2 s-au adus numai modificari minore: versiunea 1.1 a schimbat specificatiile privind cerintele pentru intervalele de timp in secventele de semnale, pentru a creste performantele si a usura detectia; versiunea 1.2 a adus cateva modificari la interpretarea bitilor dominanti si a fost marita toleranta sincronizarii, permitandu-se implementari cu oscilatoare ceramice in locul celor cu cristale de cuart.

Versiunea 2.0 partea B a fost introdusa pentru a permite extinderea la un format nou, optional, care sa permita compatibilitate conceptului CAN cu cerinte de pe piata americana a fabricantilor de automobile. La aceasta categorie de aplicatii sunt specificate retele pentru viteze de peste 100 Kbit/s (denumite acolo "de clasa C"). Modificarile s-au introdus la procedurile de adresare, prin extinderea posibilitatilor de la un camp de 11 biti la unul de 29 biti. Cu folosirea unui identificator de 29 biti se poate implementa o strategie de prelucrare a mesajelor similara cu cea publicata de SAE (societatea inginerilor americani de automobile - American Society of Automotive Engineers) in specificatia de protocol J1850, recomandata pentru a fi aplicata in retele de viteze mai mici (sub 100 Kbits, denumite de clasa A si B). Ulterior, comitetul SAE-J1939 a acceptat conceptul CAN pentru autobuze , camioane, masini agricole si de constructii si l-a desemnat ca fiind destinat retelelor de clasa C, respectiv pentru 250 Kbits/s, folosind avantajul unui spatiu de adrese mult mai mare al formatului extins, ceea ce permite standardizarea identificatorilor de mesaj folositi in adresare.

Cu toate adaugirile si modificarile specificatiilor CAN, majoritatea aplicatiilor folosesc formate normale si proceduri standard, a caror stabilitate in timp le confirma eficienta si le asigura o compatibilitate excelenta.

DETALII DE FUNCTIONARE

Tipuri de cadre

Mesajele transferate sunt controlate si apar sub patru tipuri de cadre:

cadre de date : transporta datele de la transmitator la receptor;

cadre de comanda : sunt transmise pe o unitate de bus pentru a cere permisiunea de a transmite un cadru de date cu acelasi identificator;

cadru de eroare : este transmis de oricare unitate la detectarea unei erori;

cadru de retransmisie : este folosit pentru a produce o intarziere mai mare intre cadrul anterior si cel urmator de date sau de comanda.

Cadrele de date si cele de comanda pot fi folosite ambele in Formatul Standard de Cadre si in Formatul Extins de Cadre; acestea sunt separate de cadrele precedente prin cadre de intermediere.


Fig. 1b. Diferentele intre Formatul Standard si cel Extins cu bit-IDE

Cadre de date

Un cadru de date este prezentat in fig. 1a., si este compus din sapte campuri diferite de biti: camp de inceput(SoF), camp de arbitrare(AF), camp de control(CF), camp de date (DF), camp de control(CRC.F), camp de cerere(ACK.F), camp de sfarsit(EoF).


Fig. 1a. Componenta Campului de Date

Camp de inceput

Marcheaza inceputul campurilor de date si de comanda. Este alcatuit dintr-un singur bit dominant(vezi Anexa1).

Unei statii ii este permisa inceperea transmisiei doar daca busul este in asteptare. Toate statiile trebuie sa se sincronizeze de la inceput prin acest bit, de la statia care incepe prima transmisia.

Camp de arbitrare

Formatul acestuia difera de la formatul standard la cel extins :

in cazul standard AF contine 11-biti de identificare plus bitul RTR. Bitii de identificare sunt notati ID-28ID-18.

in cazul extins AF exista 29 de biti de identificare, bitul-SRR, bitul-IDE, bitul-RTR. Bitii sunt notati ID-28ID-0.

Pentru a putea face distinctie intre formatele standard si extins, bitul rezervat r1 din specificatiile CAN anterioare 1.0 si 1.2, acum este notat ca bit-IDE.

Identificatorul

in formatul standard lungimea lui este de 11-biti si corespunde ID-ului de baza in formatul extins. Acesti biti sunt transmisi in ordinea ID-28 pana la ID-18. Ultimul bit semnificativ este ID-18. Bitii cei mai semnificativi (ID-28 pana la ID-22) nu trebuie sa fie toti 'recesivi'.

in formatul extins , in contrast, acesta contine 29-biti. Se remarca doua sectiuni:

ID-ul de baza cu 11-biti;

ID-ul extins cu 18-biti.

ID-ul de baza contine 11-biti. Este transmis in ordine de la ID-28 la ID-18. Este echivalent cu identificatorul de format standard. ID-ul de baza defineste prioritatea de baza a cadrelor extinse.

ID-ul extins contine 18-biti. Este transmis in ordine de la ID-17 la ID-0.

In format standard, indicatorul este urmat de bitul RTR.

Bitul-RTR

In cadrele de date bitul-RTR trebuie sa fie "dominant".Impreuna cu un pachet de control, bitul-RTR trebuie sa fie "recesiv"

In format extins ID-ul de baza este transmis primul, urmat de bitul-IDE, si bitul-SRR. ID-ul extins este transmis dupa bitul-SRR.

Bitul-SRR

Este un "recesiv". Este transmis in format extins de la pozitia bitului-RTR si substituie acest bit in format standard.

De asemenea coliziunile sunt in format standard si in format extins, ID-ul de baza al fiecaruia este acelasi ca al identificatorului formatului standard, este acelasi ca in format standard. Identificatorul este rezolvat in asemenea mod ce permite formatului standard sa urmareasca formatul extins.

Bitul-IDE

Apartine de:

campul de arbitrare pentru formatul extins

campul de control pentru format standard

Bitul-IDE in cadrul standard este transmis "dominant", pe cand in format extins este transmis ca "recesiv".

Campul de control

Este format din 6 biti. Fig. 1c.


Fig. 1c. Alcatuirea campului de control

Formatul lui este diferit pentru formatul standard si cel extins. Cadrele in formatul standard includ codul "lungime de date", bitul IDE care este transmis dominant, si bitul rezervat r0. Cadrele in formatul extins includ codul: lungime de date si 2 biti rezervati r1, si r0. Bitii rezervati trebuie sa fie transmisi "dominant", dar receptorii accepta biti "dominant " si "recesiv" in toate combinatiile.

Lungimea codului de date

Numarul de biti din campul de date este indicat de lungimea codului de date. Aceasta lungime a codului de date are o largime de 4-biti, si este transmisa impreuna cu campul de control, fig. 1c. si tab. 1a.

Numarul de

Bytes de date

Lungimea codului de date

DLC3

DLC2

DLC1

DLC0

0

D

D

D

D

1

D

D

D

R

2

D

D

R

D

3

D

D

R

R

4

D

R

D

D

5

D

R

D

R

6

D

R

R

D

7

D

R

R

R

8

R

D

D

D

D = Dominant

R = Recesiv

 


Tab. 1a. Codarea numarului de biti de date prin lungimea codului de date

Campul de date

Consta din datele de transmis intr-un cadru de date. Poate contine de la 0 la 8 biti, fiecare continand cate 8-biti care sunt transferati mai intai MSB.

Campul de control

Contine secventa de control urmata de un delimitator de control.


Fig. 1d. Alcatuirea campului CRC

Secventa de control

Cadrul de control este derivata dintr-un cod ciclic redundant optimizat pentru cadre ce contin mai putin de 127de biti. Pentru a realiza calculul de control, polinomul deimpartit este definit ca polinom, elementele care rezulta din sirul de biti decodati, constaudin: SoF, AF, CRC.F, DF daca este prezent si pentu ultimii 15 cei mai mici coeficienti sunt 0. Acest

polinom este impartit de generatorul polinomial:

X +X +X +X +X +X +X

Restul acestei impartiri polinomiale este secventa de control, care este transmisa pe bus. Pentru a implementa aceasta functie un registru de 15-biti de siftare poate fi folosit (CRC_RG). Daca NXTBIT decide ca urmatorul bit din sirul de biti, dat de secventa de biti decodati din SoF si pana la sfarsitul campului de date, secventa CRC este calculata dupa cum este indicat in tab. 1b.

REPEAT

CRCNXT = NXTBIT EXOR CRC_RG (14);

CRC_RG (14:1) = CRC_RG (13:0); // siftare la dreapta cu o pozitie

CRC_RG (0) = 0;

IF CRCNXT THEN

CRC_RG (14:0) = CRC_RG (14:0) XOR (4599Hex);

ENDIF

UNTIL (CRC SEQUENCE incepe sau este o conditie de eroare)

 


Tab. 1b. Calculul secventei CRC

Delimitatorul de control

Secventa de control este urmata de delimitatorul de control, care consta dintr-un singur bit recesiv

Camp de raspuns

Are o lungime de 2-biti, si contine delimitatorii ACK-Slot si ACK-Delimitator. In campul de raspuns statiile transmitatoare trimit 2 biti "recesivi". Receptorul, care a receptionat un mesaj valid, raporteza aceasta transmitatorului prin transmiterea unui bit "dominant" in timpul ACK-Slot. Fig.1e.


Fig. 1e. Camp ACK ( raspuns )

Ack-Slot

Toate statiile ce au receptionat secventa de control potrivita raporteaza aceasta impreuna cu ACK-Slot prin suprascrierea bitului "recesiv" din transmitator cu un bit "dominant".

Delimitator de raspuns

Este al doilea bit din campul de raspuns si trebuie sa fie un bit "recesiv". In consecinta ACK-Slot este inconjurat de 2 biti "recesivi"(CRC si ACK).

Sfarsitul cadrului

Fiecare cadru de date si cadru de control este delimitat de o secventa fanion ce consta din 7-biti "recesivi".

Cadrul de comanda

O statie ce functioneaza ca receptor poate initia transmisia datelor respective prin nodul sursa transmitand un cadru de comanda.Fig.1f.

Cadrul de comanda exista in amandoua formatele standard si extins. In amandoua cazurile este compus din 6 campuri diferite de biti: SoF, AF, CF, CRC.F, ACK, EoF.

In contrast cu cadrele de date bitul- RTR din cadrele de control este recesiv. Aici nu exista camp de date, independent de valorile din Lungimea Codului de Date care poate avea orice valoare intre 08. Valoarea este lungimea codului de date a cadrului de date corespondent.


Fig. 1f. Cadru de Comanda

Polaritatea bitului-RTR indica cand un cadru transmis este un cadru de date sau un cadru de control.

Cadru de eroare

Consta din doua campuri diferite. Primul camp este dat de superpozitia fanionului

de eroare obtinut din diferite statii. Urmatorul camp secund este Delimitatorul de eroare.

Pentru a termina corect un cadru de eroare, un nod pasiv la erori poate avea nevoie ca bus-ul sa fie in asteptare pentru cel putin timpul a 3-biti. Deasemenea busul nu trebuie sa fie incarcat suta la suta. Fig.1g.


Fig. 1g. Cadru de eroare

Fanionul de eroare

Aici sunt doua forme pentru un fanion de eroare: un fanion Activ Error si un fanion Pasiv Error. Primul consta din 6-biti dominanti consecutivi, iar al doilea consta din 6-biti recesivi" consecutivi, mai putin daca sunt rescrisi de bitii dominanti" din alte noduri. O statie Error Activ detecteaza o eroare , o semnalizeaza prin transmiterea unui fanion de AE. Formele fanionului de eroare incalca legile de impachetare a bitilor aplicate tuturor campurilor din cadrul de start pana la delimitatorul de CRC, sau distrug formele fixe pentru campul de raspuns, sau campul de EoF. In consecinta toate celelalte statii detecteaza o conditie de eroare si incep transmisia unui flag de eroare. Astfel secventa de biti dominanti poate fi monitorizata in formele rezultatelor de pe bus printr-o superpozitie a diferitelor fanioane de eroare transmise individual de statii. Lungimea totala a acestei secvente variaza intre un minimum de 6 si maximum de 20 de biti.

O statie pasiva la erori cand detecteaza o conditie de eroare incearca sa o semnalizeze prin transmisia unui fanion PE. Statia pasiva la erori asteapta pentru 6-biti consecutivi de egala polaritate, incepand de la starul flagului PE. Fanionul PE este complet cand acesti sase biti egali au fost detectati.

Delimitator de eroare

Consta din 8-biti recesivi". Dupa transmisia unui fanion de eroare, fiecare statie trimite bitii recesivi si monitorizeaza bus-ul pana cand este detectat un bit "recesiv"

Altfel incepe transmisia a inca 7-biti "recesivi

Cadre de retransmisie

Contine 2 campuri de biti, fanionul de retransmisie si delimitatorul de retransmisie.

Aici sunt 2 tipuri de conditii de retansmisie care amandoua conduc la transmisia unui fanion de retransmitere:

conditiile interne ale unui receptor care cere o intarziere a urmatorului cadru de date sau a unui cadru de control

detectia unui bit dominant la primul si al doilea bit din cadrul intermediar

daca nodul CAN esantioneaza un bit dominant la al 8-lea bit dintr-un delimitator de eroare sau delimiator de retansmisie, va incepe transmisia unui cadru de retransmisie. Controlul de erori nu va fi incrementat

Cadru de retransmisie face ca conditia prima de retransmisie sa poata sa inceapa doar odata cu bitul de asteptare. Cand cadrul de transmisie duce la a doua si a treia conditie de retransmisie, incepe cu primul bit de dupa detectia bitului dominant. Fig.1h.

Cel mult 2 cadre de retransmisie pot fi generate sa intarzie urmatorul cadru de date sau control.


Fig. 1h. Cadru de retransmisie

Fanionul de retransmisie

Consta din sase-biti dominanti. Forma fanionului distruge forma fixa din campul de asteptare. In consecinta toate celelalte statii detecteaza de asemenea o conditie de retransmisie. In cazul in care este detectat un bit dominant", pe parcursul a trei biti din cadru intermediar, atunci se va interpreta aceasta ca un cadru de start.

Delimitatorul de retransmisie

Contine 8 biti recesivi" . Delimitatorul de retransmisie este acelasi de la delimitatorul de eroare . Dupa transmisia fanionului retransmisie statia monitorizeaza bus-ul pana cind detectecteaza o tranzitie de la un bit "dominant" la unul "recesiv . In acest moment fiecare statie a terminat de transmis pe bus fanionul de retransmisie si toate statiile incep transmisia concomitenta a celor sapte sau mai multi biti "recesivi

Cadre intermediare

Cadrele de date si de comanda sunt separate de cadrele anterioare de orice tip (de date , de comanda , de eroare ,de retransmisie) de un camp de biti numiti intermediari .In contrast cadrul de retransmisie si de eroare nu este precedat de un camp intermediar si mai multe cadre de retransmisie nu sunt separate de un cadru intermediar.

Spatiile dintre cadre

Contin campurile de biti intermediari si bus liber , iar in cazul unei erori pasive statia care a transmis mesajul anterior suspenda transmisia. Fig. 1i.

Fig. 1i ne arata structura spatiului de intermediere a statiilor care nu sunt pasive la erori sau care sunt receptoare ale mesajelor anterioare , la fel ca si pentru statiile pasive la erori care au transmis mesaje anterioare.

Intermedierea

Contine trei biti recesivi". In timpul intermedierii singurele actiuni care pot exista sunt semanalizarile de conditii de retransmisie si nici unei statii nu ii este permis sa inceapa transmisia de cadre de date sau de comanda .


Fig. 1i. Spatii de intermediere

Bus-ul in asteptare

Perioada de bus de asteptare poate sa fie de lungimi diferite. Bus-ul recunoscut ca liber si fiecare statie care are ceva de transmis poate accesa bus-ul. Mesajul care este transmis in timp ce alt mesaj a inceput sa fie transmis are primul bit de "intermission".

Detectarea unui bit dominant pe bus este interpretata ca SoF .

Intreruperea transmisiei

Dupa ce o statie pasiva la erori a transmis un mesaj , aceasta trimite opt biti"recesivi dupa intermediere, inainte sa inceapa transmisia mesajului urmator sau sa recunoasca bus-ul. Daca intre timp o transmisie (cauzata de o alta statie) incepe, statia va deveni receptor al acestui mesaj.

ARHITECTURA NOD CAN

In mod general fiecare modul CAN poate fi divizat in mai multe blocuri functionale. Conexiunea cu bus-ul de linie CAN este facuta de Transceiverul CAN optimizat cu aplicatiile. Transceiverul controleaza semnalele nivelului logic provenite de la controlerul CAN catre nivelul fizic pe bus si vice-versa.



Fig. 1 Arhitectura modul CAN

Nivelul imediat urmator este asadar controlerul CAN care implementeaza protocolul CAN complet. De asemenea el stocheaza mesajele in bufere, realizand si o filtrare.

Toate aceste functii CAN sunt controlate de un modul de control care realizeaza functionalitatea aplicatiei. De exemplu el este cel care citeste senzorii si realizeaza interfatarea om-masina(MMI).

Locul de implementare hardware a controlerului CAN este indicat in fig. 1.(vezi si schema ARHITECTURA MODULUL CAN ).

Microcontroler

SJA1000 este un controler utilizat in retelele CAN industriale.

Ca elemente de circuit posibil a fi utilizate se pot mentiona:

- Compatibilitatea pinilor cat si cea electronica cu controlerul anterior PCA82C200;

- Modul PCA82C200(Modul BasicCAN este implicit);

- Buferul de receptie este marit(64-octeti FIFO);

- Suporta identificatori de 11-biti cat si de 29-biti;

- rata de biti mai mare de 1Mbits/s;

- Frecventa de ceas de 24MHz;

- Interfatarea cu o varietate de familii de microprocesoare.


Fig. 2 Diagrama bloc SJA1000.

Controler gazda

AT90S8535 este un microcontroler de mare integrare pe 8-biti, microcontroler ce se bazeaza pe arhitectura AVR®RISC. Ca membru al familiei AVR AT90, 8535 este optimizat pentru controlul aplicatiilor. Acesta poseda functii cheie de 512-bytes on-chip RAM si un timer watchdog. De asemenea un up/down timer/counter. Atata timp cat AT90S8535 sunt CMOS, ele au software de reducere a modului de alimentare de doua tipuri: Mod Idle si Mod Down.

Este folosit setul de instructiuni standard AVR, si de asemenea exista compatibilitate pin-la-pin cu celelalte produse ale familiei AVR AT90.

Cateva elemente descriptive ale functionarii hardware-ului on-chip se vor prezenta in continuare:

- 118 instructiuni, majoritatea executabile intr-un singur ciclu de ceas;

- 32x8 registrii de uz general;

executa pana la 8 milioane de instructiuni pe secunda;

memorie de program si de date nevolatila

8K memorie programabila Flash (pana la 1000 de cicli de scriere/stergere)

512 biti de SRAM

512 biti de memorie programabila EEPROM

watchdog timer programabil

port serial UART programabil

interfata seriala SPI master/slave

moduri de economisire a puterii idle si power down

surse de intrerupere interne si externe

consum mic si viteza ridicate datorate tehnologiei CMOS

Transceiver

Transcevier-ul PCA82C251 [3] produce interfata dintre un protocol de control si linia fizica de transmisie. Este produs pentru a transmite date cu o rata de bit mai mare de 1Mbits/s prin doua fire cu tensiunile de bus de linie descrise de standardul ISO 11898.

Dispozitivul este conceput pentru a lucra in sistem de Bus CAN cu o tensiune nominala de alimentare de 24 V. Este de remarcat aici faptul ca PCA82C251 poate functiona la fel de bine in aplicatii industriale CAN atat in tandem cu alte dispozitive (cum ar fi PCA82C250), in conformitate cu standardele ISO 1898 si Specificatiile DeviceNetTM.

Tabelul 1 contine parametrii de functionare efectivi ai circuitului:

Parametrii

PCA82C251

Tensiune nominala de alimentare a sistemului

12/24 V

Tensiunea continua maxima pe terminal Bus (0<VCC <5.5)

-40V <VCANL,H < +40V

Tensiune maxima pe transmitatorul Bus (ISO 7637)

-200 V< Vtr < +200 V

Alimentarea minima a Transceiverului in tensiune Pentru nr. Max. de aplicatii(Rl=45 Ohm)

VCC > 4.5 V

Tab. 1 Detali de functionare PCA82C251

ARHITECTURA CAN PE CIRCUITE INTEGRATE DISPONIBILE IN INDUSTRIE ( PHILIPS / ATMEL )

ARHITECTURA TIPICA CU SJA1000

Configuratia registrilor si pinilor pentru SJA1000 ne permite sa folosim toate tipurile de Transceivere integrate sau discrete. In concordanta cu interfata flexibila a microcontrolerelor este posibil lucrul cu diferite microcontrolere.

Fig. 2 este un exemplu tipic de aplicatie incluzand microcontrolerul

AT90S8535 si transceiverul PCA8C251.Controlerul CAN functioneaza ca o sursa de clock iar semnalul de Reset este generat de o sursa externa circuitului. In acest exemplu Chip select-ul lui SJA1000 este controlat prin functia portului microcontrolerului PD4 OC1A. Cu toate acestea, intrarea de Chip select poate fi controlata si de VSS. Controlul via un decodor de adrese este posibil, de exemplu, cand bus-ul de adrese/date este folosit de catre alte periferice.

Alimentarea

SJA1000 are 3 perechi de pini alimentare in tensiune care sunt folositi

de diverse blocuri interne ale CAN controller-ului atat analogice cat si digitale:

-VDD1/VSS1:logica interna (digital);

-VDD2/VSS2:intrare comparator (analogic);

-VDD3/VSS3:iesire cale    (analogic).

Alimentarea a fost separata pentru o mai buna protectie EME. De exemplu VDD2 poate fi decuplat printr-un filtru RC pentru o micsorare a zgomotului din comparator.

Bus CAN

AT90S

(8535) SJA1000 PCA82C250/251

13

14

19

20*

26 11

VDD    (MODUL INTEL) 27 VDD    22 28 8 VSS

1

18

C1

6-24 MHZ

10 C2 C1=C2=15 pF

RESET   

17

* Comparator Bypass activ

 


Fig. 3 Aplicatie tipica de SJA1000

Oscilatorul si strategia ceasului

SLA1000 poate opera cu oscilator on-chip, sau cu sursa externa de ceas. In mod aditional pinul CLK OUT poate permite sa scoata frecventa de ceas pentru controller-ul gazda. Fig. 4 ne arata 2 principii de functionare ceas pentru aplicatii cu SLA1000.(Vezi si desenul "Schema conector CAN-SJA1000")


Fig. 4 Ceasul sistemului

Daca semnalul CLK OUT nu este necesar poate fi comutat pe inchis (Clock Off=1 ). Frecventa semnalului CLK OUT poate fi modificata cu Registrul de Diviziune Ceas:

-f CLK OUT=f XTAL /factorul de diviziune al ceasului .

La pornirea alimentarii, valoarea factorului de Diviziune Ceas depinde de modul de selectare al interfetei (pinul 11). Daca se foloseste un cristal de 16MHz in modul Intel, frecventa la CLK OUT este de 8MHz. In modul Motorola, un factor de diviziune de 12 este folosit la pornire, rezultand 1,33MHz in acest caz.

Reset

Pentru o resetare a circuitului SJA1000 starea Oscilatorului de ceas trebuie sa fie data de pinul XTAL1 al Controller-ului CAN. O resetare externa pe pinul 17 este sincronizata cu lungimea interna de 15t*XTAL. Aceasta garanteaza o resetare corecta a tuturor registrilor lui SJA1000. De remarcat ca in acest caz este nevoie de un oscilator de start-up extern la pornire. (Vezi si desenul "Conectarea Microcontrolerului la CAN")

Trecrea in starile sleep (adormire) si wake-up (trezire)

In plus fata de bitul de go to sleep din Registrul de comanda (modul BasicCAN) si de bitul de Mod sleep din Registrul de moduri (modul PeliCAN), SJA1000 intra in sleep daca nu exista nici o activitate care sa intrerupa acesta stare. Oscilatorul continua sa functioneze timp de 15 biti CAN. Aceasta permite ceasului microcntrolerului (frecventei CLK OUT) sa intre in modul de consum redus de putere.

Daca apare una din cele 3 conditii de trezire, oscilatorul porneste din nou si se genereaza o intrerupere de wake-up. In momentul in care oscilatorul devine stabil, frecventa de CLK OUT devine activa.

Interfata cu Nivelul fizic

In scopul compatibilitatii cu PCA82C500, SJA1000 include o intrare analogica de comparator de receptie. Acest comparator integrat poate fi folosit daca functiile comparatorului sunt realizate cu componente discrete.

Daca se foloseste un circuit Transceiver integrat extern, si functiile comparatorului nu sunt activate in Registrul de diviziune ceas, intrarea RX1 trebuie sa fie conectata la o referinta de tensiune de 2.5V (referinta de tensiune din afara circuitului). Fig. 6 ne ilustreaza circuitele echivalente pentru ambele configuratii: CPB = activ/inactiv. In mod aditional calea de wake-up este oprita.

Pentru toate aplicatiile noi unde este folosit un circuit integrat Transceiver, este de recomandat ca functiile comparatorului Bypass sa fie activate de SJA1000 ca in fig. 5. Daca aceste functii sunt active, intrarea de Trigger-Schmitt este, si intarzierea propagarii interne t este mai mica decat intarzierea t a comparatorului de receptie. Acest lucru influenteaza in mod benefic lungimea maxima pe Bus. In mod aditional, apare si posibilitatea ca in Modul "Sleep", alimentarea in curent sa se reduca considerabil.

ARHITECTURA TIPICA CU PCA82C251

Transceiverul PCA82C251 este produs pentru a realiza interfatarea dintre controlerul de protocol si linia de transmisie fizica.

O aplicatie tipica cu Transceiverul PCA82C251 este figurata in fig. 8. Un protocol de controller este conectat spre Transceiver printr-o linie seriala de date de iesire (TX) si una seriala de intrare (RX). Transceiverul este atasat la Bus prin aceste doua terminale de Bus CANL si CANH, care vor produce o posibilitate de receptie si transmisie diferentiala.

Intrarea Rs este folosita pentru controlul modului. Referinta de tensiune de iesire VREF produce o tesiune de 0.5*VCC nominala.

Pentru aplicatii industriale generale PCA82C251 este recomandat sa fie implementat luand ca model fig. 8c. , cu nivelul de sus al tensiunii de "Breakdown", si cu posibilitatea de a incarca cai pana la 45Ω pe intreaga gama a tensiunii de alimentare. De asemenea PCA82C251 conduce mai putin curent de alimentare in starea recesiva si protejeaza iesirea de bus in situatia de eroare de alimentare.(Fig. 8c.)

Moduri de operare

PCA82C251 lucreaza cu trei moduri diferite. Controlul modurilor a fost determinat de intrarea de control Rs :

- Primul mod este Modul "High-speed", care suporta viteza/lungimea maxima pe Bus;

- Al doilea mod este numit Modul "Slope-control ", care poate fi considerat daca se foloseste Bus cu cabluri neprotejate . In acest mod, rata de iesire poate fi scazuta intentionat, de exemplu pentru a reduce electromagnetismul pe linie.




Fig. 5 Intrari in comparatorul de receptie


Fig. 6 Aplicatie standard cu Transceiver integrat

- Al treilea mod este Modul "Stand-by", interesant mai ales in cazul aplicatiilor pe baterii de alimentare, cand consumul de putere al sistemului trebuie sa fie foarte scazut. Reactivarea sistemului se va face automat la o transmisie de mesaj.

Detalii de selectie moduri:

- Px,y = HIGH : este comutat Modul "Stand-by"(VRS <0.3*VCC);

- Px,y = LOW : este comutat Modul "Normal de conectare", care este ori "High-speed " ori este "Slope-control", in functie de rezistenta Rs.

Implementarea sub-nivelului Mediului Fizic de Legatura cu ajutorul transceiverului

Implementarea sub-nivelului de semnal fizic si a nivelului de legatura de date este realizata tipic cu ajutorul produselor integrate de control de protocol de la Philips Semiconductors cum ar fi PCx82C200. Conectarea cu mediul de transmisie este realizata via interfata dependenta de mediu impreuna cu conectorul folosit pentru atasarea a busului de noduri la busul de linie, fig. 8a.

Referinte ale tensiunii de iesire

PCA82C251 produce o referinta de tensiune de iesire VREF, care poate fi folosita de exemplu sa baleeze una din intrarile protocolului de control CAN cu intrarea diferentiala a comparatorului ca in fig. 7. In alte cazuri o referinta de tensiune poate fi generata local la intrarea protocolului de control.

Calcularea Slew-rate

Este de remarcat ca slew-rate(SR) a semnalului de iesire pe bus este proportional cu intensitatea curentului (IRs) pe pinul Rs. Deoarece curentul este determinat in primul rand de valoarea rezistentei Rext, rata de schimb va fi proportionala cu respectiva rezistenta. De remarcat ca exista o diferenta intre rata de schimb "single-ended", care aplica tensiune fiecarei linii bus in mod individual, si rata de schimb de date "diferential", care aplica o tensiune diferentiala intre cele doua linii bus-uri CANL si CANH.

Fig. 8b. ne ilustreaza un caz de rata de schimb "Single-ended", si legatura cu valoarea rezistentei Rext.

Lungimea maxima a liniei de bus

Lungimea maxima a liniei de bus intr-o aplicatie de retea CAN este determinata de urmatorii parametrii fizici:

Bucla de intarziere a nodurilor conectate ( micrcontrolere CAN, transceivere, etc. ) si intarzierea liniei de bus;

Diferenta dintre doua tolerante ale celor doua oscilatoarele ce genereaza bitii in nodurile respective;

Amplitudinea semnalului prin toate rezistentele serie ale cablului de bus si prin rezistentele de intrare ale nodurilor de bus.

Ca efect s-au obtinut urmatoarele lungimi de linii de bus care pot fi implementate cu PCA82C251 in modul High-speed iar parametrii de timing fiind optimizati pentru o intarziere maxima in propagare: Tab. 5. .

Lungime Bus(m)

1000

30

500

100

250

250

125

500

62.5

1000

 


Tab. 5. Relatia dintre Rata de bit si Lungimea de Bus

Determinarea rezistentei cablului de Bus

Standardul ISO 11898 presupune sa se foloseasca o topologie de retea care sa inchida pe o structura cu o singura linie, cu scopul de a minimiza efectele de reflexie pe linia de bus.(Fig. 8d.)


Fig. 8d. Setare be baza pentru bus-ul suistemuluib (ISO 11898)

Conditia statica a intrarii diferentiale de tensiune intr-un nod al bus-ului, este determinata de curentul care trece prin rezistenta de intrare diferentiala a acelui nod. In cazul unui bit dominant iesire tranzistorului din nodul de transmis este comutata in "on", iar din cauza limitarii curentului, tranzistoarele vor fi comutate in "off" pentru un bit recesiv. Generarea acestor tensiuni diferentiale la intrarea in nod (Vdif,in) depind de cum se poate vedea si in fig. 8e.:


Fig. 8e. Digrama de circuit pentru setarea sistemului din Fig. 8d.

- Tensiunea de iesire diferentiala a nodului ce transmite (Vdif,out);

- Rezistenta cablului de bus (Rw = ρ*L) , unde ρ = rezistenta specifica pe unitatea de lungime;

L = lungimea liniei de bus.

- Rezistenta intrarii diferentiale a nodului de receptie (Rdif).

Cel mai rau caz este atunci cand nodul ce transmite este situat la un capat al lungimii bus-ului, iar nodul ce receptioneaza este situat la celalalt capat al retelei.

In acest caz tensiunea de intrare diferentiala la nodul de receptie este calculata folosind :

Vdif,out

Vdif,in =

1 + 2Rw ( 1 + n -1 )

Rt Rdif

Receptia recunoaste un:

- bit recesiv daca tensiunea de intrare diferentiala este mai mica decat 0.5V sau 0.6V;

- bit dominant daca tensiunea de intrare diferentiala este mai mare decat 0.9V sau 1.0V.

Din ecuatia este evident ca valoarea de Vdif,in a unui nivel dominant este restrictionata de:

- Valoarea maxima a tensiunii de iesire diferentiale pentru un nivel dominant (Vdif,out,min);

- Valoarea maxima a rezistentei firului de bus (Rw,max);

- Valoarea minima a rezistentei terminatiilor (Rt,min);

- Rezistenta minima de intrare diferentiala a nodurilor (Rdif,min);

- Numarul maxim de noduri de bus conectate (n_max).

Toate acestea determina urmatoarea relatie:

Vdif,out,min

Vdif,in,min = ≥ Vdif,in,req

1 + 2Rw,max*( 1 + n_max - 1)

Rt,min Rdif,min

Ksm adica marginea de sigurana definita de utilizator, se poate considera o fractiune din diferenta intre nivelul de iesire al nodului de transmis si intrarea de receptie folosita pentru detectarea unui bit dominant:

Vdif,in req = Vtr + Ksm*(Vdif,out-Vtr) ,unde Ksm= 0, . , 1

Vtr =tensiunea dominanta a receptorului

Ecuatiile si sunt baza calculului lungimii maxime a liniei de bus, in functie de:

- Numarul maxim de noduri din sistem (n_max);

- Marimea dorita de siguranta pentru detectie a bitului dominant (Ksm);

- Rezistenta maxima specifica pe unitatea de lungime(pe o sectiune din cablu) a cablului folosit (ρ_max).

1 Vdif,uot,min Rt,min*Rdif,min

Lmax ≤ *( -1)*

2*ρ_max Vtr,max+Ksm*(Vdif,out,min-Vtr,max) Rdif,min+(n_max -1)* Rt.min

Cateva exemple sunt date in tab. 6 unde variaza: tipul firelor folosite si numarul de noduri conectate.


Tab. 6. Lungimea maxima de cablu de bus pentru diferite cabluri si numere

de noduri (n)

Numarul maxim de noduri

Transceiverul PCA82C251 produce o capabilitate de iesire pana la o incarcare minima de Rl,min=45 Ω. Numarul de noduri care pot fi conectate la retea depinde de rezistenta minima de incarcare pe care transceiverul este capabil sa o conduca. Numarul maxim de noduri poate fi calculat folosim diagrama din fig. 8e. Pentru cazul cel mai defavorabil, consideram rezistenta de linie bus Rw = 0.

Aceasta genereaza urmatoarea formula de calcul pentru numarul maxim de noduri:

Rt,min*Rdif,min > Rl,min n_max < 1 + Rdif,min*( 1 - 2 )

(n_max-1)*Rt,min+2Rdif,min    Rl,min Rt,min

Deoarece rezistenta de intrare minima a lui PCA82C251 este Rdif,min = 20 KΩ, urmatoarele valori se impun:

-106 noduri pentru Rt = 118Ω si RL = 45Ω;

-112noduri pentru Rt = 120Ω si RL = 45Ω.

ARHITECTURA TIPICA CU P8XC591

SJA1000 poate suporta conectarea directa cu doua tipuri de familii de microcontrolere: 80C51 si 68XX. Selectia se poate face cu ajutorul pinului Mode al lui SJA1000 in modul urmator:

- modul Intel: Mode=high;

- modul Motorola Mode=low.

Fig.8 ilustreaza modul de realizare al conexiunilor, valabil in ambele moduri, pentru bus-ul de adrese/date si pentru controlul de citire/scriere. Pentru cazurile in care microcontrolerul (Philips) are la baza familia 80C51(8-biti), sau arhitectura XA(16-biti), se va folosi modul Intel.

Fig.7 Aplicatie tipica cu Transceiver PCA82C251

In cazul in care se vor folosi alte tipuri de microcontrolere, trebuie realizata o adaptare cu logica cablata a semnalelor de control, cat si a bus-ului de adrese/date.

Fig. 8 Interfata CPU-SJA1000

Arhitectura familiei 80C51

Organizarea memoriei

Toate dispozitivele 80C51 au spatii separate pentru memoria de date si cea de program, asa cum se arata in fig.9a.1,2 . Aceasta separare logica a memoriei de date si de program permite ca datele din memorie sa fie accesate prin 8-biti de adresa, care pot fi usor stocati si manipulati de un CPU pe 8-biti.

Memoria de program poate doar fi citita nu scrisa (ROM, EPROM). Se poate urca la o capacitate de 64Kb de memorie de program. In cazul lui 80C51, memoria de program de 4Kb inferioara se afla pe chip. Strobul de citire pentru memoria de program externa este PSEN (Program Store ENable).

Memoria de date (RAM) ocupa adrese separate de memoria de program. In cazul lui 80C51, memoria de date de 128bytes inferioara se afla pe chip. Se poate ajunge la o capacitate de 64 Kb de memorie RAM externa care poate fi adresata in spatiul extern de memorie de date. CPU-ul genereaza semnalele de citire si scriere, RD/ si WR/.

Memoria de program

Fig. 9b. ne arata o harta a memoriei de program inferioare. Dupa reset, CPU-ul incepe executia de la locatia 0000H. Asa cum se indica in fig. 9b. fiecarei intreruperi ii este atribuita o locatie fixa in memoria de program. Intreruperile determina CPU-ul sa sara la acea locatie unde incepe executia rutinei de servire. Daca nu se vor folosi intreruperi, fiecare locatie de servire este disponibila scopurilor generale ale programului de memorie.

Cei 4k de memorie de program inferioara se pot afla fie pe chip, fie pe un ROM extern. Aceasta selectie se poate face prin pinul EA/(External Access), care in cazul lucrului cu 80C51 este legat la Vcc, si atunci programul lucreaza cu adrese de la 0000H pana la 0FFFH, care se afla pe ROM-ul intern. Pe ROM-ul extern se afla adrese de la 1000H pana la FFFFH, caz in care EA/ este legat la Vss.

Se mai foloseste si strobul de citire de pe ROM extern, PSEN/, acesta dezactivand lucrul cu adrese interne de program.

Modul de executie al unui program extern este ilustrat in Fg. 9c. Se remarca faptul ca 16 linii de I/O (Porturile 0si 2) sunt dedicate functiilor busului in timpul rularii programului extern. Portul 0 (P0 cum este ilustrat in fig. 9c.) serveste ca bus de adrese/date multiplexat. Sunt emisi bitii inferiori al Program Counter-ului (PCL), la o adresa, si se intra intr-o stare de asteptare a codului de biti de la memoria de program. In timp ce bitii inferiori ai Program Counter-ului sunt valizi pe P0, semnalul ALE (Address Latch Enable) stocheaza bitii intr-un latch de adrese. Intre timp, Portul 2(P2 cum este in fig. 9c.) emite bitii superiori ai Program Counteru-lui(PCH). In acest moment PSEN/ activeaza EPROM-ul si bitii de cod sunt cititi de microcontroler.

Adresele memoriei de program sunt mereu de 16-biti, chiar si asa memoria de program folosita poate fi mai putin de 64kb. Executia de programe externe foloseste doua din porturile de 8-biti, P0 si P2, pentru functiile de adresare a memoriei de program.

Memoria de date

In fig. 9a.3 se poate observa spatiul de memorie intern si extern disponibil la 80C51. In fig. 9d. este ilustrata o configuratie hardware utilizata pentru a accesa cei 2kB superiori de RAM externa. In acest caz CPU-ul ruleaza de pe ROM-ul intern. Portul P0 serveste ca bus de adrese/date multiplexat pentru RAM, iar 3 linii ale portului P2 sunt folosite pentru paginarea RAM-ului. Cpu-ul genereaza semnalele de RD/ si WR/ dupa cum sunt ele necesare in timpul accesului la RAM. Pot exista pana la 64kB de memorie de date externa. Lungimea adreselor de memorie de date externe poate fi de unul sau de doi bytes. De obicei este folosita lungimea de 1byte in combinatie cu una sau mai multe linii I/O de paginare a RAM-ului.

Adresarea cu 2-bytes poate fi folosita in cazul in care se emit bitii superiori de adresa pe portul P2.

Adresele de memorie de date interne au mereu lungimea de 1-byte, ceea ce implica un spatiu de adrese de numai 256-bytes. Adresarea directa de mai mult 7FH, acceseaza un spatiu de memorie diferit.

In fig.9e. ne indica faptul ca cei 128-bytes superiori si SFR-ul ocupa aceleasi blocuri de adrese, de la 80H pana la FFH, in timp ce din punct de vedere fizic fiind entitati diferite.

Cei 128-bytes inferiori ai RAM-ului sunt prezenti in toate dispozitivele 80C51 asa cum este indicat in fig. 9f. Cei 32-bytes inferiori sunt grupati in 4 zone cu 8 registre. Instructiunile de program apeleaza aceste registre ca: R0 pana la R7. Doi biti ai Program Status Word(PSW), selecteaza registrii folositi. Aceasta permite 0 mai buna utilizare a spatiului de cod, din moment ce instructiunile registrilor sunt mai scurte decat cele din cazul adresarii directe.

Urmatorii 16-bytes transforma blocul de registrii, intr-un spatiu de adresare a bitilor de memorie. Bitii de adresa din acesta zona se afla situati intre 00H si 7FH.

Toti bitii din memoria inferioara de 128-bytes pot fi accesati fie direct fie indirect. Toti bitii din memoria superioara de 128-bytes pot fi accesati numai in mod indirect.(Fig. 9g.)

Fig. 9h. ne da o privire de ansamblu asupra spatiului de Special Function Register(SFR). SRF-ul include un port latch, timere, controloare periferice, etc. . Aceste registre pot fi accesate doar prin adresare directa. 16 adrese din spatiul SFR sunt toate byte si bite adresabile. Bitii de adresarea SFR-urilor sunt aceeasi care adreseaza zona dintre 0H pana la 8H.

Descriere hardware a familiei

Se vor prezenta cateva detalii de descriere a microcontrolerului 80C51(Vezi fig. 10a.)

In aceasta descriere sunt incluse:

- Draiverele de port si modul de functionare al acestora, si pentru porturile P0 si P2 operatiile de bus;

- Timerii si Counterele;

- Interfata seriala;

- Sistemul de intreruperi;

- Resetul;

- Modul de lucru cu reducere de putere (cu dispozitive CMOS);

- Versiunea cu EPROM a lui 80C51.

Registrul de Functii Speciale

O mapare a memoriei on-chip este numita SFR. Asa cu este aratat si in fig. 10b.

De remarcat ca in SFR nu toate adresele sunt ocupate. Adresele ne-ocupate nu sunt implementate pe chip. Accesul de citire la aceste adrese va intoarce de obicei date aleatoare, iar accesul la citire nu va avea nici un efect.

Utilizatorul de software nu trebuie sa scrie in prima din aceste locatii neimplementate, deoarece acestea pot fi folosite in alte produse derivate ale 80C51 pentru a invoca noi functionalitati.

ACUMULATORRUL

Registrul de acumulator ACC are drept mnemonica in lucrul cu instructiuni pe "A".

REGISTRUL B

Registrul B este folosit la operatiile de inmultire si impartire. Pentru alte instructiuni poate fi tratat ca oricare alt registru.

CUVANTUL DE STARE AL PROGRAMULUI(PSW)

Registrul PSW contine informatie de stare a programului si este figurat in fig. 10c.

STACK POINTER

Registrul Pointer de Stiva este de 8-bits lungime. Este incrementat inainte ca datele sa fie stocate in timpul executiei instructiunilor PUSH si CALL. In timp ce stiva se poate afla oriunde in RAM-ul chipului, Stack Pointerul este initializat la 07H dupa reset. Aceasta determina ca stiva sa inceapa de la locatia 08H.

POINTERUL DE DATE

Pointerul de date (DPTR) contine biti superiori(DPB) si biti inferiori(DPL). Scopul lui este de a mentine adresele pe 16-bites. Poate fi manipulat ca un registru pe 16-bites, sau ca doua registre de 8-bites independente.

PORTURILE P0 SI P3

P0, P1, P2, si P3 sunt latchuri SFR pentru Porturile 0,1,2 si 3, respectiv. Scriind un 1 pe un bit din porturile SFR determina comutarea pe High a portului de iesire respectiv, invers pentru scrirea unui 0. Cand se foloseste o intrare, starea externa a portului pinului va fi mentinuta in portul SFR.

BUFERUL DE DATE SERIALE

Buferul de date seriale este alcatuit di doua registre separate: buferul de transmisie si cel de receptie. Cand datele sunt transferate SBUF-ului, acestea merg la buferul de transmisie si sunt transferate serial. (Mutarea unui bit catre SBUF este ceea ce initieaza transmisia). Cand datele sunt scoase din SBUF, acestea vin din buferul de receptie.

REGISTRII DE BAZA DE TIMERE AI 80C51

Registrii (TH0,TL0), si (TH1, TL1) sunt registrii numaratorii de 16-bites pentru Timere/Countere 0 si 1 respectiv.

REGISTRII DE CONTROL PENTRU 80C51

Registrii cu Functii Speciale IP, IE, TMOD, TCON, SCON, si PCON contin biti de control si de stare pentru intreruperile de sistem, pentru Timeri/Counteri, si pentru porturile seriale.

Structura porturilor si operatii ale acestora

Toate cele 4 porturi ale lui 80C51 sunt bidirectionale. Fiecare consta dintr-un latch (SPR P0 prin P3),o cale de iesire si un bufer de intrare.

Calea de iesire a porturilor P0 si P2, cat si buferul de intrare a lui P0 sunt folosite pentru a accesa memoria externa. In aceste aplicatii, portul P0 scoate bitii inferiori ai adreselor memoriei externe, multiplexati in timp cu bitii care au fost scrisi sau cititi.

Portul P2, scoate bitii superiori ai adreselor de memorie exterioara, cand se lucreaza cu adrese pe 16-biti. Altfel, portul pinii portului P2 continua sa emite continutul lui SRF P2.

Toti cei 3 pini port sunt multifunctionali. Ei nu sunt doar porturi, dar servesc si la functii variate cum ar fi :

Pin Functie alternativa

P3.1 RxD (Intrare seriala);

P3.2 TxD (Iesire seriala);

P3.3 INT0/ (Intrerupere externa);

P3.4 INT1/(Intrerupere externa);

P3.5 T0(Intrare externa de Timer/counter 0);

P3.6 T1(Intrare externa de Timer/counter 1);

P3.7 WR/(Strob extern de scriere in memoria de date);

P3.8 RD/( Strob extern de citire din memoria de date).

Functiile alternative pot fi activate doar daca botul latch al portului SFR contine un "1".

Altfel pinii porturilor raman in "0".

Scrierea intr-un port

In executia unei instructiuni care schimba valoarea din lathul portului, noua valoare ajunge la latch in timp de S6P2 ai ciclului final de instructiuni. Altfel spus, latchul de port este umplut de buferul de iesire doar in timpul fazei (P1) dintr-o perioada de ceas.(In timpul fazei (P2), buferul de iesire retine valoarea care este obtinuta in timpul fazei anterioare(P1).) In consecinta noua valoare din latch nu va apare la pinul de iesire pana cand noua P1, va apare la S1P1 din noul ciclu masina.

Incarcarea portului si Interfatarea

Buferele de iesire ale porturilor P1,2 si 3 pot fiecare sa emita pentru 4 intrari TTL. Pinii pot fi conectati la iesiri open-colector si open-drain, schimbare 0-in1 nu va fi rapida.

Portol P0 poate sa emita pentru 8 intrari TTL.

Functiile de citire-modificare-scriere

Cateva din instructiunile care citesc un port, citesc latchul altele citesc pinul. Instructiunile care citesc latchul, mai repede decat pinul sunt acelea care citesc valoarea, cu posibilitatea de a o modifica , si apoi ele o rescriu in latch. Acestea sunt asa numitele instructiuni de "citire-modificare-scriere". Ele sunt:

ANL - (ZERO logic);

ORL - (SAU logic);

JBC - (SARE daca bit=1 si sterge bit);

XRL - (SAU-EXCLUSIV);

CPL - (Complementeaza bitul);

INC - (Incrementeaza);

DEC - (Decrementeza);

DJNZ - (Decrementeaza si sare daca nu e ZERO);

MOV PX,Y,Z

- (Muta bitul de transport la bitul Y port X);

CLR PX,Y

- (Sterge bitul Y al portului X);

SET PX,Y

- (Seteaza bitul Y al portului X).

Ultimele 3 instructiuni citesc bitii din port, toti 8-bitrs, modifica bitii adresati, apoi rescrie bitii inapoi in latch.

Aceste instructiuni se folosesc atunci cand se doreste modificare unei valori dintr-un port dar fara a afecta si iesire corespunzatoare portului.

Accesarea memoriei externe

Accesarea memoriei externe se poate face in doua moduri: accesul la memoria de program externa si accesul la memoria de date externa. Accesul la memoria de program externa foloseste semnalul PSEN/(Program Strobe ENable) ca strob de citire. Accesul le memoria de date externa foloseste semnalele RD/ sau WR/( functii alternative ale porturilor P3.7 si P3.6) ca sa strobeze memoria. Se primesc de la memoria de program externa in totdeauna adrese de 16-bites. In lucrul cu memoria de date externa se folosesc atat adrese de 16-bites( MOVX @DPTR) sau de 8-bites(MOVX @,Ri).

De cate ori se foloseste o adresa 16-bites,bitii superiori de adresa vin de la portul P2, unde sunt stocati pe durataunui ciclu de scriere sau citire.

Daca se foloseste adresa de 8-bitrs,continutul portului P2 SFR ramane pe pinii P2 pana cand se termina ciclul memoriei externe. Aceasta va ajutala paginare .

In ambele cazuri, bitii inferiori de adresa sunt multiplexati in timp cu bitii de date pe portul P0. Semnalu ALE(Adress Latch Enable) se folosestepentru a mentine bitii de adresa intr-un latch extern Bitii de adrese sunt valizi pefrontul negativ al lui ALE.. Atunci, intr-un ciclude scriere, bitii de date de scri apar pe portul P0 chiar inaine ca WR/ sase activeza, si ramanpana cand wr/ este dezactivat. Intr-un ciclu de citire, bitii de intrare, sunt acceptati pe portul P0, chiar inainte ca strobul de citire sa se dezactiveze.

In timpul oricarui acces la memoria externa, CPU-ul scrie OFFH in latchul portului P0(SFR), Prin aceasta obigatnd informatiile din portul P0 SFR sa fie retinute.

Memoria de program externa este accesata in doua conditii:

Candsemnalul de EA/ este activ;

Cand numaratorul de program (PC) contine un numar mai mare decat OFFFH.

Aceasta presupune ca versiunea cu ROM sa aiba legatura EA/ pe zero, pentru a permite ca cei 4k bites inferiori de program sa fie cei din memoria externa.

Cand CPU-ul executa din memoria de proogram, toti 8-bites ai portului P2 sunt dedicati unei functii de iesire si nu por fi folositi pentru scopuri de I/O. In timpul lucrului cu memoria de program externa cei8-bites contin bitii superiori ai PC.

Timere/Countere

80C51 are doua registre de 16-bites:Timer 0si Timer 1. Ambele pot fi configurate sa opereze ca timere sau countere.(fig. 10d.)

In cazul functionarii timerului, registrul este incrementat la fiecere ciclu masina. Totusi, poate fi vazut ca un numarator de ciclii masina. Deoarece ciclul masina are 12 peroade de oscilator, rata de numarere este 1/12 din frecventa oscilatorului.

In cazul functionarii ca un counter, registrul este incrementat ca un raspuns la tranzitie 1-in-0 la fiecare intrare de pin externa corespuzatoare , T0 sau T1. In acest caz, intrarile externe se fac in timpul S5P2 al ciclului masina de verificare.

Cand apare un "1" intr-un ciclu si un "0" in urmatorul ciclu, counterul este incrementat. Noua valoare apare in registru pe perioada S3P1 din ciclul care urmeaza celui in care a fost detectata tranzitia.

Funcrtionarea de timeri sau countere este selectata de bitii de control C/T din registrul cu functii speciale TMOD. Aceste doua Timerele/Counterele au 4 moduri de operare, care sunt selectate de perechea de biti (M1,M0) din TMOD.

Modul 0

In acest mod registrul de timer este configurat ca un registru de 13-bites. Intrarea de counter este activa spre timer cand TR=1(este un bit de control din SFR TCON), si cand GATE=0(este stuat in TMOD) sau INT1/=1.

Registrul de 13-bites contine toti cei 8-bites ai lui TH1 si 5-bites inferiori ai lui TL1. Setarea de a rula fanionul (TR1) nu sterge registrul, fig. 10e.

Modul 1

Modul 1 este identic cu modul o, exceptand doar registrul timer care ruleaza pe 16-bites.

Modul 2

Modul 2 configureza registrul timer ca un numarator pe 8-bites(TL1) cu reincarcare automata. Depasirea lui TL1 nu numaoi ca seteaza TF1 dar chiar reancarca TL1 cu continutul lui TH1, care este setat software. Reancarcarea lasa TH1 neschimbat.

Operatiile modului 2 sunt la fel pentru Tiner/Couner 0.

Modul 3

Timerul 1 in modul 3 doar mentine numararea. Efectul este identic cu setarea lui TR1.

Timerul 0 stabileste TL0 si TH0 ca 2 numaratoare separate.

Modul 3 este indicat pentru aplicatii care au nevoie de timer de mai mult de 8-bites pentru numarator. Cu Timerul 0 in modul 3, 80C51 arata ca si cum are 3 timere/contoare.

Interfata standar seriala

Portul serial este full-duplex, adica poate transmite si receptiona in acelasi timp. Exista si un bufer de receptie adica se poate incepe receptia a bytes secundar inainte de a incepe citirea din registru.(Daca primul byte nu a fost citit la momentul receptiei al celui de-al doilea byte nu e complet, unul din byes va fi pierdut.) Portul serial receptioneaza si transmite registre, care ambele sunt accesate de SFR SBUF. Scrierea in SBUF incarca registrul de transmis, si citeste SBUF accesand un registru de receptie fizic separat.

Exista patru moduri de lucru ale portului serial, si in toate transmisia este initiata de orice instructiune ce foloseste SBUF ca registru destinatar. Receptia este initiata in modul 0 de confaditia RI=0 si REN=1. Receptia este initiata in celelalte moduri de aparitia bitului de start REN=1.

MODUL 0

Datele seriale intra si ies prin RxD. TxD scoate ceasul. 8-bits sunt transmisi/receptionati(mai intai LSB). Rata de transmis este fixata la 1/12 din frecventa oscilatorului.

MODUL 1

10 bits sunt transmisi (prin TxD) sau receptionati (prin RxD): bitul de start (0), 8-bits de date(mai intai LSB), si un bit de stop. Odata receptionat, bitul de stop intra in RB8 in SFR SCON. Rata de transmis este variabila.

MODUL 2

Sunt transmisi 11-bites(rin TxD) sau receptionati (prin RxD): bitul de start (0), 8-bits de date (mai intai LSB), al 9-lea bit de date programabil, si bitul de stop(1). La transmitere al 9-lea bit de date (TB8 in SCON) poate fi asignat pe 0/1. De exemplu, bitul de paritate (P,din PSW), poate fi mutat in TB8. Rata de transmisie este programata la 1/32 sau 1/64 din frecventa oscilatorului.

MODUL 3

Sunt tranmisi 11 bites(prin TxD) sau receptionati(prin RxD): bitul de start(0), 8-bites de date(mai intai LSB), un bit programabil al 9-lea, si un bit de stop(1). Modul 3 este identic cu modul 2, dar rata de transmisie este variabila.

Comunicatia multiprocesor

Cand procesorul master vrea sa transmita un bloc de date la unul sau mai multe slave-uri, in prima transmisie se transmit bytes de adrese care identifica tinta slave. Un byte de adrese difera de un byte de date prin aceea ca alb 9-lea bit este 1 in bitii de adresa si 0 in bitii de date.

Registrul de control al portului serial

Controlul portului serial si starea registrului SFR SCON, cum este aratat in fig. 10f. .Acest registru contine bitii de selectie ai modului, dar ti al 9-lea bit de date pentru transmisie si receptie(TB8 si TR8), si bitii de intrerupere ai portului serial(TI si RI).

Rata Baude

Rata de ransfer0 este fixat: Ratade transferin modul 0=Fosc/12. Rata Baude in modul 2 depinde de valoarea bitului SMOD din SFR PCON. Daca SMOD=0(care este valoarea de reset), este 1/64 din Fosc.

Daca SMOD=1, rata de transfer este 1/32 din Fosc.

Rata de transfer Mod 2 = 2SMOD/64*(Fosc)

In cazul lui 80C51, rata de transfer in modurule 1 si 3 este determinata de rata de depasire a timerului 1.

Folosirea Timerului 1 pentru generarea Ratei de Transmisie

Cand se foloseste timer 1 ca generator de rata baud, rata de transfer in mpdurile 1 si 3 este determinata de rata de depasire a timerului 1 a valorii de SMOD dupa cum urmeaza:

Rata de transfer Mod 1,3 = 2SMOD/32*(Rata de dep. Timer 1)

Intreruperile din timerul 1 trebuie sa fie dezactivate in acest caz. Timeru insusi poate fi configurat pentru operatii fie de contor fie de timer, in oricare din cele 3 moduri. In cea mai tipica aplicatie, este configirat pentru pentru operatii de timer, in modul de auto-reancarcare(Nibble superior al TMOD = 0010B). In acest caz rata de transmisie este data de formula:

Pentru modurile 1 si 3 rata de transmisie este:

Rata de transfer Mod 1,3 = (2SMOD/32)*(Fosc/12*[256-(TH1)])

Se poate lucra cu o viveza foarte mica de transmisie cu timerul 1 prin parasirea activarii intreruperilor timerului 1, si configurand timerul sa lucreze ca unul de 16-bites(Nibble superior TMOD = 0001B), si folosind intreruperile timerului 1 pentru a reancarca software cei 16-bites. Tab. 3. indica lista celor mai folosite viteze de transmisie si modul de obtinere alacestora din timer 1.

Intreruperile

80C51 produce 5 intreruperi. Acesteasunt ilustrate in fig. 11a. . Interuperile externe INT0/ si INT1/ pot fi ambele activatelaactivareatransmisiei, in functie de bitii IT0 si IT1 di registrul TCON. Fanioanele care genereaza efectiv aceste intreruperi sunt bitii IE0 si IE1 din TCON. Cand se genereaza o intrerupere externa, fanionul care agenerat-o este sters prin hardware atunci cand intreruperea activeaza tranzitia.

Intreruperile timerului 0 si ale timerului 1 sunt generate de TF0 si TF1 care sunt setati in registrele Timer/contor (mai putin timer 0 in modul 3). Cand se genereaza o intrerupere de timer, fanionul care o genereaza este sters prin hardware cand apare rutina de intrerupere.

Intreruperile portului serial sunt generate de SAU intre RI si TI. Nici unul din aceste fanioane nu poate fi sters prin hardware. De fapt rutina de servire va determina care dintre cele doua RI sau TI a generat intreruperea, acesta urmand a fi sters prin software.

Toti acesti biti care genereaza intreruperi pot fi setati prin software, cu aceleasi rezultate ca si cand ar fi fost stersi prin harware.

Fiecare din aceste surse de intreruperi pot fi individual activate/dezactivate prin setarea bitului din SFR numit IE,fig. 11b. .IE de asemenea contine un bit de dezactivare, care dezactiveaza toate intreruperile odata.

Structura nivelelor de prioritate

Fiecare sursa de intreruperi poate fi programata individual pe unul din cele doua niveluri de prioritate,prin setare/stergere a bitului din SFR IP,primul in fig. 11c. .

Daca la un moment dat apar doua cereri cu prioritati diferite simultan, cererea cu nivelu de prioritate mai ridicat este servita. Dar daca ambele cereri au acelasi nivel de prioritate o rutina de servire va cere cerere sa fie servita .

Nivelul de prioritate secundar,stabilit prin polling:

Sursa    Prioritate in nivel

1. IE0 cea mai mare

2. TF0

3. IE1

4. TF1

5. RI+TI cea mai mica

Resetul

Pinul de intrare de reset RST, este o intrare pentru un Trigger Schmitt. Resetul este echivalent cu a tine apasat butonul de reset pentru cel putin 2 cicluri masina (24 perioade de oscilator ~ 1us) in tim ce oscilatorulfunctioneaza. CPU-ul raspunde generand o intrerupere interna ca in fig. 11d. .

RAM-ul intern nu este afectat de reset. La pornire RAM-ul continutul RAM este nedeterminat.

Tab. 4 contine lista valorilor de reset SFR.

PROIECTE DE ARHITECTURA RETEA CAN

DIAGRAMA BLOC CONTROLER CAN(SJA1000)

Linie CAN Bus

SJA1000

 


Fig. 9 Diagrama bloc SJA1000

Fig. 9 ilustreaza diagrama bloc a controlerului SJA1000. Blocul CAN Core controleaza transmisia si receptia de cadre CAN in conformitate cu specificatiile CAN.

Blocul de Interfata de Management Logic realizeaza o legatura catre Controlerul Gazda care poate fi un microcontroler sau orice alt dispozitiv.

In aceasta unitate fiecare registru este accesat via SJA1000 cu multiplexare de adrese/date pe bus si cu control strober-ului de citire/scriere .

Aditional la functiile BasicCAN cunoscute de la PCA82C200, noi functii PeliCAN au fost adaugate. Ca o consecinta a acesteia, au fost implementate registre si logica in acest bloc.

Buffer-ul de Transmisie al SJA1000 este capabil sa stocheze un mesaj complet (extins sau standard). In momentul in care o transmisie este initiata de controlerul gazda Interfata de Management Logic forteaza blocul CAN Core sa citeasca mesaje CAN de la Buffer-ul de Transmisie.

Cand primeste un mesaj, blocul CAN Core converteste secventa de biti seriali intr-o secventa paralela de date si o transmite catre Filtrul de Acceptare. Cu acest filtru programabil SJA1000 decide ce mesaj este receptionat de Controller-ul gazda.

Toate mesajele receptionate de Filtrul de Acceptare sunt stocate intr-o lista de receptie (FIFO de Receptie). In functie de modul de operare si de lungimea datelor, pana la 32/64 de mesaje pot fi stocate. Aceasta permite utilizatorului sa fie mult mai flexibil cand specifica serviciile de intreruperi si prioritatile acestora pentru sistem, pentru ca probabilitatea de a avea conditii de intruperi de date este redusa considerabil.

DETALII FUNCTII REGISTRE DE CONTROL SJA1000

Functionarea cu respectarea configuratiei activitatilor lui SJA1000 este data de programul controlerului gazda. Prin acesta SJA1000 este capabil sa comunice cu cererile de sistem Bus-CAN . Schimbul de date dintre controlerul gazda si SJA1000 este realizat printr-un set de registrii (Segment de Control) si prin RAM (Buffer-ul de mesaj). Registrii si fereastra de adrese din RAM, crearea Buffer-ului de Receptie si de Transmisie, apar Controller-ului gazda ca registrii periferici.

Tab. 2 contine registrii grupati in acord cu locul in sistem.O parte din registrii sunt valabili numai in modul PeliCAN.

Modul de folosire

Nume registru

Registrii de adresa

Functionalitati

Modul PeliCAN

Modul BasicCAN

Buferul de mesaje

Bufer de transmisie

(TXBUF)

16-18

10-19

Buferul de receptie

(RXBUF)

16-28

20-29

Elemente de detectie eroare si analiza

Arbitrare legatura pierduta (ALC)

11

Indicare pozitie biti, unde arbitrarea s-a pierdut;

Codul erorii legaturii

(ECC)

12

Indicare ultimul tip eroare si locul acesteia;

Limita alarmei erorii

(EWLR)

13

Selectie de limita pentru generare de alarma de intreruperi;

Counter de eroare la receptie (RXERR)

14

Indica valoarea curenta a numaratorului de alarme de erori de receptie;

Counter de erori la

Transmisie    (TXERR)

14,15

Indica valoarea curenta a numaratorului de erori de

Transmisie;

Counter de mesaje de

Receptie    (RMC)

29

Numarul de mesaje din FIFO de receptie;

Adresa de start a buferului de Rx (RBSA)

30

Indica RAM-ul intern curent de mesaje disponibil din Buferul de receptie;

Elemente de baza pentru comunicatie CAN

Stare    (SR)

2

2

Stare mesaj-Bufer,Stare bloc CANCore ;

Comanda    (CMR)

1

1

Comanda pentru auto-receptie, stergere date retransmise,Eliberare Buffer-receptie, terminare transmisie si cerere de transmisie;

Intreruperi    (IR)

3

3

Flaguri intreruperi CAN;

Activat Intreruperi (IER)

4

Activeaza/dezactiveaza intreruperile chiar in PeliCAN

Control    (CR)

0

Activeaza/dezactiveaza intreruperi in BasicCAN;

Elemente pentru setare comunicatie CAN

Cod de acceptare, (ACR) Masca (AMR)

16-19

20-23

4,

5

Selectie biti pentru Filtrul de Acceptare;

Timming Bus 0, (BTR0)

1 (BTR1)

6,

7

6

7

Setare parametrii biti timming;

Control de iesire (OCR)

8

8

Selecteaza proprietatile caii de iesire;

Elemente pentru selectarea diferitelor moduri de operare

Mod    (MOD)

0

Sleep-,Filtrul de acceptare, Auto-test, selectie Ascultare-Reset;

Comanda    (CMR)

1

Comanda sleep in BasicCAN

Control    (CR)

0

Selectie Mod-Reset in BasicCAN;

Dvizor ceas (CDR)

Setare semnal de ceas pe CLKOUT (pin 7) in modul PeliCAN, Mod Comparator Bypass, TX1 (pin14) Mod iesire;

Tab. 2 Registrii de control pentru SJA1000

SCHEMA BLOC CIRCUITE NOD CAN

Fig. 10 Schema bloc circuite nod CAN.

SCHEMA BLOC DE CONECTARE TRANSCEIVER LA CAN

Fig.11 Diagrama de conectare Transceiver si a Memoriilor cu SJA1000.

SCHEMA BLOC DE CONECTARE MICROCONTROLER GAZDA LA

CAN

Fig. 12 Schema bloc conectare Controler gazda, Ceas si Reset la SJA1000.

SCHEMA BLOC DE CONECTARE A MEMORIILOR LA CAN

Fig. 13 Schema bloc conectare a memoriilor la SJA1000.

COMPARATII INTRE VARIANTE DE PROIECARE

COMPARATII LEGATE DE PCA82C251

Modul PeliCAN introduce unele operatii noi cum ar fi cele de diagnoza, analiza, mentenabilitate si optimizare a sistemului; tot aici mai apar functiile de suport CPU, de autotest a sistemului;

Modul PeliCAN suporta:

-Numaratori de erori cu acces scriere/citire;

-Limita de alarma eroare programabila;

-Codul ultimei erori inregistrate;

-Eroare de intrerupere pentru fiecare eroare semnalata pe Bus;

-Arbitrare intreruperi pierdute cu detaliere pozitie bit;

-Transmisie "Single-shot"(in BasiCAN se foloseste retransmisie);

-Mod doar ascultare(in BasiCAN Mod cerere sau flag-uri de eroare activa);

-Extensie de Filtru de acceptare(4-oct. cod, 4-oct. masca );

-Receptia propriului mesaj (cerere de receptie mesaj propriu).

COMPARATII LEGATE DE SJA1000

Modul PeliCAN apare cu o reorganizare a maparii de registre introducand o multime de functii. In modul PeliCAN, setul complet CAN 2.0B de functii este suportat (identificatori 29-biti):

-Receptia si transmisia de formate de mesaje standard si extinse;

-Receptie FIFO(64-oct.);

-Filtru de acceptare simplu/dual cu registrii de masca si cod, pentru un standard normal si extins de cadre;

-Dezactivare CLKOut hardware.

COMPARATIE INTRE STANDARDELE DE FORMATURI DE CADRE

CAN

Numarul de mesaje de identificatori

In timp ce lungimea standard de cadru este de 11 biti, sunt posibile 2048 tipuri de mesaje, iar datorita modurilor de implemenare doar 2032 din ele pot fi folosite. Identificatorii de 29-biti ai modului extins suporta mai mult de 500 de milioane de tipuri diferite de mesaje.

Timpul de acces la Bus

In cel mai rau caz se primeste accesul pe Bus dupa terminarea mesajului anterior, daca prioritatea acestuia este destul de mare. Cand folosim o rata de transfer de 1Mbits/s, timpul maxim de acces la Bus, in cazul cadrelor standard este de 110/134 micros.,in timp ce pentru cadrele extinse, acelasi timp este de 130/159 micros.(cu/fara bitii de adaus).

Incarcare a CPU-ului datorata CAN-ului

Toate CAN-urile contin cel putin un nod, care este controlat de un microcontroler. Deoarece nivelurile 1 si 2 ale OSI sunt realizate aproape in intregime hardware, microcontroler-ul este aproape singurul raspunzator de furnizarea mesajelor de transmis, de procesarea mesajelor primite, si de rezolvarea unei parti de Management de retea (de exe.: initializarea). Comparand standardele de formate de cadre, lungimea identificatorilor are un impact scazut asupra incarcarii CPU-lui, daca conditiile urmatoare sunt indeplinite:

-distributie optima a identificatorilor de mesaj cu sistemul, si

-programarea optima a filtrului de acceptare.

Toate Controalerele CAN actuale disponibile ,au prezent filtrul de Acceptare care are rolul de a rejecta mesajele care nu prezinta interes pentru nodul respectiv. In acest mod incarcarea CPU-lui se poate reduce considerabil.

Detalii cadre

Formatul standard de cadre pentru o transmisie CAN este prezentat in fig. 14 a.,b.,c. .

SOF    RTR res

11-biti de dentificare

DLC

Data,CRC, ACKN, EOF

Fig. 14 a. Format cadru pentru versiunile: 1.0, 1.1, 1.2, 2.0A

SOF    RTR IDE res

11-biti de dentificare

DLC

Data,CRC, ACKN, EOF

Fig. 14 b. Format cadru pentru versiunea 2.0B (Format standard)

SOF    RTR IDE RTR res

11-biti de identificare

18-biti de

identificare

DLC

Data,CRC, ACKN, EOF

Fig. 14 c. Format cadru pentru versiunea 2.0B (Format extins)

Fig. 14 a.,b.,c. formatul standard de cadre pentru o transmisie CAN .

IMPLEMENTAREA NIVELURILOR SUPERIOARE PROTOCOLULUI

CAN

Sunt cunoscute mai multe variante de organizare a stivelor de protocoale pentru implementarea de retele locale pe magistrale CAN. Cele mai cunoscute sunt protocoalele nivelelor inferioare, implementate in transmitatoare si controloare CAN, pe care le-am prezentat in capitolele anterioare. In afara functiilor de baza pe care nivelurile inferioare le ofera si care sunt implementate de regula in hardware, facilitatile aditionale sunt implementate cel mai simplu in programe aplicative rulate pe controloare sau pe calculatoare conectate la controloarele CAN. Toate acestea contribuie la incarcarea unitatilor de calcul aferente cu sarcini importante de prelucrare, care include, de regula sarcini de complexitate redusa, cu grad ridicat de repetitivitate si cu cerinte stringente de timp de raspuns mic. Natura acestor sarcini, dupa cum rezulta din cele de mai sus, le recomanda a fi implementate in structuri hardware. Decizia de repartizare a sarcinilor de implementare in hardware si in software se stabileste prin tehnici de proiectare denumite "code-design" si reprezinta o etapa importanta in proiectarea si implementarea unei aplicatii CAN.

Implementarea nivelului de transport pentru retele industriale CAN cunoaste trei variante mai raspandite:

- DeviceNet;

CANopen;

OSEK.

Toate aceste variante care ofera implementarea nivelului de transport CAN include facilitatea de gestiune a mesajelor multiplexate. Deosebirile cele mai importante dintre variantele de mai sus apar in modalitatea de tratare a fragmentarii mesajelor, reflectata in semnificatiile campurilor de semnalare a ordinii fragmentelor de mesaj.

Pentru implementarea gestiunii nivelului de transport este definita notiunea de Mesaj Obiect. Fiecarui mesaj luat in considerare de protocol ii corespunde cate un Mesaj Obiect. Pot fi gestionate simultan pana la 32 de mesaje diferite, ceea ce inseamna ca sunt necesare resurse pentru creerea si administrarea a 32 de structuri de date alocate fiecare cate unui

Mesaj si identificate fiecare ca apartinand unui Mesaj Obiect identificat.

Structura de date alocata fiecarui Mesaj Obiect include un set de Registre alocate in memorie si un set de Memorii Tampon alocate de asemenea in memorie, Memorii Tampon prevazute cu posibilitatea de a fi configurate in functie de caracteristicile mesajului caruia ii este repartizat pe baza identificatorului de mesaj ID. Registrele alocate mesajului permit gestiunea cadrelor componente ale unui mesaj precizat prin ID si memoreaza date privind alocarea de spatii corespunzatoare mesajului referit in Memoria Tampon rezervata. Memoria Tampon rezervata unui mesaj corespunzator unui Mesaj Obiect identificat

printr-un identificator ID este destinata sa contina cadrele trimise / receptionate pe durata procesarii fiecarui mesaj. In memorie se construiesc pana la 32 de Obiecte Mesaj. In fig. 15a. se prezinta structura campurilor unui set de Registre alocate unui mesaj, dintre cele 32 de Registre alocate in total.

Identificator de mesaj 28 : 13

Identificator de mesaj 12 : 00 , IDE

Masca de mesaj 28 : 13

Masca de mesaj 12 : 00

Control

FRAG

Adresa de baza a memoriei tampon

Lungimea memoriei tampon

Indicator al numarului de ordine al mesajului

 


Fig. 15a. Setul de registre alocate in memorie, corespunzatoare mesajului identificat de ID

Primul octet al mesajului de identificator ID, depus la o adresa din registrul cu

adresa de baza a memoriei

tampon din componenta primului fragment de mesaj

.

.

.

Octet din componenta unui fragment din mesajul de identificare ID

.

.

.

Ultimul octet al mesajului ID, la o adresa stabilita pe baza adresei de inceput si a

lungimii memoriei tampon alocate,

din componenta ultimului fragmrnt de mesaj.

 


Fig. 15b Memoria tampon alocata mesajului de identificator ID

Fig. 15b. prezinta organizarea Memoriei Tampon gestionata de un set de Registre alocate unui mesaj compus din mai multe fragmente (cadre) care contin acelasi identificator de mesaj ID.

In fig. 15c. se prezinta relatia intre campurile unui set de Registre alocate unui mesaj de identificator ID, masca de mesaj MM si structura Memoriei Tampon corespunzatoare.


Fig. 15c. Alocarea de structuri de date pentru gestionea mesajelor in nivelul

de transport CAN

Receptia CAN

Cand se receptioneaza mesaje fara fragmente, modul standard de operare este acela de a memora fiecare mesaj in memorii tampon de un singur cadru, astfel ca de fiecare data cand un nou cadru este receptionat podeda un identificator ID corespunzator cu unul dintre cele programate a fi receptionate. In cazul in care datele de la mai multe cadre receptionate apartin unui aceluiasi ID, cadrele fac parte dintr-un mesaj cu fragmente care se memoreaza secvential. in acest din urma caz, memoria tampon de un cadru impune prelucrarea completa a cadrului precedent din secventa de cadre, ceea ce impune ocuparea intensa a unitatii de calcul.

Emisia CAN

De fiecare data cand Mesajele Obiect sun validate pentru transmisie, acestea vor participa la un proces de "pre-arbitrare", prin care se determina ordinea lor de transmisie.

Pentru obtinerea unei performante optime in timp real, utilizatorul poate alege prioritatea pe baza :

- Numarului de Obiect;

- Identificatorului ID CAN.

Arbitrarea pe baza de numar de obiect, stabileste ordinea de transmisie dupa ordinea crescatoare: a numerelor de obiect, determinata de momentele crearii structurilor de date ale Mesajelor Obiect, deci de ordinea de procesare si prin urmare de ordinea din sirul de mesaje.

Arbitrarea pe baza identificatorului CAN stabileste ordinea de tranmisie dupa ordinea crescatoare: a identificatorului CAN, care poate stabili o prioritate a mesajului diferita de ordinea timpilor de aparitie a fiecarui mesaj.

PROTOCOL DE NIVEL SUPERIOR - DE TRANSPORT

( HIGH LEVEL TRANSPORT PROTOCOL)

Aplicatiile care manipuleaza volume mari de date solicita transmisia de mesaje fragmentate in mai multe cadre CAN, fig. 15d. .Cazul cel mai defavorabil este atunci cand fragmentele sosesc consecutiv si solicita la maxim magistrala.


Fig. 15d. Transmisia unui mesaj fragmentat

Unitatea centrala este intrerupta la fiecare cadru (fragment), pana cand este detectata semnalarea de sfarsit de mesaj din ultimul fragment. Procedura de intrerupere duce la incarcarea semnificativa a UCP-ului de-a lungul procesului de obtinere a intregului mesaj. Problema devine si mai dificila daca se primesc simultan fragmente din mesaje diferite, ceea ce necesita operatii suplimentare de identificare si ordonare.

Transmiterea unui mesaj fragmentat se petrece ca in fig. 15d., astfel ca se impune ca Obiectele Mesaj sa fie prevazute cu memorii tampon destul de mari pentru toate fragmentele din mesaj, memorii tampon care se vor completa prin cadre procesate pana la asigurarea completitudinii dupa receptia ultimului segment. Astfel de proceduri se implementeaza de regula software, ceea ce inseamna solicitare puternica a UCP-ului. Ca o alternativa la solutia software, pot fi prevazute resurse hardware specifice, folosind accesul direct la memorie, pentru prelucrarea operatiilor respective, dar de viteza mare.

Sunt cunoscute mai multe variante de implementare a nivelurilor de transport CAN, care solutioneaza cu diferite proceduri problema de reconstituire a mesajului initial din cadre (fragmente) receptionate. In fiecare caz, un cadru cuprinde 8-bytes, ca in fig. 15e. , din care primul octet, numit PCI (Protocol Control Information Byte) are rolul de control al nivelului de transport, semnificatia celulelor de bit ale sale corespunzand schemei alese de implementare a protocolului. Octetul PCI este eliminat ulterior din secventa de date utile.


Fig. 15e. Fragment n dintr-un mesaj, in care primul octet(1) este destinat

procedurii de fragmentare si asamblare

Octetul 1 din fiecare cadru este completat de procedurile de nivel de transport si incapsulat in cadru, urmand a fi eliminat la asamblarea mesajului initial in urma receptiei. In functie de varianta de procedura aleasa la organizarea functiilor nivelului de transport, celulele bit din cadrul octetului PCI pot avea semnificatiile din fig. 15f. pentru protocolul DeviceNet, cele din fig. 15g. pentru protocolul CANopen si cele din fig. 15h. pentru protocolul ISO OSECK.

IMPLEMENTAREA OCTETULUI PCI LA DeviceNet

Corespunde unui protocol de transport fara cadre de achitare. Octetul PCI in terminologia DeviceNet se numeste mesaj de I/O.

Obtinerea de fragmente de receptor nu este semnalata spre emitator prin cadre de confirmare. Pentru ca receptorul sa poata sa confirme ca un cadru din sirul de fragmente lipseste, se acorda fiecaruia un numar de ordine care se depune in campul de celule bit ale octetului PCI 0:5, ceea ce confera posibilitatea de semnalizare diferita, a pana la 2 = 64 fragmente intr-un Obiect Mesaj, corespunzator unei dimensiuni maxime de mesaje de pana la 448 octeti. Campul de bites fata de limitele mesajului (la inceput de mesaj, in interiorul mesajului printre alte fragmente ale aceluiasi mesaj sau ultimul fragment din mesaj). Aceasta reprezentare sumara a pozitiei unui cadru in mesaj simplifica operatiile de procesare si mareste viteza de lucru, urmarind ca informatiile detaliate sa fie folosite la procesarea de dupa receptia completa a mesajului.

TIP

NUMAR FRAGMENT

 


Fig. 15f. Configuratia octetului la DeviceNet

IMPLEMENTAREA OCTETULUI PCI LA CANopen

Corespunde unui protocol de transport cu cadre de achitare, numite cadre de descarcare segment Download Segment Response. Un cadru de descarcare segment este un cadru special, care formeaza un mesaj de raspuns la succesiunea de fragmente receptionate organizate in segmente. Dupa receptia corecta a unui segment, receptorul emite mesajul de achitare format din cadrul de descarcare segment, prin care informeaza receptorul, asupra validarii receptiei. Octetul PCI din protocolul CANopen, numit aici obiect de gestiune de date - Service Data Object, prevede o foarte sumara informare a desfasurarii secventei de fragmente transmise, prin numai doua celule de bit, PCI 0 - notata C, si PCI 5-notata cu T. Pozitia C semnaleaza sfarsit de mesaj, in urma receptiei caruia emitatorul examineaza datele primite si intocmeste mesajul de raspuns, iar pozitia T semnaleaza paritatea fiecarui cadru, pentru detectia la receptor a cadrelor pierdute.

T

C
 


Fig. 15g. Configuratia octetului la CANopen

IMPLEMENTAREA OCTETULUI PCI LA OSEK

Corespunde unui protocol de transport cu cadre, definit in standardul ISO 15765 (Diagnostic peCAN), si numit protocol de transfer de date cu segmente fara achitare - Unacknowledged Segment Data Transfer USDT. Acest protocol nu include o indicatie de ultim fragment. In schimb, in primul fragment se transmite un indicator asupra lungimii mesajului. Datorita acestuia, programele utilizatorului receptor, pot calcula marimea si adresa de start pentru memoria tampon dedicata mesajului respectiv, inainte de receptia completa a acestuia. Pe masura ce fragmentele sosesc, ele au pregatite deja memorii asociate.

Fig. 15h. Configuratia octetului PCI la ISO OSEK

SCHITA DE IMPLEMENTARE DE PROGRAME PE RETEA CAN

DIAGRAMA ALGORITMULUI GNERAL AL PROGRAMULUI

Fig.15 Algoritmul general al programului

DIAGRAMA INITIALIZARII LUI SJA1000

Fig. 16 Initializare SJA 1000

DIAGRAME DE TRANSMITERE MESAJ

Fig. 17 Diagrama "Transmisia unui mesaj" (controlata cu intreruperi)

Fig. 18 Diagrama de transmitere a unui mesaj (controlata prin polling).

DIAGRAME DE RECEPTIE MESAJ

Fig. 19 Diagrama de receptie a unui mesaj(controlata prin polling).

Fig. 20 Diagrama de receptie a unui mesaj (controlata prin intreruperi).

DIAGRAME DE DESFASURARE A INTRERUPERILOR

Fig. 20b. Desfasurarea principala a intreruperilor

Fig. 20c. Diagrama "Inrerupere a transmisiei unui mesaj" (controlata cu intreruperi)

DIAGRAMA DE DATA OVERUN SI RECEPTIE MESAJE

Fig. 20a. Diagrama "data overun si receptie de mesaje" (controlata cu intreruperi)

CONCLUZII

CONCLIZII REFERITOARE LA FORMATELE DE CADRE

Tab. 9. Ne indica o evaluare a standardului de cadre extinse din punct de vedere al numarului de identificatori diferiti, al timpului de acces la bus, al incarcarii bus-ului, al incarcarii CPU-ului, al disponibilitatilor produselor si al raportului calitate/cost. Rezultatul care se desprinde este ca este avantajos a se folosi formatul standard de cadre atata timp cat aplicatia permite. Din punct de vedere al actualitattii doar aplicatiile din fabricile automotive americane permit lucrul cu formate extinse. Se recomanda ca o aplicatie sa foloseasca un singur standard de formate de cadre.

Format standar de date

(SFF)

Format extins de date

(EFF)

Numar de ID-uri

o

+

Timpul de acces la bus

+

o

Modalitati de incarcare bus

+

o

Incarcarea CPU-ului

+

+

Poduse disponibile

+

-

Raportul cost/calitate

+

o

+ = mai bun decat mediu

o = mediu

- = mai slab decat mediu

 


Tab. 7 Comparatie intre formatele standard si extins de cadre

CONCLUZII REFERITOARE LA PCA82C251

PCA82C251 este un transceiver avansat, produs pentru a folosi in industria automotiva la fel de bine putand fi folosit si in aplicatii industriale care folosesc o rata de 1Mbit/s. Sunt suportate reprezentari diferite ale semnalelor de bus dupa cum sunt precizate in standardul international pentru aplicatii in vehicule (ISO 11898), folosindu-se protocolul Controller Area Network(CAN).

Performantele electromagnetice sunt produse folosind o gama comuna de tensiuni (-7V la +12V), si functii de control automat, atunci cand rata de schimb date poate fi ajustata cu ajutorul valorii rezistentei Rext. In cazul in care se folosesc baterii pentru alimentare exista un mod "Stand-by", care reduce in mod drastic consumul de putere al retelei, de exemplu cand vehiculul este parcat. Iesirea din acest mod se face in mod automat la detectia unui mesaj pe linie.

PCA82C51 este capabil sa realizeze protectia echipamentului prin oprirea functionarii in cazuri de supra-incarcari electrice, de exemplu in cazul scurt-circurtarilor.

De asemenea este capabil sa sesizeze un numar mare de noduri de bus :intre 64 si 100 pe retea, cu o lungime de bus de la 0.5 la 1 Km.

Se poate lucra cu elemente din acceasi familie, care sunt compatibile din punt de vedere al pinilor si opereaza cu o abatere a gamei de alimentare in tensiune de 5V ± 10%, cum ar fi PCA82C250. In lucrul cu aplicatii industriale se foloseste PCA82C251deoarece permite un numar mare de cai, si o protectie de tensiuni mari " de breakdown", pe iesirile de bus.

ANEXE

ANEXA 1

Bibliografie:

[1] SJA1000 -Philips semiconductors, note de proiectare, controler;

[2] AT90S8535 -Atmel, note de proiectare, microcontroler;

[3] PCA82C251 -Philips semiconductors, note de proiectare, transceiver;

[4] Elisele, H. and Johnk, E.

-PCA82C250/251 CAN Transceiver, Note de proiectare, Philips Semiconductors, 1996;

[5] CAN pentru comunicatii de inalta viteza

-ISO 11898, International Standard Organisations, 1993;

[6] DeviceNet Specification , Vol.: I,II-

-Open DeviceNet Vendor Association Inc., Dec., 1995;

[7] CAN Versiunea CAN 2.0, Partile A, B

-Philips semiconductors, 1992;





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate

Calculatoare


Access
Adobe photoshop
Autocad
Baze de date
C
Calculatoare
Corel draw
Excel
Foxpro
Html
Internet
Java
Linux
Mathcad
Matlab
Outlook
Pascal
Php
Powerpoint
Retele calculatoare
Sql
Windows
Word






termeni
contact

adauga