Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
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.
Fig. 1b. Diferentele intre Formatul Standard si cel Extins cu bit-IDE
Fig. 1a. Componenta Campului de Date
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.
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.
Apartine de:
campul de arbitrare pentru formatul extins
campul de control pentru format standard
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 |
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
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.
Fig. 1g. Cadru de eroare
Fig. 1h. Cadru de retransmisie
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.
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
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 .
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:
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 |
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
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.
- 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. .
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.)
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.:
- 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 :
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".
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.
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
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
11-biti de dentificare |
DLC |
Data,CRC, ACKN, EOF |
Fig. 14 b. Format cadru pentru versiunea 2.0B (Format standard)
11-biti de identificare |
18-biti de identificare |
DLC |
Data,CRC, ACKN, EOF |
Fig. 14 c. Format cadru pentru versiunea 2.0B (Format extins)
IMPLEMENTAREA NIVELURILOR SUPERIOARE PROTOCOLULUI
CAN
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. 15c. Alocarea de structuri de date pentru gestionea mesajelor in nivelul
de transport CAN
Fig. 15e. Fragment n dintr-un mesaj, in care primul octet(1) este destinat
procedurii de fragmentare si asamblare
TIP NUMAR FRAGMENT
Fig. 15f. Configuratia octetului la DeviceNet
T
C
Fig. 15g. Configuratia octetului la CANopen
SCHITA DE IMPLEMENTARE DE PROGRAME PE RETEA CAN
DIAGRAMA ALGORITMULUI GNERAL 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)
(EFF)
Numar de ID-uri
o
Timpul de acces la bus
+
o
Modalitati de incarcare bus
+
Incarcarea CPU-ului
+
Poduse disponibile
+
Raportul cost/calitate
+
+ = 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;
Copyright © 2024 - Toate drepturile rezervate