Platforma de dez voltare TINI- nod într-o reţea CAN
description
Transcript of Platforma de dez voltare TINI- nod într-o reţea CAN
![Page 1: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/1.jpg)
Platforma de Platforma de dezdezvoltare TINI- nod voltare TINI- nod
într-o reţea CANîntr-o reţea CAN
Conducător ştinţificConducător ştinţific:: Conf.Dr.Ing. Dorina IsarConf.Dr.Ing. Dorina Isar
StudentStudent: : Cărbunar Cărbunar
OvidiuOvidiu
Universitatea “Politehnica” din TimişoaraFacultatea de Electronică şi Comunicaţii
Departamentul Electronică Aplicată
![Page 2: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/2.jpg)
Este formată din placa de bază şi SIMM.
Platforma de dezvoltare TINI
![Page 3: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/3.jpg)
Platforma de dezvoltare TINI
![Page 4: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/4.jpg)
Microcontrolerul DS80C400
![Page 5: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/5.jpg)
Port 5 Control Register (P5CNT)
P5CNT.0P5CNT.1P5CNT.2C0_I/O -- --CAN0BA --SFR A2h
CAN0BACAN 0 bus active status.
C0_I/O Bit 3 CAN 0 I/O enable.
Microcontrolerul DS80C400
![Page 6: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/6.jpg)
Memoria de date internă
- 9472 octeţi de memorie SRAM internă din care 256 octeţi este pentru memoria controlerului CAN.
Microcontrolerul DS80C400
![Page 7: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/7.jpg)
Microcontrolerul DS80C400
![Page 8: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/8.jpg)
Microcontrolerul DS80C400
![Page 9: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/9.jpg)
CCaracteristici - CANaracteristici - CAN
Bus serial asincronBus serial asincron APLICAAPLICAŢŢII DE CONTROL IN TIMP REAL Viteza: 1Mbps II DE CONTROL IN TIMP REAL Viteza: 1Mbps DetecDetecţţie excelentie excelentăă a erorilor a erorilor Identificatorul mesajului specificIdentificatorul mesajului specificăă at atâât cont conţţinutul cinutul câât t şşi i
prioritatea mesajuluiprioritatea mesajului Deconectare automatDeconectare automatăă a nodurilor defecte a nodurilor defecte Retransmisie automatRetransmisie automatăă îîn urma detectn urma detectăării unei eroririi unei erori FuncFuncţţionare ionare îîn regim de consum redusn regim de consum redus Excelent raport preExcelent raport preţţ-performan-performanţăţă Se pot conecta/deconecta noduri Se pot conecta/deconecta noduri în timp ce reţeaua locală în timp ce reţeaua locală
este în funcţiuneeste în funcţiune
![Page 10: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/10.jpg)
Frame-uri CANFrame-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
![Page 11: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/11.jpg)
Data FrameData Frame
Nr. biti/camp 1 11+1 1+1+4 0...64 15+1 1+1 7
SOF(D)
ID + RTR (D)
Secv.CRC + Delimitator CRC (R)
ACK + Delimitator ACK (R)
7 x R
![Page 12: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/12.jpg)
- datele CAN sunt transmise şi recepţionate prin cele 15 centre de mesaje.
Transmiterea şi primirea mesajelor
![Page 13: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/13.jpg)
Transmiterea şi primirea mesajelor
ER0ER0 ER1ER1 ER2ER2 TXSTXS RXSRXS WKSWKSEC96 /128EC96 /128BSSBSSSFR SFR A4hA4h
- biţii TXS şi RXS din registrul de stare indică dacă s-au trimis sau recepţionat date.
![Page 14: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/14.jpg)
- 4 registre pentru verificarea recepţiei/transmisiei datelor.
Transmiterea şi primirea mesajelor
C0RMS 0.0
C0RMS 0.1
C0RMS 0.2
C0RMS 0.3
C0RMS 0.4
C0RMS 0.5
C0RMS 0.6
C0RMS 0.7
SFR 96h
C0RMS 1.0
C0RMS 1.1
C0RMS 1.2
C0RMS 1.3
C0RMS 1.4
C0RMS 1.5
C0RMS 1.6
C0RMS 1.7
SFR 97h
![Page 15: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/15.jpg)
- 4 registre pentru verificarea recepţiei/transmisiei datelor.
Transmiterea şi primirea mesajelor
C0TMA 0.0
C0TMA 0.1
C0TMA 0.2
C0TMA 0.3
C0TMA 0.4
C0TMA 0.5
C0TMA 0.6
C0TMA 0.7
SFR 9Eh
C0TMA 1.0
C0TMA 1.1
C0TMA 1.2
C0TMA 1.3
C0TMA 1.4
C0TMA 1.5
C0TMA 1.6
-- --
SFR 9Fh
![Page 16: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/16.jpg)
- fiecare centru de mesaje conţine un registru format (C0MyF)
DTBYC3DTBYC3 DTBYC2DTBYC2 DTBYC1DTBYC1 DTBYC0DTBYC0 T/R T/R EX/STEX/ST MEMEMEME MDME MDME
DTBYC3-0 (Data byte count) - indică numărul de biţi din câmpul de date al mesajului.
Transmiterea şi primirea mesajelor
![Page 17: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/17.jpg)
Totul despre eroriTotul despre erori
Erori de bit transmisErori de bit transmis Erori datorate Erori datorate
inserinserăării/neinserrii/neinserăării de birii de biţţi i suplimentari (de bit stuffing)suplimentari (de bit stuffing)
Erori de verificare CRCErori de verificare CRC Erori de format Erori de format Erori datorate bitului de AcknowledgeErori datorate bitului de Acknowledge
![Page 18: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/18.jpg)
Totul despre eroriTotul despre erori
ER2ER2 ER1ER1 ER0ER0 PrioritatPrioritatee
EroareEroare
00 00 00 N/AN/A Nici o eroare în ultimul frame.Nici o eroare în ultimul frame.
00 00 11 22 Eroare de bit stuffing.Eroare de bit stuffing.
00 11 00 55 Eroare de format.Eroare de format.
00 11 11 44 Eroare de acknowledge.Eroare de acknowledge.
11 00 00 6 (mică)6 (mică) Eroare de bit 1.Eroare de bit 1.
11 00 11 1 (mare)1 (mare) Eroare de bit 0.Eroare de bit 0.
11 11 00 33 Eroare de CRC.Eroare de CRC.
11 11 11 N/AN/A Nici o eroare de la ultima citire a Nici o eroare de la ultima citire a C0S.C0S.
Registrul de stare CAN 0 (C0S)
ER0ER0 ER1ER1 ER2ER2 TXSTXS RXSRXS WKSWKSEC96 /128EC96 /128BSSBSSSFR SFR A4hA4h
![Page 19: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/19.jpg)
Totul despre eroriTotul 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:
![Page 20: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/20.jpg)
-modulul CAN conţine 2 registre speciale (C0RE si C0TE) care permit monitorizarea şi modificarea numărătoarelor de erori.
Totul despre eroriTotul despre erori
SFR A7h
C0RE.7 C0RE.6 C0RE.5 C0RE.4 C0RE.3 C0RE.2 C0RE.1 C0RE.0
SFR A6h
C0TE.7 C0TE.6 C0TE.5 C0TE.4 C0TE.3 C0TE.2 C0TE.1 C0TE.0
![Page 21: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/21.jpg)
Sicronizarea pe bus-ul Sicronizarea pe bus-ul CANCAN
- pentru a asigura o eşantionare corectă, nodul CAN trebuie să se resincronizeze pe tot parcursul Frame-ului.
- sincronizare hard pe SOF
![Page 22: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/22.jpg)
ConstrucConstrucţţia unui bit ia unui bit
BPR7,BPR7, BPR6BPR6
BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0 BPRVBPRV
0000 00 00 00 00 00 00 11
0000 00 00 00 00 00 11 22
---- ---- ---- ---- ---- ---- ---- ----
---- ---- ---- ---- ---- ---- ---- ----
1111 11 11 11 11 11 00 255255
1111 11 11 11 11 11 11 256256
SJW1SJW1 SJW0SJW0 BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0- registrul de temporizare 0 pe
bus-ul CAN (C0BT0)
- BPR7-BPR0 determină numărul de tacte asociate cu time quanta.
- durata unui bit pe bus-ul CAN are 4 segmente bine definite si este un multiplu de tactul uControler-ului.
-“unitatea de masura” pentru costrucţia bitului pe CAN este Time Quanta, TQ.
![Page 23: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/23.jpg)
ConstrucConstrucţţia unui bitia unui bit
Segment de sincronizare- este folosit de fiecare nod să se sincronizeze pentru receptie.- durata 1 TQ.
![Page 24: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/24.jpg)
ConstrucConstrucţţia unui bitia unui bit
Segment pentru timpul de propagare- furnizează întârzierea necesară pentru compensarea timpului de propagare a semnalului electric.- durata 1..8TQ.
![Page 25: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/25.jpg)
ConstrucConstrucţţia unui bitia unui bit
“Segmentul 1 pentru defazare” - compensarea erorilor de defazare la sincronizare. -Lungimea sa: 1 ... 8 TQ poate fi mărită pe timpul resinscronizarii.
SJW1SJW1 SJW0SJW0 BPR5BPR5 BPR4BPR4 BPR3BPR3 BPR2BPR2 BPR1BPR1 BPR0BPR0
SJW1SJW1 SJW0SJW0 SJWSJW
00 00 1 1 ttQUQU (1) (1)
00 11 2 2 ttQUQU (2) (2)
11 00 3 3 ttQUQU (3) (3)
11 11 4 4 ttQUQU (4) (4)
- registrul de temporizare 0 pe bus-ul CAN (C0BT0)
![Page 26: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/26.jpg)
ConstrucConstrucţţia unui bitia unui bit
“Segmentul 2 pentru defazare”-durata: 1 ... 8 TQ, nu mai mare decat segmentul 1.
![Page 27: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/27.jpg)
ConstrucConstrucţţia unui bit ia unui bit
Pentru o programare mai usoara:
![Page 28: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/28.jpg)
ConstrucConstrucţţia unui bit ia unui bit
SMP SMP TSEG26TSEG26 TSEG25TSEG25 TSEG24TSEG24 TSEG13TSEG13 TSEG12TSEG12 TSEG11TSEG11 TSEG10TSEG10
TSEG26TSEG26 TSEG25TSEG25 TSEG24TSEG24 Lungimea Seg.2Lungimea Seg.2
00 00 00 InvalidInvalid
00 00 11 2 2 ttQUQU (2) (2)
00 11 00 3 3 ttQUQU (3) (3)
---- ---- ---- -- --
11 11 00 7 7 ttQUQU (7) (7)
11 11 11 8 8 ttQUQU (8) (8)
Pentru o programare mai usoara:
Registrul de temporizare 1 (C0BT1)Registrul de temporizare 1 (C0BT1)
TSEG13TSEG13 TSEG12TSEG12 TSEG11TSEG11 TSEG11TSEG11 Lungimea Seg.1Lungimea Seg.1
00 00 00 00 InvalidInvalid
00 00 00 11 2 2 ttQUQU (2) (2)
00 00 11 00 3 3 ttQUQU (3) (3)
---- ---- ---- ---- -- --
11 11 11 00 15 15 ttQUQU (15) (15)
11 11 11 11 16 16 ttQUQU (16) (16)
![Page 29: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/29.jpg)
Programarea momentului Programarea momentului de esantionarede esantionare
- eş- eşantionarea mai devremeantionarea mai devreme- - se pot utiliza oscilatoare mai ieftine.se pot utiliza oscilatoare mai ieftine.
![Page 30: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/30.jpg)
Programarea momentului Programarea momentului de esantionarede esantionare
- eşantionarea mai târziu- lungime maximă pentru bus.
![Page 31: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/31.jpg)
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 RS232 între calculator şi platforma TINI.
TINI SDK - software-ul pentru aplicatiile dedicate platformei TINI
![Page 32: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/32.jpg)
Clase în java utilizate pentru Clase în java utilizate pentru comunicaţia pe interfaţa CANcomunicaţia pe interfaţa CAN
Clasa CanBus - Această clasă permite accesul la controlerele CanBus
Metode
- setSynchronizationJumpWidth (int jumpWidth) - receive (CanFrame frame) - sendDataFrame (int ID, boolean extendedID, byte[] data) - setMessageCenterRXMode (int messageCenter) - setBaudRatePrescaler (int prescaler) - setTSEG1 (int tseg1) - setTSEG2 (int tseg2) - enableMessageCenter (int messageCenter) - enableController () - close ()
![Page 33: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/33.jpg)
Clase în java utilizate pentru Clase în java utilizate pentru comunicaţia pe interfaţa CANcomunicaţia pe interfaţa CAN
Clasa CANFrame - este folosită împreună cu clasa CANBus pentru a transmite/recepţiona frame-uri pe bus-ul CAN
ConstructoriCanFrame() – creează un nou frame CAN cu următorii parametrii :
ID = 0 ;extendedID = false ;messageCenter = 0 ;remoteFrameRequest = false ;data = new byte [8];lenght = 0 ;
![Page 34: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/34.jpg)
Program de identificare a Program de identificare a vitezei de comunicaţie pe CANvitezei de comunicaţie pe CAN
Baud Rate BRP TSEG1 TSEG2
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
CAN baud rate = Fosc/[BRP*(1+TSEG1+TSEG2)]
BRP, TSEG1 şi TSEG2 pot fi programate folosind metode din clasa com.dalsemi.comm.CanBus. Paşii pentru setarea vitezei:
- CanBus bus = new CanBus(CanBus.CANBUS0);- bus.setBaudRatePrescaler(BRP);- bus.setTSEG1(TSEG1);- bus.setTSEG2(TSEG2);
Registrul de control CAN 0 (C0C)
SFR SFR A3hA3h
ERIEERIE STIESTIE PDEPDE SIESTASIESTA CRSTCRST AUTOBAUTOB ERCSERCS SWINTSWINT
![Page 35: Platforma de dez voltare TINI- nod într-o reţea CAN](https://reader036.fdocument.pub/reader036/viewer/2022062423/56814c04550346895db9040f/html5/thumbnails/35.jpg)
Contribuţii personaleContribuţii personale
Documentare TINIDocumentare TINI Documentare CANDocumentare CAN Studiu asupra eficientizarii Studiu asupra eficientizarii
transmisiilortransmisiilor Program in java pentru setari ale Program in java pentru setari ale
controlerului CANcontrolerului CAN Program de detectare automata a Program de detectare automata a
vitezei de comunicatie pe CANvitezei de comunicatie pe CAN