Protocoale de Comunicatie Si Programe Pentru Conectarea In Retea a Sistemelor Specialzate cu Microprocesoare Dsp
=== lucr ===
I.Blackfin 537
Blackfin este o familiea de microprocesoare pe 16 sau 32 de biti, produse de catre Analog Devices. Acestea sunt caracterizate de functia de procesare de semnale digitale (DSP), care este acompaniata de un microcontoler mic dar foarte efficient. Rezultatul este o arhitectura unitara de mica putere care poate rula sisteme de operare si in acelsi timp poate executa sarcini numerice complexe cum ar fi codificarea video H.264 in timp real.
Nucleul de procesor Blackfin conține doi multiplicatori de 16 biti, doi acumulatori de 40 de biti, doua alu de 40 de biti, patru ALU video și un shifter de 40 de biți. Regiștrii de calcul conțin opt registre pe 32 de biți. Când se efectuază operații de calcul pe date operand pe 16 biți, fișierul de registru funcționează ca 16 registre independente pe 16 biți. Toți operanzii de calcul provin din fișierul registru multiport și din câmpuri de instrucțiuni constante.
Fiecare Mac pote efectua o multiplicare din 16 în 16 ciclică, acumulând rezultatele în acumulatori de 40 de biți.
ALU efectuază un set tradițional de operații aritmetice și logice pe date de 16 biți sau 32 de biți.
În plus, multe instrucțiuni speciale sunt incluse pentru a accelera diverse sarcini de prelucrare a semnalului. Acestea includ operațiunile de biți, cum ar fi extrasul din domeniu și numărarea, multiplicări modulo 2 la puterea 32, împărți primitive, saturație și rotunjire, și detectarea semnului / exponentului. Setul de instrucțiuni video conțin aliniarea octeților și împachetarea operațiilor.
Pentru unele instrucțiuni, două operații ALU pe 16 biți pot fi înfăptuite simultan pe regiștri pereche.
Shifter-ul pe 40 de biți poate efectua translatări și rotații și este folosit ca suport de normalizare, extrageri de câmpuri și depozite de instrucțiuni de câmp.
Secvențiatorul de program controlează fluxul instrucțiunilor de executie, inclusiv alinierea instrucțiunilor și decodarea.
Setul de instrucțiuni al procesorului Blackfin a fost optimizat astfel că opcodurile pe 16 biți reprezintă instrucțiunile cele mai frecvent utilizate, rezultate excelente în densitatea de cod compilat. Instrucțiunile DSP complexe sunt codificate în opcodes 32-bit, reprezentând instrucțiunile multifuncționale. Procesoarele Blackfin suporta capacitatea de a soluționa probleme multiple, în cazul în care o instrucțiune de 32 de biți poate fi emisă în paralel cu două instrucțiuni pe 16 biți, permițând programatorului să folosească multe din resuresele de bază într-un singur ciclu de instrucțiuni.
Limbajul procesorului Blackfin de asamblare foloseste o sintaxa algebrică pentru a ușura codificarea și lizibilitatea. Arhitectura a fost optimizată pentru utilizarea legăturii cu compilatorul C / C + +, rezultat rapid și eficient implementării de software.
Procesoarele ADSP-BF536 și ADSP-BF537 ofera posibilitatea să se conecteze direct la o rețea prin intermediul unei Fast Ethernet Media Access Controller (MAC) încorporat care acceptă ambele operațiuni 10-BaseT (10 Mbps) și 100-BaseT (100 Mbps). 10/100 Ethernet MAC periferic este pe deplin conform cu standardul IEEE 802.3 – 2002, și oferă caracteristici programabile concepute pentru a minimiza supravegherea, utilizarea magistralei, sau procesarea mesajului de procesorul sistemului.
Caracteristicile standard sunt:
• suport de MII și protocoale RMII pentru Phys externe.
• moduri full duplex și semi-duplex.
• încadrarea datelor și încapsulare: generarea și detectarea
din preambul, lungimea padding-ului, și FCS.
• managementul accesului dispozitivelor media (în funcționare semi-duplex)
• flux de control (funcționare full-duplex): generarea și
detectarea de rame PAUZĂ.
• managementul stației: generarea de MSD / cadre MDIO
pentru acces de citire-scriere la registrele PHY.
• SCLK de funcționare până la 25 MHz (modurile de operare activ și sleep).
• loopback interne din Tx la Rx.
Unele caracteristici avansate sunt:
• calcularea de control automată a header-ului IP
Descriptor independet pe 32 de biti condus de canalele DMA rx si tx
Starea livrarii cadrelor catre memori via DMA , incluzand semafoarelor pentru eficientizarea cozii zonelor tampon in produsele soft
Suport DAM tx pentru descriptori separati pentru antetul MAC si sarcina utila eliminand operatia de copiere zonei tampon
Moduri de aliniere convenabila a cadrelor ale pachetelor de date tx si rx in memorie dupa antetul MAC de 14 octeti
Suport pentru intreruperi Ethernet programabile
47 de numaratori statistici MAC cu stergere dupa citire selectabila si intreruperi programabile la jumatate din valoare maxima
Filtre de adrese rx programabile, incuzand tabele rezumat pe 64 de biti pentru cadre multicast si/sau unicast si moduri programabile pentru broadcast, multicast, unicast, control si cadre stricate
Mod de filtrare a anumitor pachete petru iesirea din starea de adormire
II. Protocolul CAN
2.1Noțiuni introductive
Controller Area Network (CAN) este o rețea serială care a fost proiectata inițial pentru industria auto, dar a devenit deasemenea o magistrala populara în automatizarea industriilor și în alte aplicații. Magistrala CAN este folosita în principal în sisteme incorporatate și numele indica faptu că este reteaua se stabilește între microcontrolere. Este un sistem format din două fire , half duplex, și de mare viteză. Este foarte potrivit a se folosi în aplicații de mare viteză care au la baza transmiterea de mesaje scurte, fiind un sistem de incredere si robust .
Teoretic CAN poate fi implementat pentru a lega 2032 de dispozitive (fiecare nod fiind un identificator) intr-o singură rețea. Totuși datorită limitării practice a dispozitivelor fizice(tranceiver-ele), poate să conecteze doar pana la 110 noduri, folosind 82C250, Philips, intr-o singură retea. Acest procedeu oferă o comunicație la viteză ridicată de până la 1 mb/secundă, astfel obținundu-se un controller în timp real, în plus apariția erorilor și detecția lor este mult mai ușor de rezolvat într-un mediu zgomotos.
2.2 ISTORIE
CAN a fost dezvoltat prima dată de Robert Bosch GmbH, Germania, în 1986 unde i-a fost cerut să dezvolte un sistem de comunicație între unitățile de control (ECU) la vehiculele firmei Mercedes. Cercetatorii au descoperit că un UART nu mai este potrivit în această situație pentru că este folosit în comunicații punct la punct. Nevoia de un sistem de comunicație multimaster a devenit imperativă. Prima implementare fizică CAN a fost fabricata în 1987 de firma INTEL.
In tabelul urmator este prezentat evolutia cronologica a conceptului CAN:
2.3 Dezvoltarea primului chip
La inceputul anului 1980 inginerii de la BOSCH au evaluat sistemul magistralei seriale existente cu privire la posibila folosire pentru mașini. Deoarece niciun protocol de rețea disponibil nu a fost capabil să facă față cerințelor inginerilor în automobile, Uwe Kiencke a început să dezvolte un nou sistem de magistrală serială în 1983. Noul protocol trebuia să adauge în principal o nouă funcționalitate și oportunitatea reducerii numărului de fire. Inginerii de la Mercedes-Benz s-au implicat încă de la început în faza de specificații a acestei noi magistrale seriale, la fel și Intel . Professorul doctor Wolfhard Lawrenz de la Universitatea de Științe Aplicate din Braunschweig-Wolfenbüttel, care a fost angajat ca consultant a dat noului protocol numele “Controller Area Network”. Profesorul Dr. Horst Wettstein de la Universitatea din Karlsruhe a acordat o deosebita asistenție academica proiectului.
În februarie 1986, a aparut CAN: la congresul SAE din Detroit, noul sistem dezvoltat de Bosch a fost prezentat sub numele de ‘Automotive Serial Controller Area Network’, Uwe Kiencke, Siegfried Dais si Martin Litschel au introdus protocolul de rețea multimaster. Acesta era bazat pe un mecanism de arbitrare indestructibil, care ofera acces la mesajele cu cea mai mare prioritate indiferent de intarziere,neexistand niciun controller master central. Mai mult decat atât, „părintii” CAN au implementat anumite mecanisme pentru detecția erorilor. Managementul erorilor cuprinde deasemenea deconectarea automată a nodurilor defecte pentru a mentine comunicația între celelalte noduri, mesajele transmise nu erau identificate după adresa nodului transmițătorului sau receptorului mesajului(cum se întamplă în majoritatea sistemelor), ci după conținut, identificatorul reprezentând conținutul mesajului avea și funcția de a specifica prioritatea mesajului în cadrul sistemului.
Multe prezentări și publicații care decriu aceast protocol inovator au urmat până la mijlocul anului 1987 când intel a scos pe piață primul chip CAN, Intel 82526. A fost prima implementare hard a protocolului CAN. Puțin după aceea Philips Semiconductors au introdus pe piață 82C200. Acești doi stramoși ai controlerelor CAN sunt puțin diferiți privind filtrarea mesajelor și managementul acestora. Pe de o parte conceptul FullCAN implementat de catre INTEL necesită mai putin încărcarea procesorului microcontroller-ului față de implementarea BasicCAN a Philips. Pe de altă parte, dispozitivele FullCAN erau limitate privind numarul de mesaje care puteau fi primite. Controller-ul BasicCAN folosește mai puțin silicon.
În controller-ele de astazi au aparut o serie de diferențe privind concepția, acceptarea și filtrarea mesajelor.
.
2.4 Standardizarea
Speciificațiile CAN Bosh (versiunea 2.0) au fost trimise pentru standardizare internațională la inceputul anilor 1990. După câteva divergente, implicând în special “rețeaua de vehicule”, dezvoltată de un fabricant de automobile mare al pieței Franceze, în anul 1993 standardul ISO 11898 pentru CAN a fost publicat. În plus, protocolul CAN definește un nivel fizic pentru a atinge o rată de transfer de până la 1 Mb/s. În 1995 standardul ISO 11898 a fost extins cu descrierea idetificatorul CAN pe 29 de biti.
Din păcate toate specificațiile și standardizăriile specificatiilor CAN publicate contineau erori sau erau incomplete. Pentru a evita incompatibilitatea implementarilor CAN, Bosh s-a facut răspunzător ca toate chip-urile create să fie compatibile cu modelul propriu. Mai mult decât atât Universitatea pentru Știinte Aplicate din Germania, a condus teste de conformitate CAN pentru câțiva ani. Parametrii de testare se bazează pe standardizarea internațională de specificare a testelor ISO 16845.
Standardul ISO 11898-1 descrie nivelul de date CAN, iar standardele 11898-2 si 11898-3 fac referință la nivelul fizic. Standardele 11992 și 11783 definesc aplicații specifice bazate pe CAN, interfețe petnru camione respective automatizare în agricultura, bazându-se pe protocolul American j1939, fiind totuși incompatibile.
2.5 Timpul și pionierii CAN
Deși CAN a fost dezvoltat inițial pentru a fi folosit în automobile, primele aplicații au apărut în segmente de piață diferite. În special în Europa de nord, CAN era deja foarte popular la inceput. În Finlanda, fabricantul de lifturi Kone folosea magistrala CAN. Un inginer Suedez, Kvaser, a sugerat CAN anumitor producători de echipamente folosite în industria textilă. Astfel sub conducere lui Lars-Berno Frederiksson s-a format grupul ‘CAN Textile User’s Group’.
În Norvegia, Philips Medical System s-a alăturat utilizatorilor industriali CAN prin decizia de a folosi CAN pentru reteaua internă a mașinilor folosite pentru radiografii. Specificațiile pentru mesaje ale Philips (PMS), dezvoltate de Tom Suters, reprezintă primul nivel aplicatie al retelei CAN. Profesor Etschberger de la Universitate de Știinte Aplicate a avut idei aproape identice, dezvoltând un protocol similar.
În pofida faptului că aparuse prima standardizare pentru un protocol de nivel înalt, o mulțime dintre pionierii CAN foloseau o abordare momolitică. Funcțiile de comuniare, managementul rețelei și codul aplicației făceau parte din soft. Deși unii utilizatori preferau o abordare modulară ei încă aveau dezavantajele soluției impuse. Efortul necesar pentru promovarea și menținerea protocolului CAN de nivel superior au fost subestimate.
La începutul anilor 90 a fost timpul pentru fomarea unui grup de utilizatori pentru standardizarea diferitelor soluții. În anul 1992, Holger Zeltwanger, editor șef la revista VMEbus, a adus laolaltă utilizatorii și producătorii pentru a stabili o platformă netură de dezvoltare CAN. Prima publicație tehnică, a apăruta la câteva săptămâni și prezenta nivelul retea: CiA recomandă folosirea tranceiverului CAN pentru a concorda cu standardul ISO 11898.
Una dintre principalele sarcini a CiA a fost descrierea nivelului aplicatie. Folosind materialul existent al Philips Medical Systems și STZP, impreuna cu alți membrii ai CiA, a fost dezvoltat nivelul de aplicație CAN(CAL). În tot acest timp CiA reprezenta legatura între experții CAN și cei care doreau să cunoască domeniul. Astfel, din anul 1994 are loc conferința internatională anuală CAN( iCC)
O altă abordare academică a fost promovată de LAV, o asociație de vehicule agricole. Până în anul 1980 sistemul bazat pe CAN pentru vehicule agricole (LBS) a fost dezvoltat. Înainte ca munca să fie complet terminată comitetul international a decis să aprobe varianta SUA j1939, o abordare non-modulară care este foarte usor de folosit dar totuși foarte inflexibilă.
2.6 De la teorie la practica
Desigur producătorii de semiconductoare care au implementat module CAN în dispozitivele proprii s-au axat pe indurstia de automobile. De la mijlocul anilor 1990, Infineon Technologies și Motorola au exportat o mare cantitate de controllere CAN către producatorii de automobile din Europa. Ca urmator val, producătorii de semiconductori din Est au oferit controllere CAN la sfarsitul anilor 1990. Cei de la NEC au scos pe piață cu un chip legendar CAN 72005 în anul 1994.
Începând cu anul 1992, Mercedes-Benz a folosit CAN pentru masinile de clasă ridicată. Ca un prim pas unitatea de control făcea managementul motorului prin magistrale CAN. Al doilea pas a fost conectarea altor componente electronice. Au fost implementate doua sisteme de magistrale CAN contectate cu ajutorul unor gateway-uri. Alți producători precum BMW, Renault, Fiat, Saab, Volvo folosesc CAN în cadrul contrucției autoturismelor autorurismelor.
La sfârșitul anilor 1990 inginerii de la Cincinnati Milacron împreună cu Allen-Bradley și Honeyweel Microswitch au început un proiect de comunicații bazat pe CAN. După ceva timp câțiva cercetatori importanți au abandonat, dar Allen-Bradley și Honeywell au continuat să lucreze separat. Cerectarea a dus la doua protocoale de nivel înalt: „DeviceNet” și „Smart Distributed System” care sunt asemanatoare.
În Europa, câteva companii au încercat să folosească CAL. Deși abordarea CAL era corecta din punct de vedere academic și era posibil să fie folosită în aplicații industriale, fiecare utilizator trebuia să creeze un nou profil deoareace CAL era un adevarat nivel aplicatie. CAL poate fi privit ca un pas academic necesar către o soluție de aplicație independentă CAN, dar nu a caștigat niciodata acceptarea în domeniu.
Din anul 1993 a fost dezvoltat CANopen. Pe partea academică, profesorul dr. Gerhard Gruhler și dr. Mohammed Farsi au participat într-una dintre cele mai de succes activități. După terminarea proiectului, specificatile CANopen au fost inmanate către CiA pentru dezvoltare ulterioara și mentenanță. În 1995, profilul de comunicații CANopen a fost publicat și doar în cinci ani a devenit cel mai important standard pentru rețele integrate din Europa. CANopen oferă flexibilitate ridicată și este ușor de configurat. Acest protocol de nivel înalt , care a fost folosit in diferite arii de aplicatii a fost standardizat international (EN 50325-4)
CANopen este folosit în special în Europa: mașini în Italia, fierăstraie mecanice în Germania, mașini folsite în industria tabacului in Marea Britanie, mașini pentru producerea ceasurilor în Elveția. În SUA CANopen este folosit în automatele de sortat scrisori.
CANopen nu definește doar nivelul aplicatie și profilul de comunicație, ci și un mediu de lucru pentru programarea sistemului, diferite dispositive, interfețe și profile de aplicații. Acesta este motivul pentru care toate segmentele industriei au decis sa folosească CANopen la sfârșitul anilor 90.
DeviceNet este optimizat pentru automatizări în fabricație și CANopen este potrivit pentru controlul mașinilor.
2.7 Viitorul privind CAN
În anul 2000 ISO impreună cu alte companii au definit un protocol pentru transmiterea mesajelor CAN bazat pe declanșare în funcție de timp. Dr Bernd Muller, Thomas Feuhrer și alți angajați Bosch, împreună cu experții din industria de semiconductori și din mediul academic au definit protocolul TTCAN.
Această extensie CAN, care acum trebuie implementată în silicon nu va permite doar transmiterea mesajelor la intervale egale de timp sau implementarea ciclurilor finite cu ajutorul CAN ci și conectarea unui numar mare de controller în aplicații. Deoarece protocolul CAN nu a fost alterat este posibila transmiterea pe aceași magistrală fizica a mesajelor declanșate în funcție de timp sau de evenimente.
Luând în considerare că protocolul CAN este înca la inceput pe piața globala, chiar și conservatorii estimeaza o creștere în acest domeniu în urmatorii 15 ani. Acest lucru este subliniat și de faptul că producatorii de automobile abia au inceput să folosească protocolul în producția de serie. Mai mult decât atât se asteaptă un volum mare de noi tipuri de aplicații.
Bosh a dezvoltat CAN in 1985 pentru rețele în interiorul vehiculelor. În trecut producătorii de automobile conectau dispozitivele electronice folosind sisteme punct la punct. Producătorii au început să foloseasca din ce in ce mai multe electronice în vehicule ceea ce înseamană foarte multe fire și costuri ridicate. Apoi ei au înlocuit firele dedicate cu rețele interne, ceea ce reduce costurile cablajelor, complexitatea și greutatea. CAN, un sistem de nivel înalt pentru rețele inteligente a pornit ca un standard de rețea internă pentru autovehicule. Industria de automobile a adoptat rapid CAN și în 1993 a devenit standardaul internațional cunoscut ca ISO 11898. Din 1994 au fost standardizate protocoale de nivel înalt precum CANopen și DeviceNet. Alte piețe au adoptat aceste protocoale adiționale, care acum sunt standard pentru comunicații industriale.
2.8 Beneficiile CAN
CAN oferă o soluție ieftină și durabilă pentru o rețea de comunicatie între mai multe dispositive CAN. Un avantaj al acestui lucru este că unitățile de control pot avea o singură interfață CAN în loc de intrări pentru fiecare dispozitiv analogic sau digital din sistem. Acest lucru micșorează costurile și greutatea produsului rezultat. Fiecare dispozitiv din rețea are un controller CAN. Toate dispozitivele din rețea văd toate mesajele transmise, putând astfel să decidă dacă mesajul este ralevat sau trebuie filtrat. În plus fiecare mesaj are o prioritate, și deci dacă două noduri încearcă să trimită un mesaj simultan, cel cu prioritate maximă are dreptul de transmitere
2.9 Aplicații CAN
CAN a fost creat inițial pentru folosirea în automobile, și deci cea mai comuna aplicație este rețaua electronica din automobile.
În timp și alte ramuri ale indurstriei si-au dat seama de nevoia și beneficiile aduse de CAN în ultimii 15 ani și au adoptat protocolul pentru o paletă largă de aplicații. Un tip important de aplicații sunt cele feroviare cum ar fi tramvaie, metrouri, trenuri ușoare și trenuri de lungă distanță. CAN poate fi găsit pe diferite nivele în retelele multiple din aceste vehicule. Spre exemplu poate fi folosit pentru deschiderea ușilor, frânare, controlul locurilor pasagerilor și altele. CAN are aplicabilitate și in industria aeronautică: senzori de zbor, sisteme de navigație. Se poate gasi o implementare CAN în foarte multe aplicații aerospațiale pornind de la analize de zbor până la sisteme de control al motorului cum ar fi nivelul combustibilului, pompele și motoarele liniare.
Producătorii de echipamente medicale folosesc CAN ca rețea incorporată în dispozitivele medicale. De fapt unele spitale folosesc CAN pentru a gestiona o întreaga camera de operație. Componentele camerelor de control ale spitalelor cum are fi lumini, camere de filmat, aparate cu raze X și paturile pacienților sunt controlate folosind CAN.
Lifturile și scările rulante folosesc deasemenea CAN, iar spitalele folosesc protocolul CANopen pentru legarea în rețea a dispozitivelor lifturilor și pentru a le controla. CANopen este folosit de asemenea și în aplicații non-industriale cum ar fi echipamente de laborator, camere sportive, telescoape, uși automatizate și chiar espresoare de cafea.
2.10 Nivelele fizice CAN
Protocolul CAN oferă mai multe nivele fizice care pot fi folosite. Aceste nivele fizice clasifică anumite aspect ale unei rețele CAN, cum ar fi nivele electrice, scheme de semnale, impedanța firelor, rată maximă de transfer a benzii și altele. Cele mai folosite nivele fizice sunt:
CAN de mare viteza (High-Speed CAN)
Acesta e de departe cel mai folosit nivel fizic. Rețele CAN de mare viteza sunt imlementate cu două fire și permit transfer de până la 1 MB/s. Dispozitivele care conțin CAN de mare viteză sunt sistemele antiblocare a franelor (ABS), module de control al motoarelor, sisteme de evacuare
Dispozitive fizice de viteză redusă și toleranță la erori
Acestea sunt implementate deasemenea cu două fire și pot cumunica cu viteze de până la 125kb/s și ofera transceiver-e cu capabilitate de toleranță a erorilor. Acestea sunt folosite în special pentru confort deoarece nu sunt neaparat necesare.Spre exemplu ele sunt folosite pentru a detecta dacă toate usile sunt inchise, pentru deschiderea electrica a geamurilor, pentru detecția stprii centrurii de siguranță, sau luminile de frânare.
Dispozitive CAN cu un singur fir
Aceste pot comunica cu o rata de pana la 33,3kb/s. O alta denumire este SAE-j2411, CAN-A sau GMLAN.Aceste sunt folosite in industria auto pentru ajutarea scaunelor si oglinzilor.
Dispozitice CAN selectabile soft
Produsele National Instruments CAN oferă posibilitatea configurării soft a intefețelor CAN pentru folosirea oricărui tip de tranceiver.
2.11 Pachetele CAN
Dispozitivele CAN trimit data in cadrul retelei in pachete numite cadre. Un cadru CAN conține urmatoarele câmpuri
SOF (start-of-frame) bit –indică începutul unui mesaj cu un bit dominant (logic 0)t
Arbitration ID – Identifică mesajul și indică prioritatea acestuia. Cadrele apar în două formate—standard care folosesc un ID de arbitrare pe 11 biti și extinse care folosesc o arbitrare pe 29 de biti
IDE (identifier extension) bit –permite diferentierea între cadrele standard si extinse
RTR (remote transmission request) bit –permite diferentierea unui cadru izolat de unul de date. Un bit de 0 indica un cadru de date iar un bit de 1 indica un cadru izolat
DLC (data length code) – indica numarul de biți de date
Data Field –conține între 0 și 8 biți de date
CRC (cyclic redundancy check) –conține 15 biti pentru verificare redundanței codului. Câmpul CRC este folosit pentru detecția erorilor.
ACK (ACKnowledgement) slot –orice controller CAN care primește un mesaj correct trimite un bit ACK la sfarsitul mesajului.Nodul de transmitere verifica prezenta acestui bit și dacă nu il gasește reîncearca transmitera.
CAN Signal – o parte independetă de date dintr-un cadru de date CAN. Se mai numește și canale.Deoarece câmpul de date conține 8 biți de date, un cadru CAN conține între 0 și 64 de semnale individuale.
În imaginea următoare , sunt reprezentate șase canale conținute într-un cadru de date ale unui cadru CAN simplu. Fiecare semnal conține 8 biti de date.
2.12 Fisierele bazei de date CAN
Fișierele bazei de date CAN sunt fișiere text care conțin informații scalare pentru cadrele de date și definițiile semnalelor.Editorul de baze de date NI-XNET recunoaște FIBEX database files (.xml), Vector Database file (*.dbc) și National Instruments CAN database files (*.ncd).
Pentru fiecare semnal baza de date CAN defineste reguli de conversie pentru unitățile tehnice. Următoarele date sunt stocate în baza de date:
Numele canalului
Locația (bitul de start) și lungimea( numarul de biți) al unui canal dintr-un mesaj
Ordinea biților (Intel/Motorola)
Tipul de date (signed, unsigned, and IEEE float)
Gama
Valoarea initiala
Comentarii
Aceste informatii pot fi folosite pentru a converti informația cadrului intr-o valoare inteligibilă. Figura urmatoare prezintă un exemplu al unei astfel de conversii
Fișierele pot conține cadre sau definiții de semnale pentru un intreg dispozitiv în care se folosesc(de exemplu pentru un intreg vehicul).Fiecarea rețea are o baza de date unică. În plus, aceste baze de date sunt specifice producatorului și de obicei sunt confidențiale.
Folosind o baza de date pentru multe cadre într-o retea CAN, multe aplicații CAN pot automat converti o informație a unui cadru direct într-o valoare inteligibila pentru o persoana. Acest lucru simplifică dezvoltarea aplicației.
2.13 Functionarea comunicatiilor CAN
După cum am prezentat pînă acum CAN este o rețea Peer-to-peer. Aceasta înseamană că nu există niciun controller master și nodurile au permisiunea de a scrie și citi date pe magistrala CAN. Când un nod CAN este gata sa transmită date , face o verificare să vadă dacă magistrala este ocupată, și apoi doar scrie direct cadrul pe aceasta. Cadrele CAN care sunt transmise nu conțin adrese nici pentru nodul care se transmite nici despre nodul care a transmis. În schimb, un ID de arbitrare care este unic în rețea etichetează cadrul. Toate nodurile din rețeaua CAN primesc cadrul CAN , și în funcție de ID-ul de arbitrare al cadrului transmis, fiecare nod CAN din rețea decide daca acceptă sau nu cadrul.
Daca mai multe noduri încearcă să transmită un mesaj pe magistrala CAN în același timp, nodul cu prioritate maximă ( cel mai mic ID de arbitrare) primește automat accesul la magistrală. Nodurile cu prioritate mică trebuie să aștepte până când magistrala devine libera înainte de a încerca să transmită un mesaj. În acest fel se pot implementa retele CAN pentru a asigura comunicarea deterministă intre nodurile CAN.
III Prezentarea generala a protocolului CAN din BF537
Facilitatile protocolului CAN implementat continut in Blackfin 537 sunt:
1.se bazeaza se standardul CAN 2.0B( accepta ID de mesaj atât pe 11 biți cat și pe 29 de biți)
3.suportă rate de transfer până la 1Mbit/s
4.contine 32 mailbox-uri (8 de transmitere, 8 de primire și 16 de configurare)
5. masca de acceptare pentru fiecare mailbox
6. infiltrarea datelor (primii 2 bytes) pot fi folositi pentru filtrarea acceptarii(Modul DeviceNetTM)
7.registrii pentru erori și pentru avertizari
8. valoari vizbile ale pinilor de primire și transmitere.
Modulul CAN este o interfata cu rată mica de biți care poate fi folosită în aplicații în care rata de biți ajunge până la 1mb/s.
Protocolul CAN conține un segment de verificare CRC, urmărirea erorilor mesajelor și limitarea căderii nodurilor ca mijloace de imbunătătire a fiabilitatii retelei la nivelul cerut de controlul aplicatiei.
3.1 Generalităti privind interfața
Interfața magistralei CAN este o linie simpla cu 2 fire. Vezi fig.1 pentru reprezentarea simbolica a interconectării unui transceiver CAN, si fig.2 pentru diagram block. Ieșirea CANTX a procesorului Blackfin si intrarea CANRX sunt conectate la un transceiver extern CAN.
Pinii CANTX și CANRX operează cu nivele TTL și sunt potriviți pentru operații cu magistrala tranceivelor CAN în conformitate cu ISO/DIS 11898
Fig.1 reprezentarea interconectarii tranceiverului CAN
Semnalele CANRX și CANTX sunt multiplexate cu semnalele secundare ale SPORT0. Pentru a permite funcționalitatea CAN a pinilor PJ4 și PJ5 câmpul de biți PJCE ai registrului PORT_MUX trebuiesc setați la 01. Datele CAN sunt definite fie ca dominant (0L) fie ca recesiv(1L). starea implicită a ieșirii CANTX este recesivă. Deoarece pinul CANTX este multiplexat cu un semnal de transmitere SPORT ieșirea poate fi 0, dacă SPORT-ul este selectat în loc de CAN ca implicit după resetare.
Fig2. Diagrama BLOCK
Controlerul CAN facilitează 32 de buffere de mesaje, numite mailbox-uri. Opt mailbox-uri sunt dedicate pentru transmiterea mesajelor, opt pentru recepționare și 16 sunt pentru configurare. În consecință, arhitectura protocolului CAN se bazeaza pe 32 de intrări mailbox de tip Ram. Mailbox-ul este accesat secvențial de interfața serială CAN sau de procesorul BlackFin. Fiecare mailbox conține 8 regiștrii de date și control pe 16 biti, și 2 registrii pe 16 biți de mască(opționali). Toți acești regiștrii trebuie configurați înainte de folosire. Din moment ce aceste mailbox-uri sunt implementate ca RAM, valorile de reset ale acestor registrii find nedefinite. Datele sunt împărtite în 2 câmpuri, care conțin : identificatorul de mesaj , time stamp(stampilă termporală), numărator de biți, până la 8 biți de date și cațiva biți de control. Vezi fig.3
Fig.3 Mailbox-ul CAN
Registrii perche de identificare ai mailbox-ului CAN include:
29 de biți de identificare
Bitul de validare a maștii (AME)
Bitul de cerere al încheierii transmisiei(RTR)
Bitul de indentificare al extensiei(IDE)
Alti regiștrii de mailbox sunt:
Lungimea codului de date(DLC) în CAN_MBxx_LENGHT. Cei mai semnificativi 12biți ai CAN_MBxx_LENGHT ai fiecarui mailbox sunt rezervati. Acești 12 biti întotdeauna trebuie setati pe 0.
Până la 8 biți de date, se trimite mai întâi MSB din registrii CAN_MBxx_DATA3/2/1/0 pe baza numărului de biți definite în DLC.
2 octeti pentru valoarea time stamp(TSV)in registrul CAN_MBxx_TIMESTAMP
Ultimii regiștrii din zona de mailbox-uri sunt regiștrii de mască (CAN_AMxxH și CAN_AMxxL). Masca este activă atunci când bitul AM este setat în registrul CAN_MBxx_ID1. Dacă DNM = 1 în registrul CAN_CONTROL și FDF=1 în masca corespondentă atunci biții EXTID_HI[15:0] și registrului CAN_MBxx_ID0 sunt refolosiți ca și cod de acceptare. (DFC) al filtrării datelor.
3.2 Cotrolul mailbox-urilor
Funcția de control MMR a Mailbox-urilor este în regiștrii de control și status pentru toate cele 32 de Mailbox-uri. Fiecare bit din acești registrii reprezintă un mailbox anume. Din moment ce MMR are 16 biți, o pereche de regiștrii este necesară pentru a gestiona anumite functionalități pentru toate cele 32 de Mailbox-uri. Mailbox-urile 0-15 sunt configurate/monitorizate în regiștrii cu un bit de padding cu valoarea 1. Similar mailbox-urile 16-31 folosesc aceiași regiștrii cu bitul de pading 2. De exemplu, registrii de direcție a mailbox-urilor CAN (CAN_MDx) controlează mailbox-urile așa cum se arată in figura următoare.
Fig 4. Perechea de registrii CAN
Zona de regiștrii de control pentru mailbox-uri constă în trei perechi de regiștrii:
CAN_TRR1 și CAN_TRR2 (regiștrii de transmitere a cererii)
CAN_RMP1 și CAN_RMP2 (regiștrii de asteptare a primirii mesajului)
CAN_RML1 și CAN_RML2 (regiștrii pentru primirea mesajelor pierdute)
CAN_RFH1și CAN_RFH2 (regiștrii de manipulare a cadrelor)
CAN_OPSS1 și CAN_OPSS2 (regiștrii de rescriere a protecției sau de transmitere unică)
CAN_MBIM1 și CAN_MBIM2 (regiștrii măstilor de întrerupere)
CAN_MBTIF1 și CAN_MBTIF2 (regiștrii pentru transmiterea flag-urilor de întrerupere)
CAN_MBRIF1 și CAN_MBRIF2 (regiștrii pentru primirea flag-urilor de întrerupere)
Din moment ce mailbox-urile 24-31 suportă doar operații de transmitere și mailbox-urile 0-7 sunt doar pentru primire, cei mai nesemnificativi 8 biți din “primul” registru și cei mai semnificativi 8 biți din ce de-al “doilea” registru sunt uneori rezervați sau restrictionați.
3.3 Funcționarea protocolului CAN
Deși CANRX și CANTX sunt semnale TTL, semnalele CAN din “spatele” transciverului au un excitator asimetric. O stare low a pinului CANTX activează excitatori puternici în timp ce o stare high este condusă slab. În consecință, starea low este definită ca stare “dominantă” iar stare high este definită ca stare „recesivă”. Dacă modul CAN este pasiv, pinul CANTX este și el high. Dacă două noduri CAN transmit în același timp, biții dominanți suprascriu biții recesivi.
Protocolul CAN spune că toate nodurile care încearcă să trimită un mesaj pe magistrală CAN încearcă să trimită un mesaj imediat ce magistrala devine liberă. Semanlui SOF(Start of Frame Indicator) atenționează începutul unui nou cadru. Fiecare nod care trimite un mesaj începe cu trimiterea id-ului mesajului (message ID). În timpul transmiterii, controlerul CAN eșantionează pinul CANRX iar ca nivel logic transmis este valoarea pinului CANTX din acel moment. Dacă un nod care transmite plasează un ‚1’ recesiv la pinul CANTX și detectează un ‚0’ dominant la pinul CANRX, recunoaște că un alt nod a transmis un bit dominant pe magistrală, ceea ce inseamna ca un alt nod are prioritatea mai mare. Deci dacă valoarea de la pinul CANRX este valoare pinului CANTX, transmisia continuă, altfel controller-ul CAN recunoaște ca a pierdut arbitrarea și configurația sa este cea care va „dicta” următoarea acțiune. Pentru mai multe detalii privind structura cadrului CAN analizați figura următoare.
Fig 5.Cadrul CAN standard(Standard CAN frame)
Figura prezintă un cadru identificator de 11 biți. După SOF și identificator se află bitul RTR, care indică dacă acest cadru conține date sau este o cerere de date asociată cu un identificator de mesaj(remote frame).
Când este setat câmpul IDE se indică faptul ca mesajul este un cadru extins cu un identificator de 29 de biti. Într-un cadru extins, prima parte a mesajului este asemănătoare cu cea a unui cadru normal.
Fig 6. Cadru CAN Extins
După cum se observa în câmpul RTR, un bit dominant în câmpul IDE câștigă arbitrarea cu un cadru extins cu aceiași cei mai nesemnificativi 11 biți. În consescință cadrele standard au prioritate mai mare decât cadrele extinse. Cererea de substituire a bitului (SRR, întotdeauna trimite ca recesiune), biții rezervați r0 și r1(trimite intotdeauna ca dominant), și suma de control sunt generate automat.
3.4 Procesele CAN
Controlerul CAN este în modul configurare când procesorul revine în strea de reset sau hibernare. Înainte de inițializarea mailbox-urilor trebuie setat ceasul CAN pentru lucrul cu magistrala.
3.5 BIT TIMING
Controlerul CAN nu are un ceas dedicat, acesat este derivat din ceasul-sistem.(SCLK) bazat pe un număr configurabil al cuantei de timp.
TQ = (BRP+1)/SCLK, BRP=10biti, din registrul CAN_CLOCK
Registrul CAN_CLOCK definește valoarea TQ, și de acolo rezultă durata de transmitere a unui bit pe magistrală CAN. Registrul CAN_TIMING controleaza bitul de timp si esantioanele din cadrul potrocolului CAN.fig.7 arata cele 3 faze ale unui bit CAN : segmentul de sincronizare, segmentul anterior esantionului de proba si segmentul urmator esantionului de proba.
Fig.7 cele 3 faze ale bitului CAN
Campurile TSEG1,TSEG2 ale CAN_TIMING controleaza cate TQ sunt necesare pentru transmiterea unui bit. Timpul bitului este calculat dupa formula: tBIT = TQ x (1 + (1 + TSEG1) + (1 + TSEG2)). Modulul CAN implementat de Blackfin nu face distinctive dintre segmental de propagare si segmental de faza 1 asa cum sunt definite in standard. Valoarea TSEG1 are rolul de a acoperi ambele valori. Valoarea TSEG2 reprezinta segmental de faza 2.
Daca modulul CAN detecteaza un salt recesiv-dominant in afara segmentului de sincronizare poate automat sa mute automat esantionul de proba, astfel incat sa functioneze correct. Saltul sincronizarii SJW specifica numarul maxim TQ, cuprinse intre1-4 , permitand o astfel de incercare de resincronizare. Valoarea SJW, nu trebuie sa fie mai mare decat TSEG2 sau TSEG1. In consecinta, regula de scriere a CAN_TIMING este:
SJW <= TSEG2 <= TSEG1
In plus fata de aceaasta regula fundamental segmental de faza 2 trebui deasemenea sa fie >= cu timpul de procesare al informatiei IPT. Acesta este timpul necesar unei intrari unui esantion de intrare logica CANRX. In cazul Blackfin acest modul can reprezinta 3 cicluri SCLK. Din aceasta cauza restrictia aplicata valorii minime TSEG2 , daca BRP <2. Daca BRP=0, TSEG trebuie sa fie >=2. Daca este setata pe 1, atunci minimul TSEG este 1.
3.6 Operatiile de transmitere
Fig. 8 arata operatia de tranmitere CAN.Mailbox-urile 24-31 sunt dedicate transmiterii, mailbox-urile 8-23 pot fi configurate pentru transmitere scriind 0 in bitul correspondent in registrul CAN_MDx. Dupa scrierea datelor si identificatorilor in zona mailbox-urilor mesajul este trimis dup ace mailbox-ul n este activat.
Cand transmiterea este complete bitul corecpondent in registrul cererii de transmitere sic el din registrul de resetare al cererii de tranmitere sunt stersi.daca transmiterea s-a efectuat cu success bitul correspondent din registrul de acceptare al transmisie este setat. Daca transmisia a fost intrerupta datorita pierderii arbitrarii sau unei erori bitul correspondent din registru CAN_AAX este setat, o cerere de transmitere poate fi deasemenea suspendata setand bitul correspondent TRRn din registrul CAN_TRRx.
Un caz special este atunci cand bitul TRSn este setat, accesul de scriere in mailbox este permis prin setarea TRSn dar schimbarea datelor intr-un astfel de mailbox poate duce la confuzii in timpul transmiterii.
Activarea si dezactivarea mailboxurilor au impact asupra cererii de transmitere. Setarea bitului TRSn asociat cu un mailbox dezactivat poate duce la eroare. Similar dezactivarea unui mailbox inainte de resetarea bitului TRS poate duce la rezultate neasteptate.
3.7 Retransmiterea
In mod normal mesajul este retransmis dup ace arbitrarea este pierduta sau un cadru eronat este detectat pe magistrala CAN. Daca exista mai mult de un mesaj care asteapta sa fie trimise mailbox-ul cu cea mai mare prioritate trimite primul. (fig.8). Transmisia nereusita este reluata dupa ce toate mesajele cu prioritate mai mare sunt trimise.
Fig.8 Graficul operatiei de transmitere CAN
3.8 Transmiterea Single Shot.
Daca este folosita transmiterea Single Shot(OPSSn = 1 in CAN_OPSSx), bitul TRSn correspondent este sters dup ace mesajul este transmis cu success sau daca transmisia a fost pierduta din cauza unei pierderii unei arbitrary sau a unei erori de cadru. Totusi, nu exista nici o incercare de retransmitere daca prima incercare nu a reusit, si renutarea este raportata(AAn = 1 in CAN_AAx)
3.9 Operatia de primire
Hardware-ul Can primeste mesaje si renunta la mesajele invalide autonom. Odata ce un mesaj valid a fost primit cu succes, receptorul logic interogheaza toate mailbox-urile active secvential, de la 23 la 0,chiar daca mesajul este de interes pentru nodul respectiv sau nu.
Indentificatorul de mesaj al mesajului primit, impreuna cu identificatorul de extensie(IDE) si bitii RTR sunt Daca AME este setat, registru mastilor de acceptare determina care identificator este necesr pentru potrivire.comparate cu setarile registrilor fiecarui mailbox. Daca bit-ul AME nu este setat, o potrivire este semnalata doar daca IDE, RTR si toti bitii identificatorilor se potrivesc exact.
Tabelul 1. Mailbox-uri folosite pentru Filtrarea Mastii de Acceptare.
Daca filtrul de acceptare gaseste o potrivire a identificatorilor, continutul cadrului de date este salvat in mailbox. Daca identificatorl nu corespunde niciunui mailbox, mesajul nu este salvat. Figura 9 ilustreaza algoritmul de decizie pentru salvarea mesajelor in mailbox-uri.
Fig 9.Graficul de receptionare CAN
3.10 Filtru de acceptare a datelor
Daca este activate DeviceNet(DNM = 1 in CAN_CONTROL) si mailbox-ul este setat pentru filtrare in campul de date filtrarea este facuta pe ID-ul standard al mesajului si campului de date. Campul de filtrare al datelor poate fi programat fie pentru doar primii bytes sau pentru primii 2, cum se arata in tabelul 2.
Tableul 2. Filtrarea campului de date
Daca este setat bitul FDF in registrul corespondent CAN_AMxxH, registrul CAN_AMxxL retine masca acestui camp de date(DFM[15:0]). Daca bitul FDF nu este setat in registrul corespunzator CAN_AMxxH, atunci registrul CAN_AMxxL contine identificatorul de masca extins(EXTID_HI[15:0]).
3.11 Time Stamps
Pentru a primi informatii privind timpul receptiei sau timpul transmiterii pentru fiecare mesaj, se programeaza numaratorul universal CAN in modul time stamp. Valoarea celor 16 biti este scrisa in registrul CAN_MBxx_TIMESTAMP corespunzator mailbox-ului care a primit sau a transmis mesajul.
Valoarea time stamp este incapsulata in esantionul de proba al inceputului de cadru(SOF) pentru fiecare mesaj ce se trimie sau se primiste. Dupa aceea, aceasta valoare este copiata in registrul CAN_MBxx_TIMESTAMP correspondent
Daca mailboxul este configurat manipularea automata a cadrelor, valoarea time stamp este scrisa pentru transmiterea unui cadru de date sau pentru receptia unui cadru de date.
Numaratorul poate fi sters(UCRC=1) sau dezactivat (UCE=0) scriind registrul CAN_UCCNF. Numaratorul poate fi deasemenea incarcat cu o valoare scriind registrul CAN_UCCNT.
O supraincarcare a numaratorului seteaza un bitn in registrul global de intreruperi CAN(UCEIS). O intrerupere globala poate sa apara nemascand bitul in registurl global de al mastilor de intrerupere. Daca sursa intreruperii este nemascata, un bit in registrul flag-urilor de intrerupere este deasemenea setat
3.12 Intreruperile CAN
Modulul can ofera trei tipuri de intreruperi independente:
Doua intreruperi pentru mailbox-uri(rreceptionare MBRIRQ si transmitere MBTIRQ)
O intrerupere globala GIRQ
3.12.1 Intreruperile pentru mailbox-uri
Fiecare mailbox poate genera o intrerupere de primire sau transmitere, in functie de configuratie. Pentru a active generarea cererilor de intrerupere pentru mailbox-uri se seteaza bitul correspondent MBIMn in registrul CAN_MBIMx.
Daca mailboxul este configurate pentru primire, flag-ul pentru intreruperea de receptionare corespondenta este MBRIFn=1 in CAN_MBRIFx) dup ace mesajul este salvat.
Daca mailboxul este configurat pentru transmitere, flag-ul correspondent este setat(MBTIFn = 1 in CAN_MBTIFx) dupa ce mesajul este transmis correct.
3.12.2 Intreruperile globale CAN
Pentru gestionarea intreruperilor globale sunt necesari trei registrii
CAN_GIM – registru mastilor de intreruperi globale
CAN_GIS – registrul starilor intreruperilor globale
CAN_GIF – registrul flag-urilor intreruperilor globale
Biti mastii de intrerupere pot afecta doar continutul CAN_GIF. Daca bitul de masca nu este setat, bitul correspondent din CAN_GIF nu este setata cand evenimetul are loc. Bitii de stare din registrul CAN_GIS, sunt setati in permanenta daca intreruperea are loc, independent de biti mastii. Totusi , bitii de stare pot fi folositi pentru salvarea temporara a intreruperilor.
Iesirea de iesire a starii intreruperii globale (GIRQ) este evidentiat daca un bit in registrul CAN_GIF este setat. Bitul GIRQ ramane setat atat timp cat cel putin un bit din registrul de flag-uri este setat.
Exista mai multe tipuri de intreruperi care pot active aceasta intrerupere GIRQ:
Access denied interrupt (ADIM, ADIS, ADIF)
External trigger output interrupt (EXTIM, EXTIS, EXTIF)
Universal counter exceeded interrupt (UCEIM, UCEIS, UCEIF)
Receive message lost interrupt (RMLIM, RMLIS, RMLIF)
Abort acknowledge interrupt (AAIM, AAIS, AAIF)
Access to unimplemented address interrupt (UIAIM, UIAIS, UIAIF)
Wakeup interrupt (WUIM, WUIS, WUIF)
Bus-Off interrupt (BOIM, BOIS, BOIF)
Error-Passive interrupt (EPIM, EPIS, EPIF)
Error warning receive interrupt (EWRIM, EWRIS, EWRIF)
Error warning transmit interrupt (EWTIM, EWTIS, EWTIF)
3.13 Evenimente
Pentru ajutor in implementare, este posibila folosirea numaratorului universal pe post de numerator de evenimente. Numaratorul poate fi programat in campul de 4 biti UCCNF[3:0] al registrului CAN-UCCNF pentru a incremente intr-unul din cazurile urmatoare:
UCCNF[3:0] = 0x6 – eroare de cadru CAN;
UCCNF[3:0] = 0x7 – supraincarcare de cadru CAN
UCCNF[3:0] = 0x8 – pierderea arbitrarii
UCCNF[3:0] = 0x9 – renuntarea transmiterii
UCCNF[3:0] = 0xA – transmisie reusita
UCCNF[3:0] = 0xB – mesajul primit este respins
UCCNF[3:0] = 0xC –mesajul primit este pierdut
UCCNF[3:0] = 0xD – mesaj primit cu success
UCCNF[3:0] = 0xE – mesaj salvat
UCCNF[3:0] = 0xF – mesaj valid
3.14 Registrii CAN
Registrii CAN, ale caror functionalitati si descrieri sunt prezentate in urmatoarele tablele sunt:
Registrii CAN globali(Global CAN Registers
Registrii Mailbox si de masca(Mailbox/Mask Registers)
Regsitrii pentru controlul Mailbox-urilor(Mailbox Control Registers)
Registrii Numaratori Universali(Universal Counter Registers)
Registrii pentru erori(Error Registers)
Tablelul 3. Registrii Globali CAN – descriere
Tablelul 4. Registrii Mailbox si de masca – descriere
Tablelul 5. Regsitrii pentru controlul Mailbox-urilor – descriere
Tablelul 6. Registrii Numaratori Universali – descriere
Tablelul 7. Registrii pentru erori – descriere
3.14.1 Registrii globali CAN
Registrul principal de control CAN(CAN_CONTROL Register)
Figura 11. Registrul principal de control CAN
Registurul global de stare(CAN_STATUS Register)
Figura 12. Registrul global de stare
Mail Box pointer – reprezinta numarul mailbox-ului corespunzator mesajului current transmis. Dupa o transmitere cu success, acesti biti raman neschimbati.
[11111] mesajul mailbox-ului 31 este procesat
…
…
[00000] mesajul mailbox-ului 0 este procesat
Figura 13. Registrul de debug CAN(CAN_DEBUG register)
Figura 14. Registrul de ceas CAN(CAN_CLOCK register)
Figura 15. Registrul de Timing( CAN_TIMING register)
Figura 16. Registrul de intreruperi CAN(CAN _INTR register)
Figura 17. Registrul mastilor de intreruperi(CAN_GIM register)
Figura 18. Registrul de stare al intreruperilor(CAN_GIS register
Figura 19. Registrul de flaguri de intrerupere(CAN_GIF register)
3.14.2 Registrii pentru Mailbox-uri si Masti
Figura 20 Registru de acceptare a mastilor H
Valoare acestui registru nu conteaza atunci cand bitul AME este 0. Daca bitul AME este setat, sunt comparati doar bitii care au bitul carespondet mastii 0. Un bit din registrul de masti care este 1 nu are nevoie de “potrivire”.
Registrii de masti si adresa corespondenta:
CAN_AM00H – 0xFFC0 2B04
CAN_AM01H – 0xFFC0 2B0C
CAN_AM02H – 0xFFC0 2B14
CAN_AM03H – 0xFFC0 2B1C
CAN_AM04H – 0xFFC0 2B24
CAN_AM05H – 0xFFC0 2B2C
CAN_AM06H – 0xFFC0 2B34
CAN_AM07H – 0xFFC0 2B3C
CAN_AM08H – 0xFFC0 2B44
CAN_AM09H – 0xFFC0 2B4C
CAN_AM10H – 0xFFC0 2B54
CAN_AM11H – 0xFFC0 2B5C
CAN_AM12H – 0xFFC0 2B64
CAN_AM13H – 0xFFC0 2B6C
CAN_AM14H – 0xFFC0 2B74
CAN_AM15H – 0xFFC0 2B7C
CAN_AM16H – 0xFFC0 2B84
CAN_AM17H – 0xFFC0 2B8C
CAN_AM18H – 0xFFC0 2B94
CAN_AM19H – 0xFFC0 2B9C
CAN_AM20H – 0xFFC0 2BA4
CAN_AM21H – 0xFFC0 2BAC
CAN_AM22H – 0xFFC0 2BB4
CAN_AM23H – 0xFFC0 2BBC
CAN_AM24H – 0xFFC0 2BC4
CAN_AM25H – 0xFFC0 2BCC
CAN_AM26H – 0xFFC0 2BD4
CAN_AM27H – 0xFFC0 2BDC
CAN_AM28H – 0xFFC0 2BE4
CAN_AM29H – 0xFFC0 2BEC
CAN_AM30H – 0xFFC0 2BF4
CAN_AM31H – 0xFFC0 2BFC
Figura 21. Registru de acceptare a mastilor L
Registrii de masti si adresa corespondenta:
CAN_AM00L – 0xFFC0 2B00
CAN_AM01L – 0xFFC0 2B08
CAN_AM02L – 0xFFC0 2B10
CAN_AM03L – 0xFFC0 2B18
CAN_AM04L – 0xFFC0 2B20
CAN_AM05L – 0xFFC0 2B28
CAN_AM06L – 0xFFC0 2B30
CAN_AM07L – 0xFFC0 2B38
CAN_AM08L – 0xFFC0 2B40
CAN_AM09L – 0xFFC0 2B48
CAN_AM10L – 0xFFC0 2B50
CAN_AM11L – 0xFFC0 2B58
CAN_AM12L – 0xFFC0 2B60
CAN_AM13L – 0xFFC0 2B68
CAN_AM14L – 0xFFC0 2B70
CAN_AM15L – 0xFFC0 2B78
CAN_AM16L – 0xFFC0 2B80
CAN_AM17L – 0xFFC0 2B88
CAN_AM18L – 0xFFC0 2B90
CAN_AM19L – 0xFFC0 2B98
CAN_AM20L – 0xFFC0 2BA0
CAN_AM21L – 0xFFC0 2BA8
CAN_AM22L – 0xFFC0 2BB0
CAN_AM23L – 0xFFC0 2BB8
CAN_AM24L – 0xFFC0 2BC0
CAN_AM25L – 0xFFC0 2BC8
CAN_AM26L – 0xFFC0 2BD0
CAN_AM27L – 0xFFC0 2BD8
CAN_AM28L – 0xFFC0 2BE0
CAN_AM29L – 0xFFC0 2BE8
CAN_AM30L – 0xFFC0 2BF0
CAN_AM31L – 0xFFC0 2BF8
Figura 22. Registrul de Mailbox 7
Registrii si adresa corespondenta:
CAN_MB00_ID1 – 0xFFC0 2C1C
CAN_MB01_ID1 – 0xFFC0 2C3C
CAN_MB02_ID1- 0xFFC0 2C5C
CAN_MB03_ID1 – 0xFFC0 2C7C
CAN_MB04_ID1 – 0xFFC0 2C9C
CAN_MB05_ID1- 0xFFC0 2CBC
CAN_MB06_ID1 – 0xFFC0 2CDC
CAN_MB07_ID1 – 0xFFC0 2CFC
CAN_MB08_ID1- 0xFFC0 2D1C
CAN_MB09_ID1 – 0xFFC0 2D3C
CAN_MB10_ID1 – 0xFFC0 2D5C
CAN_MB11_ID1 – 0xFFC0 2D7C
CAN_MB12_ID1 – 0xFFC0 2D9C
CAN_MB13_ID1- 0xFFC0 2DBC
CAN_MB14_ID1 – 0xFFC0 2DDC
CAN_MB15_ID1- 0xFFC0 2DFC
CAN_MB16_ID1 – 0xFFC0 2E1C
CAN_MB17_ID1 – 0xFFC0 2E3C
CAN_MB18_ID1 – 0xFFC0 2E5C
CAN_MB19_ID1 – 0xFFC0 2E7C
CAN_MB20_ID1- 0xFFC0 2E9C
CAN_MB21_ID1- 0xFFC0 2EBC
CAN_MB22_ID1- 0xFFC0 2EDC
CAN_MB23_ID1 – 0xFFC0 2EFC
CAN_MB24_ID1- 0xFFC0 2F1C
CAN_MB25_ID1 – 0xFFC0 2F3C
CAN_MB26_ID1 – 0xFFC0 2F5C
CAN_MB27_ID1 – 0xFFC0 2F7C
CAN_MB28_ID1- 0xFFC0 2F9C
CAN_MB29_ID1 – 0xFFC0 2FBC
CAN_MB30_ID1 – 0xFFC0 2FDC
CAN_MB31_ID1- 0xFFC0 2FFC
Figura 23. Registrul de mailbox 7
CAN_MB00_ID0- 0xFFC0 2C18
CAN_MB01_ID0- 0xFFC0 2C38
CAN_MB02_ID0 – 0xFFC0 2C58
CAN_MB03_ID0 – 0xFFC0 2C78
CAN_MB04_ID0 – 0xFFC0 2C98
CAN_MB05_ID0 – 0xFFC0 2CB8
CAN_MB06_ID0- 0xFFC0 2CD8
CAN_MB07_ID0 – 0xFFC0 2CF8
CAN_MB08_ID0- 0xFFC0 2D18
CAN_MB09_ID0 – 0xFFC0 2D38
CAN_MB10_ID0 – 0xFFC0 2D58
CAN_MB11_ID0 – 0xFFC0 2D78
CAN_MB12_ID0 – 0xFFC0 2D98
CAN_MB13_ID0- 0xFFC0 2DB8
CAN_MB14_ID0 – 0xFFC0 2DD8
CAN_MB15_ID0- 0xFFC0 2DF8
CAN_MB16_ID – 0xFFC0 2E18
CAN_MB17_ID0- 0xFFC0 2E38
CAN_MB18_ID – 0xFFC0 2E58
CAN_MB19_ID0- 0xFFC0 2E78
CAN_MB20_ID0- 0xFFC0 2E98
CAN_MB21_ID0 – 0xFFC0 2EB8
CAN_MB22_ID0 – 0xFFC0 2ED8
CAN_MB23_ID0 – 0xFFC0 2EF8
CAN_MB24_ID0 – 0xFFC0 2F18
CAN_MB25_ID0- 0xFFC0 2F38
CAN_MB26_ID0 -0xFFC0 2F58
CAN_MB27_ID0 -0xFFC0 2F78
CAN_MB28_ID0- 0xFFC0 2F98
CAN_MB29_ID0 -0xFFC0 2FB8
CAN_MB30_ID0- 0xFFC0 2FD8
CAN_MB31_ID0- 0xFFC0 2FF8
Figura 24. Registrul de Mailbox 5
CAN_MB00_TIMESTAMP – 0xFFC0 2C14
CAN_MB01_TIMESTAMP – 0xFFC0 2C34
CAN_MB02_TIMESTAMP – 0xFFC0 2C54
CAN_MB03_TIMESTAMP – 0xFFC0 2C74
CAN_MB04_TIMESTAMP -0xFFC02C94
CAN_MB05_TIMESTAMP -0xFFC02CB4
CAN_MB06_TIMESTAMP -xFFC02CD4
CAN_MB07_TIMESTAMP-0xFFC0 2CF4
CAN_MB08_TIMESTAMP-0xFFC0 2D14
CAN_MB09_TIMESTAMP -0xFFC02D34
CAN_MB10_TIMESTAMP-0xFFC02D54
CAN_MB11_TIMESTAMP -0xFFC02D74
CAN_MB12_TIMESTAMP -0xFFC02D94
CAN_MB13_TIMESTAMP-0xFFC02DB4
CAN_MB14_TIMESTAMP-0xFFC02DD4
CAN_MB15_TIMESTAMP -0xFFC0 2DF4
CAN_MB16_TIMESTAMP -0xFFC0 2E14
CAN_MB17_TIMESTAMP -0xFFC0 2E34
CAN_MB18_TIMESTAMP -0xFFC0 2E54
CAN_MB19_TIMESTAMP -0xFFC0 2E74
CAN_MB20_TIMESTAMP -0xFFC0 2E94
CAN_MB21_TIMESTAMP -0xFFC02EB4
CAN_MB22_TIMESTAMP -0xFFC0 2ED4
CAN_MB23_TIMESTAMP-0xFFC0 2EF4
CAN_MB24_TIMESTAMP-0xFFC0 2F14
CAN_MB25_TIMESTAMP -0xFFC0 2F34
CAN_MB26_TIMESTAMP -0xFFC0 2F54
CAN_MB27_TIMESTAMP -0xFFC0 2F74
CAN_MB28_TIMESTAMP -0xFFC0 2F94
CAN_MB29_TIMESTAMP -0xFFC02FB4
CAN_MB30_TIMESTAMP -0xFFC02FD4
CAN_MB31_TIMESTAMP -0xFFC0 2FF4
Figura 25. Registru de mailbox 4
CAN_MB00_LENGTH-0xFFC0 2C10
CAN_MB01_LENGTH- 0xFFC0 2C30
CAN_MB02_LENGTH- 0xFFC0 2C50
CAN_MB03_LENGTH- 0xFFC0 2C70
CAN_MB04_LENGTH- 0xFFC0 2C90
CAN_MB05_LENGTH- 0xFFC0 2CB0
CAN_MB06_LENGTH- 0xFFC0 2CD0
CAN_MB07_LENGTH- 0xFFC0 2CF0
CAN_MB08_LENGTH-0xFFC0 2D10
CAN_MB09_LENGTH-0xFFC0 2D30
CAN_MB10_LENGTH- 0xFFC0 2D50
CAN_MB11_LENGTH- 0xFFC0 2D70
CAN_MB12_LENGTH- 0xFFC0 2D90
CAN_MB13_LENGTH- 0xFFC0 2DB0
CAN_MB14_LENGTH- 0xFFC0 2DD0
CAN_MB15_LENGTH- 0xFFC0 2DF0
CAN_MB16_LENGTH- 0xFFC0 2E10
CAN_MB17_LENGTH- 0xFFC0 2E30
CAN_MB18_LENGTH- 0xFFC0 2E50
CAN_MB19_LENGTH -0xFFC0 2E70
CAN_MB20_LENGTH- 0xFFC0 2E90
CAN_MB21_LENGTH- 0xFFC0 2EB0
CAN_MB22_LENGTH – 0xFFC0 2ED0
CAN_MB23_LENGTH- 0xFFC0 2EF0
CAN_MB24_LENGTH- 0xFFC0 2F10
CAN_MB25_LENGTH- 0xFFC0 2F30
CAN_MB26_LENGTH- 0xFFC0 2F50
CAN_MB27_LENGTH- 0xFFC0 2F70
CAN_MB28_LENGTH- 0xFFC0 2F90
CAN_MB29_LENGTH- 0xFFC0 2FB0
CAN_MB30_LENGTH- 0xFFC0 2FD0
CAN_MB31_LENGTH- 0xFFC0 2FF0
Figura 26. Registrulde Mailbox- 3
CAN_MB00_DATA3- 0xFFC0 2C0C
CAN_MB01_DATA3- 0xFFC0 2C2C
CAN_MB02_DATA3-0xFFC0 2C4C
CAN_MB03_DATA3-0xFFC0 2C6C
CAN_MB04_DATA3- 0xFFC0 2C8C
CAN_MB05_DATA3- 0xFFC0 2CAC
CAN_MB06_DATA3- 0xFFC0 2CCC
CAN_MB07_DATA3 -0xFFC0 2CEC
CAN_MB08_DATA3- 0xFFC0 2D0C
CAN_MB09_DATA3 -0xFFC0 2D2C
CAN_MB10_DATA3 -0xFFC0 2D4C
CAN_MB11_DATA – 0xFFC0 2D6C
CAN_MB12_DATA3-0xFFC0 2D8C
CAN_MB13_DATA3- 0xFFC0 2DAC
CAN_MB14_DATA3 -0xFFC0 2DCC
CAN_MB15_DATA3- 0xFFC0 2DEC
CAN_MB16_DATA3- 0xFFC0 2E0C
CAN_MB17_DATA3-0xFFC0 2E2C
CAN_MB18_DATA3- 0xFFC0 2E4C
CAN_MB19_DATA3 – 0xFFC0 2E6C
CAN_MB20_DATA3 – 0xFFC0 2E8C
CAN_MB21_DATA3- 0xFFC0 2EAC
CAN_MB22_DATA3-0xFFC0 2ECC
CAN_MB23_DATA3- 0xFFC0 2EEC
CAN_MB24_DATA3 -0xFFC0 2F0C
CAN_MB25_DATA3 -0xFFC0 2F2C
CAN_MB26_DATA3 -0xFFC0 2F4C
CAN_MB27_DATA3 -0xFFC0 2F6C
CAN_MB28_DATA3- 0xFFC0 2F8C
CAN_MB29_DATA3 -0xFFC0 2FAC
CAN_MB30_DATA3-0xFFC0 2FCC
CAN_MB31_DATA3-0xFFC0 2FEC
Figura 27. Registrul de Mailbox 2
CAN_MB00_DATA2- 0xFFC0 2C08
CAN_MB01_DATA2 -0xFFC0 2C28
CAN_MB02_DATA2 -0xFFC0 2C48
CAN_MB03_DATA2 -0xFFC0 2C68
CAN_MB04_DATA2 -0xFFC0 2C88
CAN_MB05_DATA2 -0xFFC0 2CA8
CAN_MB06_DATA2 – 0xFFC0 2CC8
CAN_MB07_DATA2 -0xFFC0 2CE8
CAN_MB08_DATA2- 0xFFC0 2D08
CAN_MB09_DATA2 -0xFFC0 2D28
CAN_MB10_DATA2 -0xFFC0 2D48
CAN_MB11_DATA2-0xFFC0 2D68
CAN_MB12_DATA2- 0xFFC0 2D88
CAN_MB13_DATA2 -0xFFC0 2DA8
CAN_MB14_DATA2 -0xFFC0 2DC8
CAN_MB15_DATA2 – 0xFFC0 2DE8
CAN_MB16_DATA2- 0xFFC0 2E08
CAN_MB17_DATA2- 0xFFC0 2E28
CAN_MB18_DATA2 – 0xFFC0 2E48
CAN_MB19_DATA2-0xFFC0 2E68
CAN_MB20_DATA2- 0xFFC0 2E88
CAN_MB21_DATA2-0xFFC0 2EA8
CAN_MB22_DATA2-0xFFC0 2EC8
CAN_MB23_DATA2-0xFFC0 2EE8
CAN_MB24_DATA2-0xFFC0 2F08
CAN_MB25_DATA2-0xFFC0 2F28
CAN_MB26_DATA2-0xFFC0 2F48
CAN_MB27_DATA2-0xFFC0 2F68
CAN_MB28_DATA2-0xFFC0 2F88
CAN_MB29_DATA2-0xFFC0 2FA8
CAN_MB30_DATA2-0xFFC0 2FC8
CAN_MB31_DATA2-0xFFC0 2FE8
Figura 28. Registrul de mailbox 1
CAN_MB00_DATA1- 0xFFC0 2C04
CAN_MB01_DATA1- 0xFFC0 2C24
CAN_MB02_DATA1 – 0xFFC0 2C44
CAN_MB03_DATA1 – 0xFFC0 2C64
CAN_MB04_DATA1 – 0xFFC0 2C84
CAN_MB05_DATA1 – 0xFFC0 2CA4
CAN_MB06_DATA1- 0xFFC0 2CC4
CAN_MB07_DATA1 – 0xFFC0 2CE4
CAN_MB08_DATA1 -0xFFC0 2D04
CAN_MB09_DATA1 -0xFFC0 2D24
CAN_MB10_DATA1 -0xFFC0 2D44
CAN_MB11_DATA1 -0xFFC0 2D64
CAN_MB12_DATA1 -0xFFC0 2D84
CAN_MB13_DATA1- 0xFFC0 2DA4
CAN_MB14_DATA1 -0xFFC0 2DC4
CAN_MB15_DATA1 -0xFFC0 2DE4
CAN_MB16_DATA1 -0xFFC0 2E04
CAN_MB17_DATA1 -0xFFC0 2E24
CAN_MB18_DATA1 -0xFFC0 2E44
CAN_MB19_DATA1 -0xFFC0 2E64
CAN_MB20_DATA1 -0xFFC0 2E84
CAN_MB21_DATA1 -0xFFC0 2EA4
CAN_MB22_DATA1- 0xFFC0 2EC4
CAN_MB23_DATA1 -0xFFC0 2EE4
CAN_MB24_DATA1 -0xFFC0 2F04
CAN_MB25_DATA1 -0xFFC0 2F24
CAN_MB26_DATA1 -0xFFC0 2F44
CAN_MB27_DATA1 -0xFFC0 2F64
CAN_MB28_DATA1 -0xFFC0 2F84
CAN_MB29_DATA1 -0xFFC0 2FA4
CAN_MB30_DATA1 -0xFFC0 2FC4
CAN_MB31_DATA1 -0xFFC0 2FE4
Figura 29. Registrul de mailbox 0
CAN_MB00_DATA0-0xFFC0 2C00
CAN_MB01_DATA0 – 0xFFC0 2C20
CAN_MB02_DATA0 – 0xFFC0 2C40
CAN_MB03_DATA0 – 0xFFC0 2C60
CAN_MB04_DATA0-0xFFC0 2C80
CAN_MB05_DATA0-0xFFC0 2CA0
CAN_MB06_DATA0-0xFFC0 2CC0
CAN_MB07_DATA0 – 0xFFC0 2CE0
CAN_MB08_DATA0-0xFFC0 2D00
CAN_MB09_DATA0-0xFFC0 2D20
CAN_MB10_DATA0 – 0xFFC0 2D40
CAN_MB11_DATA0 – 0xFFC0 2D60
CAN_MB12_DATA0 – 0xFFC0 2D80
CAN_MB13_DATA0 – 0xFFC0 2DA0
CAN_MB14_DATA0 – 0xFFC0 2DC0
CAN_MB15_DATA0 – 0xFFC0 2DE0
CAN_MB16_DATA0 – 0xFFC0 2E00
CAN_MB17_DATA0-0xFFC0 2E20
CAN_MB18_DATA0-0xFFC0 2E40
CAN_MB19_DATA0-0xFFC0 2E60
CAN_MB20_DATA0-0xFFC0 2E80
CAN_MB21_DATA0-0xFFC0 2EA0
CAN_MB22_DATA0-0xFFC0 2EC0
CAN_MB23_DATA0-0xFFC0 2EE0
CAN_MB24_DATA0-0xFFC0 2F00
CAN_MB25_DATA0-0xFFC0 2F20
CAN_MB26_DATA0 – 0xFFC0 2F40
CAN_MB27_DATA0-0xFFC0 2F60
CAN_MB28_DATA0 – 0xFFC0 2F80
CAN_MB29_DATA0-0xFFC0 2FA0
CAN_MB30_DATA0-0xFFC0 2FC0
CAN_MB31_DATA0-0xFFC0 2FE0
3.14.3 Registrii de control ai mailbox-urilor
Figura 30. Registrul de configurare Mailbox 1
Figura 31. Registrul de configurare Mailbox 2
Figura 32. Registrul de directie 1
Figura 33. Registrul de directive 2
Figura 34. Registrul de mesaj in asteptare 1
Figura 35. Registrul de mesaj in asteptare 2
Figura 36. Regisrul de mesaje pierdute 1
Figura 37.Regisrul de mesaje pierdute 2
Figura 38. Registrul de protectie a rescrierii 1
Figura 39. Registrul de protectie a rescrierii 2
Figura40. Registrul de setare a cereri de transmisie 1
Figura 41. Regsitrul de setare a cereri de transmisie 2
Figura 42. Regsitrul de resetare a cereri de transmisie 1
Figura 43. Regsitrul de resetare a cereri de transmisie 2
Figura 44. Registrul acceptarii anularii 1
Figura 45. Registrul acceptarii anularii 2
Figura 46. Registurl de acceptare a transmiterii
Figura 47. Registurl de acceptare a transmiterii
Figura 48. Registrul de dezactivare temporara a maibox-urilor
Figura 49. Registrul de maipulare a cadrelor de la distanta 1
Figura 50. Registrul de maipulare a cadrelor de la distanta 2
Figura 51. Registrul de masti de intrerupere pentru Mailbox-uri 1
Figura52. Registrul de masti de intrerupere pentru Mailbox-uri2
Figura 53. Registrul de flaguri de intrerupere a transmiterii pentru mailbox-uri 1
Figura 54. Registrul de flaguri de intrerupere a transmiterii pentru mailbox-uri 2
Figura 55. Registrul de flaguri de intrerupere a primirii mesajului pentru mailbox-uri 1
Figura 56. Registrul de flaguri de intrerupere a primirii mesajului pentru mailbox-uri 2
3.14.4 Registrii numaratori universali
Figura 57. Registrul de configurare a numaratorului
Figura 58. Registru numerator universal
Figura 59. Registrul de reincarcare a numaratorului
3.14.5 Registrii de eroare
Figura 60. Registrul de eroare a numaratorului
Figura 61. Registurl de stare a erorilor numaratorului
Figura 62s. Registrul de avertizari al numaratorului universal
IV. LwIP TCP/IP
Pachetul de lucru cu stiva TCP/IP lwIP in cadrul procesoarelor din familia Blackfin conta intr-o varianta disponibila gratuit a stivei lwIP. Stiva portat foloseste un dirver de interfata standardizat pentru a permite folosirea cu diferite controllere Ethernet. Toate driverele sunt implementate ca facand parte din modelul de drivere PTG si folosesc librariile serviciilor sistem(System Services Libraries)
Stiva ofera socket-ul standard BSD pentru aplicatii si a fost structurata pentru a o decupla de la sistemul de operare si interfata de reteta care este folosita. Stiva este conectata la mediul inconjurator din motive de standardizarea interfetei care sunt implementatea ca diferite librarii pentru fiecare mediu separat.
API-ul pentru nucleu abstractizeaza serviciile sistemulei de operare si facilitatile necesare stivei si este folosit pentru a simplifica trecerea aplicatiei intr-un sistem de operare diferit. Serviciile de baza includ servicii de sincronizare, servicii pentru tratarea intreruperilor, si servicii de reapelare bazate pe timp. Librariile kervdkbfxxx.dlb ofera o implementarea a interfete pentru a active stiva in vedere folosirii acesteia cu VDK pe diferite procesoare Blackfin. Stiva poate fi folosita cu alte nuclee furnzandui o impementare a interfetei api a nucleului necesar si a procesorului.
Stiva ofera suport pentru orice controller Ethernet care are un driver care suporta o interfata care este definite in fisierul EtherDeviceDriverDefinition.doc. Definitia interfeteio furnizeaza un set comun de functii care trebuie sa fie furnizat pentru fiecare implementare. Fiecare implementare poate deasemenea sa furnizeze un set extins de functionalitati. Stiva insasi va folosi doar functiile comune dar aplicatiile pot fi avantajate de setul de functii extins. Odata cu stiva sunt disponibile implementari ale interfetelor pentru diferite placi cum ar fi Blackfin537
Visual DSP++ 5.0 permite crearea unui proiect VDK cu suport TCP/IP auntoinclus si gata pentru folosire. Detaliile interfetei socket-urilor pot fi accesat deschizand index.html din directorul <install_path>\Blackfin\lwip\docs\socket_api
Configurarea stivei poate fi efectuata folosind un plugin Visual DSPcare va genera fisiere antet adaptate si o structura C initializata ce va fi folosita de stiva. Acesta permita modificare configurarii initiale a parametrilor. Alternativ stiva poate fi configurata complet modificand standardul antetului lwIP manual.
Este furnizat deasemena si suport pentru a permite urmarirea cadrelor trimise si receptionate de catre stiva fie direct pe procesorul Blackfin sau pe aplicatia calculatorului gazda folosind o conectie TCP/IP sau Background Telemetry Channel.
Stiva suporta urmatoarele protocoale:
TCP Transport Control Protocol
UDP User Datagram Protocol
IP Internet Protocol
ICMP Internet Control Message Protocol
ARP Address Resolution Protocol
DHCP Dynamic Host Configuration Protocol (DHCP client supporting BOOTP)
DSN Domain Name System
Una dintre principalele scopuri la portarea stivei a fost minimalizarea schimbarilor necesare sursei actualei stive lwIP pentru a activa noutati stivei ce pot fi integrate mai usor. Principalele schimbari care au fost facut sunt mentionat mai jos:
Alocarea memoriei de baza a fost schimbata de la tablouri statice la alocare dinamica in momentul in care stiva este initializata
Procedure de detectia erorilor pe diferite fire de executie pentru anumite socket-uri
Adaugarea unuor campuri anumitor structuri pentru a asigura corectitudinea
Toate schimbarile facute stive sunt sub controlul procesoarelor ADSPBLACKFIN
V. Aplicatie: Tranferul unui mesaj folosind magistrala CAN
5.1 Scopul aplicației
Obiectivul principal al aplicației este implentarea unor programe soft astfel încât să se facă posibilă si vizibilă transmiterea unui mesaj între două plăci ADSP-Blackfin 537 folosind magitrala CAN. Demostrația va fi efectuată pe doua plăci dar aceasta poate fi extinsă la un număr foarte mare de controller pentru că așa cum am explicat anterior o rețea CAN este o rețea peer-to-peer. Faptul ca o rețea este p2p ne oferă flexibilitatea de a adăuga oricând un alt nod sau de a scoate oricând un nod din rețea fara a afecta funcționalitățile acesteia.
5.2 Proiectarea aplicației
Având în vedere că dorim să demonstrăm o transmisie pe magistrala CAN avem nevoie de următoarele:
Două placi ADSP-BF537
1 cablu telefonic cu mufe RJ11 crossover
Două calculatoare pentru a putea încărca programele soft pe plăci
2 cabluri cu mufă USB pentru a încarca repectivele programe
Pentru a putea demostra aceast concept consider ca este nevoie de două programe diferite care vor fi incarcate pe cele două plăci. Acest lucru este necesar doarece în cadrul unei transmisii pe intr-o rețea un dipozitiv trebuie sa trimita si celalalt sa primească.
În continuare se va explica implementarea a doua programe CAN_RX si CAN_TX care au rolul de a face managemantul unui pachet CAN primit pe magistrala respect ce se dorește sa fie transmis.
CAN_TX este un program care se ocupa efectiv de transmiterea unui pachet de tip CAN pe magistrala catre un alt controller CAN. Explicat rudimentar la apăsarea unui buton existent pe placa BF537 programul va inițialza o transmisie CAN si va trimite un mesaj cu codul butonului apasat mai departe. Dupa ce transmisia e fost efectuată acesta așteaptă un pachet înapoi care să conțină un ACK(faptul că pachetul a fost recepționat cu success) si va aprinde ledul corespunzător butonului apăsat. Dacă nu se primește pachetul cu ACK trasmisia este reluată.
Pentru a putea să rulam acest program trebuie sa ne asiguram ca switch-urile 2.4 si 5.1-4 sunt setate pe poziția ”on”. Switch-ul 2 este folosit pentru a putea lucra cu controller-ul CAN de pe placă, iar switch-ul 5 este folosit pentru activarea butoanelor.
Programul conține patru fișiere sursă ce vor fi prezentate în continuare:
Fișierul sursă principal (main.c) are rolul de a efectua procesele de inițializare și de a seta placa sa astepte o întrerupere. Pentru inițializarea tuturor evenimentelor necesare se executa urmatoarele funcții:
Init_PLL(); – folosita pentru generarea unui frecvente stabile.În cadrul acesteia se seteaza CCLK si SCLK
Init_Port(); – funcție de inițializare a porturilor
Init_Interrupts(); – funcție de inițializare a întreruperilor
Init_CAN_Timing(); – funcție care seteaza Clock-ul de lucru al CAN
Init_CAN_Mailboxes(); – funcție de inițializare a mailbox-urilir
CAN_Setup_Interrupts(); – funcție pentru stabilirea intreruperilor
CAN_Enable(); – functie pentru activarea dispozitivului CAN
În continuare programul intră într-o buclă infinită pentru a astepta o întrerupere fizică (de la butoane). Pentru aceasta în libaj soft s-a implementat un ciclu infinit while(1)
Fișierul sursă Initialization.c este fisierul care conține codul sursa efectiv al funcțiilor de inițializare. Funcțiile specifice și cele mai importante sunt:
Init_CAN_Timing() este funcția în care se seteaza regiștrii CAN_TIMING și CAN_CLOCK cu valorile: *pCAN_TIMING = 0x0334 respectiv *pCAN_CLOCK = 22;
Init_CAN_Mailboxes() este funcția care inițializează modul de lucru cu mailbox-urile. În aceasta se setează ID-ul mesajlului folosit pentru primire sau pentru trimitere și se scoate masca. În cazul nostru ID primire este 0x007 iar pentru trimitere este 0x411.
Init_interupts() este funcția care inițializează întreruperile. Detaliat aceasta asignează fiecărei întreruperi un canal( un nivel de prioritate) și memorează adresele de inceput ale subrutinei de tratare a întreruperilor. În cazul de față întreruperea de primire a unui pachet este pe nivelul 7 iar intrerupere pentru trimiterea unui pachet este pe nivelul 8
Fisierul sursă CAN_Functions.c conține două funcții importante: una pentru activarea întreruperilor și una pentru activarea controllerului CAN. În funcția de activarea a controller-ului CAN se setează ca mailbox-ul 7 să fie pentru transmitere și maibox-ul 24 pentru primire.
Fisierul sursă Interupts.c conține codul de tratare al întreruperilor. În cazul întreruperii de trimitere se verifica ce mailbox dorește să transmita se transmite codul din partea de date a acestuia. În cadrul întreruperii de primire acesta după ce a primit mesajul ACK de la aprinde led-ul corespunzător butonului apăsat.
CAN_RX este un program care tratează partea de primire pe magistrala CAN pe o placa Blackfin537. Odată încărcat pe placă programul face ca ledurile acesteia să se aprinda unul câte unul de la stanga la drepta (această aprindere o vom denumi in continuare shiftare de la stanga la dreapta). Aceasta este starea de wait a programului el asteptând o întrerupere. Întreruperea are loc când primește un pachet de la un alt controller CAN în mailbox-ul 24. În acel moment în funcție de datele din pachet se execută o schimbare de luminozitate a ledurilor: fie se sting toate, fie se aprind toate, fie shiftarea se inverseaza sau fie toate becurile se sting și se aprind în același timp. Aceste lucruri sunt facute in functi de codul butonului care s-a apasat pe placa unde este incarcat programul CAN_TX.
Pentru initializare programul folosesc aceleasi functii ca si CAN_TX. In schimb in acesta apar urmatoarele diferente:
In fisierul sursa main.c dupa inițializarea întreruperilor, porturilor, și controllerului CAN se executa un while(1)- infinit care așteaptă o întrerupere. În cadrul acestuia există un alt while care se executa cât timp nu a aparut altă întrerupre. Cel de-al doilea while face efectiv afișarea pe leduri în funcție de anumite variabile presetate în întreruperea de primire: blink, off, change,display.
Trebuie menționat că în fisierul sursă initialization.c de data aceasta ID-ul mesajelor acceptate de mailbox-ul 24(cel de primire) este cel al mesajelor din mailbox-ul 7 din CAN_TX si ID-ul mesajelor trimise de mailbox-ul 7 este cel al mesajelor acceptate de mailbox-ul 24 din CAN_TX.
O altă diferență apare în întrerupere de primire. Când se semnalizează ca au fost puse date in mailbox-ul 24 in zona Data_3 se iau datele de acolo și în funcție de cod(codul butonului apăsat pe placa CAN_TX) se seteaza variabilele dupa cum urmeaza:
0x0400(butonul 4) – off=1, blink=0
0x0300(butonul 3) – blink=0,off=0,scroll=1 iar change egal cu 0 sau 1 pentru schimbare de direcție
0x0200(butonul 2) – la fel ca la butonul 3 doar ca scroll=0
0x0100(butonul 1) – off=0,blink=1, display=0fc0(toate ledurile aprinse)
5.3 Rularea și testarea aplicatiei
Pentru a putea rula aplicația avem nevoie după cum am menționat anterior de doua placi Blackfin Ez Kit Lite 537, Visual DSP++ 5.0, 2 calculatoare si un cablu telefonic cu mufe RJ11 crossover.
Încărcarea pe placi și apoi testarea se fac după cum urmează:
Se conectează cele două plăci la cele două calculatoare prin intermediul cablului USB pentru a putea încărca aplicația în memoria plăcilor
Pe cele două calculatoare se pornește VisualDSP++ 5.0 Evironement. În acesta din meniul File se alege opțiunea Open și se deschid cele două proiecte CAN_TX și CAN_RX fiecare pe câte un calculator
Cele două placi se conectează pe magistrala CAN folosind cablul crossover
De pe fiecare calculator din VisualDSP++ se încarcă programele pe placă. Pentru aceasta trebuie să apasăm butonul Build.
După ce programele au fost încărcate pe placa pe care a fost încarcat CAN_TX observăm că toate ledurile s-au stins iar pe placa pe care a fost încărcat CAN_RX observăm o shiftare de la stanga la dreapta a ledurilor.
Pentru a testa comunicația se apasă un buton de pe placa pe care e încarcat CAN_TX. În urma apăsării unui buton vom observa o schimbare în modul de luminare al ledurilor de pe placa pe care este încărcat CAN_RX iar pe placa cealaltă se va aprinde ledul corespunzător butonului apăsat, ceea ce ne spune că placa a primit ACK
Trebuie mentionat înca o dată că pentru a putea sa rulăm aceste programe trebuie să setăm switch-ul 2.4 pe ”on” (Enable CAN receive) și switch-ul 5.1-4 pe ”on” (enable push buttons).
VI. Aplicație: Transferului unui pachet pe Ethernet
6.1 Scopul Aplicației
Prin acestă aplicație se testează folosirea unui pachet de programe soft oferite de firma Analog Devices pentru a trimite pachete de la o placă DSP Blackfin537 către un calculator folosind interfața Ethernet. Aplicația în sine necesita încarcarea unui program pe FileServerStdioBF537 care se va conecta la un calculator folosind IP-ul acestuia, configurat în prealabil, și va trimite apoi un fișier text care conține ”test” de 1000 de ori folosind socket-ul 20000. Pentru a putea trimite este necesar să deschidem aplicația concepută de Analog Devices FileServer.exe. În aceasta înafară de faptul că vom observa momentul în care s-a făcut conectarea efectivă și transmiterea fișierului, vom putea observa în consolă și textul afișat de 1000 de ori.
6.2 Descrierea aplicației
Pentru a putea rula această aplicație avem nevoie de urmatoarele:
Un calculator
Un cablu de rețea UTP cu mufe RJ45
O placă Blackfin EZ KIT LITE 537
Proiectul FileServerStdioBF537 este dezvoltat folosind VDK. Acesta lucrează în întreruperi de tip DMA pentru a face transferul pe interfața Ethernet. Principala funcționalitate a acestuia este de a deschide o conecție nouă către un IP host setat la începutul programului, a redirecționa stdout către acesta, de a crea un nou fișier pe harddisk-ul hostului, a scrie în acesta și a scrie în consola programului FileServer.exe. În linii mari este simularea unei aplicații client server.
Proiectul FileServerStdioBF537 conține urmatoarele fișiere:
lwip_sysboot_threadtype.c – acesta este fișierul sursă folosit de firul de execuție de bootare. În cadrul acestuia se fac toate operațiile principale cum ar fi deschiderea unui setarea adresei IP a calculatorului host, deschiderea unei noi conecții, redirecționarea stdout, scriere fișierului la adresa de IP setatș, scriere textului în consolă, modul de creare a noilor fire de execuție, stabilirea priorităților acestora și a comunicației dintre ele. Pentru deschiderea unei noi conecții se folosește funcția system_init() iar pentru redirecționarea către host se folosește FS_STDIO_init(5, FILE_ SERVER _HOST _ADDRESS,20000) implementată în FileServerStudio.c
.Fișierul FileServerStudio.c este cel în care sunt implementate funcțiile necesare pentru redirecționarea std la adresa IP a hostului:
Redirect() – redirecționează unul dintre stoud, stdin, stderr și redeschide ”con:” un nume de fișier specific FileServer
Make-connection() – Crează o conecție la FileServer și cere ca fișierul să fie deschis
FS_STDIO_init –inițialezează funcția pentru acest dispozitiv STDIO, acceptă un număr unic de aplicație folosit pentru instalare, o intrare în tabela sa de rulare, Apoi face driver cel implicit și redirecționează fișierele. Un alt argument specifică adresa IP și portul calculatorului cu care va comunica și adresa IP a dispozitivului de pe care se trimite. Argumentul PortBase este unul dintre cele 16 porturi de adresă pe care acest driver îl poate folosi pentru conecția sa
FS_open – este apelată când aplicația dorește să deschidă un fișier, alocă o intrare în tablela de socket-uri și obține un socket de conectare către calculatorul unde rulează FileServer și trimite o cerere ”open”. La final întoarce fid-ul intrării în tabela de socket-uri care este folosit de funcțiile FS_write si FS_read
FS_write – scrie pe un anumit socket
FS_read – citește de la un anumit socket
Fișierul ExceptionHandler- BF537.asm este fișierul care conține subrutina de tratare a întreruperii necesară pentru transmitere pe interfața Ethernet
6.3 Rularea și testarea aplicației
Pentru a putea rula aplicația se execută următorii pași:
Se conectează placa Blackfin la calculator folsind interfața USB pentru a încarca programul
Se deschide VisualDSP++ 5.0, se setează un IP pentru placa DSP după cum urmează
Se selectează din meniul Setting opțiunea Preferences. În cadrul acestei navigăm până la plugins de unde selectăm TCP/IP configuration Manager. Apoi din meniu Settings se selectează TCP/IP Configuration. În network 0 se poate memora IP-ul plăcii Blackfin așa cum este prezentat în figura urmatoare.
După configurarea rețelei proprii în fișierul sursă lwip_sysboot_ thread type.c se setează IP-ul calculatorului către care dorim să transmitem.
Se încarcă programul pe placă folosind butonul Build din VisualDSP
Înainte de a se face conectarea se deschide pe calculatorul pe care dorim să primim program FileServer.exe din VisualDSP/…/Blackfin537/ Examples /Lan /Host /Fileserver.
Se crează un director ”tmp” în care va fi creat fișierul de test automat
După încărcarea aplicației pe placă se observă cum se efectuează conectarea și ca rezultat vom avea în consola FileServer cuvântul Heeellllllo de 1000 de ori. Dacă deschidem directorul ”tmp” creat vom oberva fișierul txt adăugat automat în care găsim acelasi text de 1000 de ori. În concluzie trasnmisia a fost reușită.
VII. Aplicație: Transportul într-o rețea hirbidă CAN->Ethernet
7.1 Scopul aplicației
Prin implementarea acestei aplicații se dorește realizarea transmiterii unui pachet într-o rețea mixtă CAN->Ethernet. Cu alte cuvinte se va realiza o comunicație CAN între două plăci Backfin537 iar una dintre acestea va transmite mai departe un mesaj primar pe magistrala CAN către un calculator folosind interfața Ethernet.
Presupunem că avem un angrenaj foarte mare folosind într-o uzină care conține în implementarea sa o rețea CAN. Acesta este vitală pentru funcționarea corespunzatoare a mecanismului. Folosind modelul propus anterior putem oricând să monitorizăm această rețea conectându-ne cu un simplu laptop ca la o rețea normală, poate chiar fară a ști cum funcționează rețeaua CAN.
7.2 Proiectarea aplicației
Pentru a putea realiza cerințele acestei aplicații avem nevoie de :
Două plăci Blackfin EZ KIT LITE 537
Două sau trei calculatoare
Un cablu telefonic cu mufe RJ11 corssover pentru conectarea controller-elor CAN
Un calbu UTP cu mufe RJ45 pentru a reliza rețeaua între placă și un calculator
Pentru a demonstra funcționalitatea acestei rețele hibrite am gândit un scenariu combinând cele două apicații prezentate anterior.
Observand fluxul , informația pleacă de la o placă, ajunge la cealaltă placă de unde este trimis în continuare către un calculator.
Pentru a face comunicația dintre cele două placi pe magistrala CAN am prezentat anterior o aplicație care folosea două programe ce se încărcau pe două placi separat.Program încărcat pentru transmitere (CAN_TX) transmitea codul unui buton apăsat pe placa pe care era încărcat către cealalta placă. În momentul în care a doua placă primea un pachet CAN datorită programului încărcat pe ea(CAN_RX) aceasta intră în întrerupere verifică ce date a primit în mailbox-ul setat pentru primire(24) iar în funcție de codul gasit se efectua o schimbare în modul de luminare a ledurilor de pe această placă. Se trimitea apoi către prima placă un ACK pentru a semnala faptul că pachetul a fost primit cu succes
Pentru a face comunicația dintre o placa BF537 și un calculator am prezentat anterior o aplicație care folosea un program FileServerStdio-bf537 care era încărcat pe placă și un FileServer.exe care era rulat pe host. Programul încărcat pe placă redirecționa stdout, și stdin către programul rulat pe host pe portul 20000 și scria un fișier și un text în consola FileServer.
Având în minte cele două aplicații ne dăm seama că pentru a efectua transmisia noastră putem folosi în continuare programele efectuate anterior cu anumite modificări.
CAN_TX – acest program poate fi folosit în continuare și în aplicația curentă fără a fi modificată deoarece se ocupă doar cu transmiterea unui cod în momentul în care este declanșată o întrerupere de la un buton
CAN_RX – acest program nu poate fi folosit în continuare pentru că nu face decât să primească date și să modifice afișajul ledurilor. Programul nu este totuși inutil doarece se pot folosi din el funcțiile de initializare a dispozitivului CAN și conținutul întreruperii de primire.
FileServerStdio-BF537 – programul nu poate fi folosit în continuare pentru că face doar o simplă transmisie către un calculator folosind IP-ul acestuia. Totuși nici acest program nu este inutil pentru că pe se ocupă de inițializarea unei conecții TCP/IP și de trimitere unor date. Acesta poate fi considerat un schelet pentru o nouă aplicație care ar trebui să primească date de la controller-ul CAN și să le trimită mai departe folosind TCP/IP
FileServer.exe – programul poate fi folosit în continuare deoarece permite conectarea, redirecționarea stdou, și stdin a unei plăci bf537 la un calculator pe baza unui IP și a unui Socket. Programul este ideal pentru demonstrarea succesului transmiterii deorece interfața permite vizualizarea imediat și este foarte simplă
Privind mai sus observăm că în momentul de față avem doar ”capetele” unei transmisii de date: partea de trimitere și partea de primire. Tot ce ramâne de efectuat este partea de mijloc care se ocupă recepția și retransmitere datelor.
Pentru a rezolva această problemă luând în considereare cele spuse mai sus am realizat un program care îmbina functionalitățiile CAN_RX și FileServerStdio-BF537. Programul se numește CR&FS(CAN Recive and File Server).
Pentru implementarea acestui program există trei metode:
Inserarea codului din CAN_RX necesar în zone optime de cod ale FileServerStdio-BF537 pentru a atinge funcționalitatea dorită
Crearea unui nou fire de execuție în VDK, adăugarea unui nou dispozitiv și întreruperile acestuia. Pentru a transmite apoi informația rezultat primit în firul de execuție CAN este transmis către firul de execuție care se ocupă de transmisie pe TCP/IP cu ajutorul unei variabile externe
Îmbinarea zonei de inițializare a controlului odată cu inițializarea conecției TCP/IP și realizarea unei noi întreruperi specifice CAN în VDK
Varianta aleasă pentru implementare este prima. În continuare voi explica cum folosind scheletul aplicație FileServerStdio-BF537 vom adauga secțiuni de cod din CAN_RX pentru a realiza funcționalitatea necesară.
Sursa firului de execuție de start lwip_sysboot_threadtype.c va fi modificată pentru a avea următoarele funcționalități în această ordine:
Inițializarea întreruperilor CAN
Inițializarea CAN_TIMING
Inițializarea întreruperilor
Inițializarea mailbox-rulor CAN
Setarea întreruperilor CAN
Activarea dispozitivului CAN
Inițializarea conecției
Inițializarea stivei
Redirecționarea stdout și stdin la IP-ul hostului
While(1) ciclu infinit pentru a vedea dacă apar date în mailbox-ul 24
Verificăm continuu dacă apar date în mailbox
În momentul apariției datelor se setează asemeni întreruperii CAN variabilele blink,off,change, și display pentru a avea în continuare schimbarea de lumini pe placa intermediară transmisiei. Datele primite se memorează într-o variabilă care este scrisă apoi în fișier și pe consola FileServer de pe calculatorul host.
7.3 Rularea și testarea aplicației
Pentru a testa aplicația se conectează cele două plăci la două calculatoare prin intermediul interfeței USB. Pe fiecare se încarcă programele CAN_TX respectiv CR&FS folosind VisualDSP++. Placa pe care s-a încarcat CR&FS se conectează folosind interfața Ehernet la un al treilea calculator. După ce programele au fost încărcate pe placi se deschide FileServer pe al treilea calculator pentru a permite redirecționarea stdout și stdin, și se crează directorul c:\proiect licență. După ce programele sunt încărcate și rulează vom observa că în urma apăsării unui buton pe placă unde este încărcat CAN_TX , ledurile iși vor schimba tipul luminării pe placă unde este încărcat CR&FS și în același timp pe calculator se va crea un fișier în directorul nou crest numit test.txt. La deschidere fișierului se poate vedea un text de tipul: ”cod_buton” – A fost apăsat butonul x, semna că transmisia a funcționat, și codul transmis de prima placă a ajuns pe calculator.
VIII. Concluzii
Având in vedere evoluția tehnologiei putem observa o creștere exponențială a nevoii de aplicații real-time.
In urma studierii conceptelor prezentate anterior și anume protocolul CAN(Controller Area Network) și stiva TCP/IP folosind ADSP Blackfin 537 EZ KIT LITE am ajuns la concluzia că protocolul CAN a fost optimizat pentru sisteme care au nevoie să transmită sau să recepționeze foarte rapid cantități mici de date,comparativ cu Ethernet sau USB care sunt folosite pentru transportul unuor pachete mari de date.
Din moment ce protocolul este bazat pe mesaje nu pe adrese, toate dispozitivele conectate la magistrală primesc orice mesaj, necontând dacă datele din acesta sunt relevante sau nu pentru ele. Aceasta permite magistralei să opereze cu mesaje punct-la-punct, sau multicast fără a fi nevoie să trimită diferite tipuri de mesaje.
Un alt punct important este faptul că rețeaua CAN este o rețea peer-to-peer. Datorită acestei arhitecturi rețeaua este una fiabilă. În cazul în care nu se defectează acesta este ”scos” din magistrala fără a afecta funcționarea celorlalte noduri.
In plus,CAN oferă o soluție ieftină și durabilă pentru o rețea de comunicație între mai multe dispozitive CAN. Un avantaj al acestui lucru este că unitățile de control pot avea o singură interfață CAN în loc de intrări pentru fiecare dispozitiv analogic sau digital din sistem. Acest lucru micșorează costurile și greutatea produsului rezultat. Fiecare dispozitiv din rețea are un controller CAN. Toate dispozitivele din rețea văd toate mesajele transmise, putând astfel să decidă dacă mesajul este ralevant sau trebuie filtrat. În plus fiecare mesaj are o prioritate, și deci dacă două noduri încearcă să trimită un mesaj simultan, cel cu prioritate maximă are dreptul de transmitere.
Din punct de vedere al securitații, protocolul CAN este unul de nivel jos, si nu are integrată nici o caracteristică de securitate. Acest lucru este așteptat să fie dezvoltat in cadrul aplicațiilor ca mecanisme de securitate, cum ar fi de exmplu cel de autentificare al dispozitivului. Din această cauză dacă un atacator doreste sa introduca mesaje malițioase pe magistrală îi va fi foarte ușor.
Deși protocolul CAN a fost inventat de către Bosch la cererea companiei Mercedes și implicit primele utilizări ale acestuia au fost în cadrul autoturismelor, conceptul a câștigat rapid teren, fiind asimilat rapid în domeniul agricol, în automatizarea industriei si ingineria aviatică și altele, dovedind astfel calitățile noului protocol .
Privind comunicațiile Ethernet, chiar dacă acesta există de 38 de ani, abia acum cațiva ani au inceput sa câștige teren si totuși au inceput sa fie subclasate de comunicațiile wireless.
Ethernet oferă utilizatorilor săi un grad înalt de flexibilitate alocând banda exactă pentru cât trebuie să fie livrat. Acestea sunt extrem de scalabile suportând creșteri de lătime de bandă necesare in situați critice.
Comparând cele două tipuri de comunicații folosite CAN si Ethernet am ajuns să concluzionez că protocolul CAN este excelent utilizabil în aplicați care necesită promptitudine maximă și transfer mic de date (asemenea unor alarme), iar Ethernet este folosit pentru transportul unei cantități mari de date pe care nu dorim să le livrăm instant dar care totuși dorim să fie livrate cu succes si integral.
Cu toate că aplicația care implementează protocolul CAN a fost testată doar pe două placi BF537 iar efectul rezultat a fost aprinderea unor anumite leduri pot să spun că viteza de reacție a elementelor componente a fost foarte mare drept pentru care acesta poate fi folosit cu succes in toate aplicțiile de automatizare deja implementat sau ce urmează sa fie implementate.
Din punctul meu de vedere un viitor pentru magistrala CAN este hibridizarea acesteia cu o retea de senzori si aplicarea produsului rezultat in echipamente medicale cum ar fi echipamente pentru operare automatizata.
Avand in vedere aplicatia hibrida realizata in acest proiect tin sa mentionez ca aceasta isi poate gasi aplicabilitatea in monitorizarea si controlul unor dispozitive CAN dintr-un angrenaj industrial mare, cum ar fi un reactor nuclear doar cu o simpla conectare a unui calculator folosind placa de retea.
In plus pe langa aceasta aplicatie conectand un calculator la o magistrala CAN putem face chiar atacuri asupra acesteia.
Cea mai importanta idee care este prezentata in aceasta lucrare este faptul ca cu toate ca cele doua tipuri de comunicatii difera foarte mult, una referinduse la comunicatii de mare viteza si cantitati mici de date iar cealalata la cantitati mari de date indiferent de viteza, imbinarea celor doua poate duce la un nou model de comunicare in viitor.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Protocoale de Comunicatie Si Programe Pentru Conectarea In Retea a Sistemelor Specialzate cu Microprocesoare Dsp (ID: 148908)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
