Universitatea Politehnica din Timioara Facultatea de Electronic i

































![Program de identificare a vitezei de comunicaţie pe CAN baud rate = Fosc/[BRP*(1+TSEG 2)] Program de identificare a vitezei de comunicaţie pe CAN baud rate = Fosc/[BRP*(1+TSEG 2)]](https://slidetodoc.com/presentation_image_h/0db696a3d5486c233cbbcc4e863da440/image-34.jpg)

- Slides: 35
Universitatea “Politehnica” din Timişoara Facultatea de Electronică şi Comunicaţii Departamentul Electronică Aplicată Platforma de dezvoltare TINI- nod într-o reţea CAN Conducător ştinţific: Conf. Dr. Ing. Dorina Isar Student: Cărbunar Ovidiu
Platforma de dezvoltare TINI Este formată din placa de bază şi SIMM.
Platforma de dezvoltare TINI
Microcontrolerul DS 80 C 400
Microcontrolerul DS 80 C 400 Port 5 Control Register (P 5 CNT) SFR A 2 h -- CAN 0 BA C 0_I/O Bit 3 CAN 0 BA -- -- C 0_I/O P 5 CNT. 2 P 5 CNT. 1 CAN 0 I/O enable. CAN 0 bus active status. P 5 CNT. 0
Microcontrolerul DS 80 C 400 Memoria de date internă - 9472 octeţi de memorie SRAM internă din care 256 octeţi este pentru memoria controlerului CAN.
Microcontrolerul DS 80 C 400
Microcontrolerul DS 80 C 400
Caracteristici - CAN n n n n n Bus serial asincron APLICAŢII DE CONTROL IN TIMP REAL Viteza: 1 Mbps Detecţie excelentă a erorilor Identificatorul mesajului specifică atât conţinutul cât şi prioritatea mesajului Deconectare automată a nodurilor defecte Retransmisie automată în urma detectării unei erori Funcţionare în regim de consum redus Excelent raport preţ-performanţă Se pot conecta/deconecta noduri în timp ce reţeaua locală este în funcţiune
Frame-uri CAN Frame = structura unei transmisii de date Frame CAN Mesajul CAN Există 4 tipuri de formate pentru frame-uri: - Data Frame, - Remote Frame, - Error Frame, - Overload Frame
Data Frame Nr. biti/camp 1 11+1 1+1+4 0. . . 64 15+1 ID + RTR (D) SOF(D) 1+1 7 ACK + Delimitator ACK (R) Secv. CRC + Delimitator CRC (R) 7 x. R
Transmiterea şi primirea mesajelor - datele CAN sunt transmise şi recepţionate prin cele 15 centre de mesaje.
Transmiterea şi primirea mesajelor - biţii TXS şi RXS din registrul de stare indică dacă s-au trimis sau recepţionat date. SFR A 4 h BSS EC 96 /128 WKS RXS TXS ER 2 ER 1 ER 0
Transmiterea şi primirea mesajelor - 4 registre pentru verificarea recepţiei/transmisiei datelor. SFR 96 h SFR 97 h C 0 RMS 0. 7 C 0 RMS 1. 7 C 0 RMS 0. 6 C 0 RMS 0. 5 C 0 RMS 0. 4 C 0 RMS 0. 3 C 0 RMS 0. 2 C 0 RMS 0. 1 C 0 RMS 0. 0 C 0 RMS 1. 6 C 0 RMS 1. 5 C 0 RMS 1. 4 C 0 RMS 1. 3 C 0 RMS 1. 2 C 0 RMS 1. 1 C 0 RMS 1. 0
Transmiterea şi primirea mesajelor - 4 registre pentru verificarea recepţiei/transmisiei datelor. SFR 9 Eh SFR 9 Fh C 0 TMA 0. 7 --- C 0 TMA 0. 6 C 0 TMA 1. 6 C 0 TMA 0. 5 C 0 TMA 1. 5 C 0 TMA 0. 4 C 0 TMA 1. 4 C 0 TMA 0. 3 C 0 TMA 1. 3 C 0 TMA 0. 2 C 0 TMA 1. 2 C 0 TMA 0. 1 C 0 TMA 1. 1 C 0 TMA 0. 0 C 0 TMA 1. 0
Transmiterea şi primirea mesajelor - fiecare centru de mesaje conţine un registru format (C 0 My. F) DTBYC 3 DTBYC 2 DTBYC 1 DTBYC 0 T/R EX/ST MEME MDME DTBYC 3 -0 (Data byte count) - indică numărul de biţi din câmpul de date al mesajului.
Totul despre erori n n n Erori de bit transmis Erori datorate inserării/neinserării de biţi suplimentari (de bit stuffing) Erori de verificare CRC Erori de format Erori datorate bitului de Acknowledge
Totul despre erori Registrul de stare CAN 0 (C 0 S) SFR A 4 h BSS EC 96 /128 WKS RXS TXS ER 0 Prioritate ER 2 ER 1 ER 0 ER 2 ER 1 Eroare 0 0 0 N/A 0 0 1 2 Eroare de bit stuffing. 0 1 0 5 Eroare de format. 0 1 1 4 Eroare de acknowledge. 1 0 0 6 (mică) Eroare de bit 1. 1 0 1 1 (mare) Eroare de bit 0. 1 1 0 3 1 1 1 N/A Nici o eroare în ultimul frame. Eroare de CRC. Nici o eroare de la ultima citire a C 0 S.
Totul despre erori - fiecare nod CAN are numărătoare interne de erori. - în funcţie de valoarea conţinută de aceste numărătoare un nod CAN poate fi in una din următoarele stări:
Totul despre erori -modulul CAN conţine 2 registre speciale (C 0 RE si C 0 TE) care permit monitorizarea şi modificarea numărătoarelor de erori. SFR A 7 h C 0 RE. 7 C 0 RE. 6 C 0 RE. 5 C 0 RE. 4 C 0 RE. 3 C 0 RE. 2 C 0 RE. 1 C 0 RE. 0 SFR A 6 h C 0 TE. 7 C 0 TE. 6 C 0 TE. 5 C 0 TE. 4 C 0 TE. 3 C 0 TE. 2 C 0 TE. 1 C 0 TE. 0
Sicronizarea pe bus-ul CAN - sincronizare hard pe SOF - pentru a asigura o eşantionare corectă, nodul CAN trebuie să se resincronizeze pe tot parcursul Frame-ului.
Construcţia unui bit - durata unui bit pe bus-ul CAN are 4 segmente bine definite si este un multiplu de tactul u. Controler-ului. -“unitatea de masura” pentru costrucţia bitului pe CAN este Time Quanta, TQ. - registrul de temporizare 0 pe bus-ul CAN (C 0 BT 0) - BPR 7 -BPR 0 determină numărul de tacte asociate cu time quanta. SJW 1 SJW 0 BPR 5 BPR 4 BPR 3 BPR 2 BPR 1 BPR 0 BPR 7, BPR 6 BPR 5 BPR 4 BPR 3 BPR 2 BPR 1 BPR 0 BPRV 00 0 0 0 1 00 0 0 1 2 -- -- -- -- 11 1 1 0 255 11 1 1 1 256
Construcţia unui bit Segment de sincronizare- este folosit de fiecare nod să se sincronizeze pentru receptie. - durata 1 TQ.
Construcţia unui bit Segment pentru timpul de propagare- furnizează întârzierea necesară pentru compensarea timpului de propagare a semnalului electric. - durata 1. . 8 TQ.
Construcţia unui bit “Segmentul 1 pentru defazare” - compensarea erorilor de defazare la sincronizare. -Lungimea sa: 1. . . 8 TQ poate fi mărită pe timpul resinscronizarii. - registrul de temporizare 0 pe bus-ul CAN (C 0 BT 0) SJW 1 SJW 0 0 1 t. QU (1) 0 1 2 t. QU (2) 1 0 3 t. QU (3) 1 1 4 t. QU (4) SJW 1 SJW 0 BPR 5 BPR 4 BPR 3 BPR 2 BPR 1 BPR 0
Construcţia unui bit “Segmentul 2 pentru defazare” -durata: 1. . . 8 TQ, nu mai mare decat segmentul 1.
Construcţia unui bit Pentru o programare mai usoara:
Construcţia unui bit Pentru o programare mai usoara: Registrul de temporizare 1 (C 0 BT 1) SMP TSEG 26 TSEG 25 TSEG 24 TSEG 13 TSEG 12 TSEG 11 TSEG 10 TSEG 13 TSEG 12 TSEG 11 Lungimea Seg. 1 TSEG 26 TSEG 25 TSEG 24 Lungimea Seg. 2 0 0 Invalid 0 0 0 1 2 t. QU (2) 0 0 1 0 3 t. QU (3) -- -- 1 1 1 0 15 t. QU (15) 1 1 0 7 t. QU (7) 1 1 16 t. QU (16) 1 1 1 8 t. QU (8) -- --
Programarea momentului de esantionare - eşantionarea mai devreme- se pot utiliza oscilatoare mai ieftine.
Programarea momentului de esantionare - eşantionarea mai târziu- lungime maximă pentru bus.
Necesităţi software pentru programarea platformei TINI Java Development Environment Java Communications API TINI Software Development Kit Java Development Environment - mediul de dezvoltare al aplicatiilor JAVA Java Communication API - infrastructura necesară comunicării pe portul serial RS 232 între calculator şi platforma TINI SDK - software-ul pentru aplicatiile dedicate platformei TINI
Clase în java utilizate pentru comunicaţia pe interfaţa CAN Clasa Can. Bus - Această clasă permite accesul la controlerele Can. Bus Metode - set. Synchronization. Jump. Width (int jump. Width) - receive (Can. Frame frame) - send. Data. Frame (int ID, boolean extended. ID, byte[] data) - set. Message. Center. RXMode (int message. Center) - set. Baud. Rate. Prescaler (int prescaler) - set. TSEG 1 (int tseg 1) - set. TSEG 2 (int tseg 2) - enable. Message. Center (int message. Center) - enable. Controller () - close ()
Clase în java utilizate pentru comunicaţia pe interfaţa CAN Clasa CANFrame - este folosită împreună cu clasa CANBus pentru a transmite/recepţiona frame-uri pe bus-ul CAN Constructori Can. Frame() – creează un nou frame CAN cu următorii parametrii : ID = 0 ; extended. ID = false ; message. Center = 0 ; remote. Frame. Request = false ; data = new byte [8]; lenght = 0 ;
Program de identificare a vitezei de comunicaţie pe CAN baud rate = Fosc/[BRP*(1+TSEG 2)] BRP, TSEG 1 şi TSEG 2 pot fi programate folosind metode din clasa com. dalsemi. comm. Can. Bus. Paşii pentru setarea vitezei: - Can. Bus bus = new Can. Bus(Can. Bus. CANBUS 0); - bus. set. Baud. Rate. Prescaler(BRP); - bus. set. TSEG 1(TSEG 1); - bus. set. TSEG 2(TSEG 2); Baud Rate BRP TSEG 1 TSEG 2 10 Kbps 88 13 7 20 Kbps 71 5 7 20 Kbps 44 13 7 50 Kbps 41 3 5 50 Kbps 23 10 5 125 Kbps 7 13 7 SFR A 3 h Registrul de control CAN 0 (C 0 C) ERIE STIE PDE SIESTA CRST AUTOB ERCS SWINT
Contribuţii personale n n n Documentare TINI Documentare CAN Studiu asupra eficientizarii transmisiilor Program in java pentru setari ale controlerului CAN Program de detectare automata a vitezei de comunicatie pe CAN



































