Le bus CAN
description
Transcript of Le bus CAN
![Page 1: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/1.jpg)
Le bus CAN
Exemple de mise en oeuvre
1
![Page 2: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/2.jpg)
Implantation L’implantation du bus CAN nécessite certains
équipements:
CAN transceiver
CAN controller
2
![Page 3: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/3.jpg)
Adaptation des signaux Adapte les signaux
pour les rendre conforme au standard CAN haute vitesse.
3
![Page 4: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/4.jpg)
Signal électrique pour CAN basse vitesse Tensions électriques dans un réseau CAN à
basse vitesse.
4
![Page 5: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/5.jpg)
Signal électrique pour CAN basse vitesse Tensions électriques dans un réseau CAN à
haute vitesse.
5
![Page 6: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/6.jpg)
Contrôleur CAN
6
![Page 7: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/7.jpg)
Exemple de montage
CAN contro
ller
CAN transce
iver
7
![Page 8: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/8.jpg)
Application Le microprocesseur PIC12C672 reçoit deux
signaux analogiques qui sont convertis en des valeurs numériques de 8 bits (ADC de 8 bits). Une des entrées analogiques est échantillonnée à
chaque appel d’une interruption programmée dans le PIC12C672. Cette valeur est envoyée directement au bus CAN. Interruption à chaque x secondes.
L’autre entrée analogique sera échantillonnée lors d’appels provenant du bus CAN.
8
![Page 9: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/9.jpg)
Application Trois entrées logiques sont connectées au
MPC2510. L’état de ces trois entrées sera envoyée au bus CAN lors d’appels provenant du bus CAN. Chaque entrée est commandée par un bouton poussoir
connectant la broche correspondante à la masse.
Deux sorties logiques sont exploitées directement du MPC2510. Leur état est conditionné par des appels provenant du bus CAN. Ces sorties peuvent commander des DEL qui seront
alumées ou éteintes selon l’état de la sortie qui les commandent.
9
![Page 10: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/10.jpg)
Application Dans une application qui implique de
communiquer avec le bus CAN, il faut sélectionner la plage d’adresses que l’on désire utiliser dans notre noeud CAN.
Idéalement, on essaye d’utiliser des plages d’identificateurs contigus car il faudra générer et filtrer ces identificateurs lors des échanges avec le réseau CAN.
Notez que l’identification du message est sur 11 bits.
10
![Page 11: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/11.jpg)
Application - identificateursSignaux analogiques:
La valeur du canal analogique 1 est envoyé au bus CAN à intervalle régulier. ID du message: 3FEh ou 0x0011 1111 1110b.
La valeur du canal analogique 2 est envoyé au bus CAN sur demande. ID du message de la demande: 3F0h ou 0x0011
1111 0000b. ID du message de la réponse: 3F8h ou 0x0011 1111
1000b.11
![Page 12: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/12.jpg)
Application - identificateurs Entrées logiques:
Les états des entrées logiques sont envoyés au bus CAN sur demande.
ID du message de la demande: 3F1h ou 0x0011 1111 0001b.
ID du message de la réponse: 3F8h ou 0x0011 1111 1000b.
12
![Page 13: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/13.jpg)
Registres des identifiants en transmission
13
0 pour une trame
standard (11 bits)
![Page 14: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/14.jpg)
Longueur des trames
14
![Page 15: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/15.jpg)
Application - identificateursSorties logiques:
Les états des sorties logiques sont reçues du bus CAN. ID du message – sortie logique 1: 3F2h ou 0x0011
1111 0010b. ID du message de confirmation: 3FAh ou 0x0011 1111
1010b.
ID du message – sortie logique 2: 3F3h ou 0x0011 1111 0011b.
ID du message de confirmation: 3FBh ou 0x0011 1111 1011b.
15
![Page 16: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/16.jpg)
Application - identificateursErreurs :
En cas d’erreur on envoie un message sur le bus CAN. ID du message d’erreur : 3FFh ou 0x0011 1111
1111b.
16
![Page 17: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/17.jpg)
Tableau résumant les identifiants des messages
17
![Page 18: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/18.jpg)
Masques et filtres pour détecter les messages à accepter
18
![Page 19: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/19.jpg)
Acceptation/blocage des messages Un système de masquage et de filtrage est
prévu pour l’acceptation des messages transitant sur le réseau.
Au plus haut niveau on trouve un masque qui fonctionne comme suit: Si le masque du bit bn est à 0, le bit est accepté; Sinon, la décision aura lieu au niveau du filtrage
des messages.
19
![Page 20: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/20.jpg)
Acceptation/blocage des messages Si le bit du masquage du bit bn est à 1:
Si le filtre du bit bn est identique au bit correspondant du message, il est accepté et le message est pris en compte si tous les autres bits confirment l’acceptation;
Sinon, le message est rejeté et n’est pas pris en compte.
20
![Page 21: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/21.jpg)
Acceptation/blocage des messages La configuration des bits doit être faite pour
configurer l’acceptation/blocage des messages.
21
![Page 22: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/22.jpg)
Le filtre d’acceptation de messages reçus
22
0 pour une trame
standard (11 bits)
![Page 23: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/23.jpg)
Le masque pour l’acceptation de messages reçus
23
![Page 24: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/24.jpg)
Valeurs des masques et filtres
24
0x111 1111 1111
0x011 1111 0000
0x011 1111 00000x011 1111 00010x011 1111 00100x011 1111 0011
0x111 1111 11110x111 1111 1111
![Page 25: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/25.jpg)
Il faut filtrer les messages reçus Registres RXF2SIDH = 7Eh et RXF2SIDL =
00h. Correspond à 0x0111 1110 0000b = 3F0h
Registres RXF2EID8 = FFh et RFX2EID0 = FFh. Pour adressage étendu.
Registres RXF3SIDH = 7Eh et RXF3SIDL = 20h. Correspond à 0x0111 1110 0010b = 3F1h
Registres RXF3EID8 = FFh et RFX3EID0 = FFh. Pour adressage étendu.
25
![Page 26: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/26.jpg)
Il faut filtrer les messages reçus Registres RXF4SIDH = 7Eh et RXF4SIDL =
40h. Correspond à 0x0111 1110 0100b = 3F2h
Registres RXF4EID8 = FFh et RFX4EID0 = FFh. Pour adressage étendu.
Registres RXF5SIDH = 7Eh et RXF5SIDL = 60h. Correspond à 0x0111 1110 0110b = 3F3h
Registres RXF5EID8 = FFh et RFX5EID0 = FFh. Pour adressage étendu.
26
![Page 27: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/27.jpg)
Autres registres
27
0 = entrée logique
0 = entrée logique
0 = entrée logique
0 = sortie
logique
0 = sortie
logique
1 = broche activée
0 ou 1 selon état désiré
États des entrées logiques
![Page 28: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/28.jpg)
Transmission de données
28
Buffer:
Profondeur de 8 octets (maximum transmissible dans une trame)
![Page 29: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/29.jpg)
Transmission de données
29
Contrôle, canal N:
Priorité du
message
Message
annuléMessage à perdu
lors de l’arbritration
Erreur de
trans.
Buffer en
trans.
![Page 30: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/30.jpg)
Réception de données
30
![Page 31: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/31.jpg)
Vitesse du bus CAN
31
Oscillateur de 8 MHz. Diviseur de fréquence ajusté à 4. Chaque bit à 8 Time Quantum.
Donc la durée d’un bit sur le bus CAN est: 4 x 8 / (8 Mhz) = 4 microsecondes. Fréquence de : 250000 bits/seconde
![Page 32: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/32.jpg)
Registre de contrôle global
32
![Page 33: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/33.jpg)
Registre d’état global
33
![Page 34: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/34.jpg)
Les interruptions
34
![Page 35: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/35.jpg)
Les interruptions
35
![Page 36: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/36.jpg)
Registres du contrôleur du bus CAN
36
![Page 37: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/37.jpg)
Registres du contrôleur du bus CAN
37
![Page 38: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/38.jpg)
38
![Page 39: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/39.jpg)
Du point de vue du SPI
39
![Page 40: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/40.jpg)
Commandes envoyées via SPI Premier bloc de 8 bits envoyé au MCP2510
contient une commande:
40
![Page 41: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/41.jpg)
Demande de lecture d’un registre Instruction 0x03; Adresse sur 8 bits; Reçoit le contenu du registre sur 8 bits.
41
![Page 42: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/42.jpg)
Écriture dans un registre Instruction 0x02; Adresse sur 8 bits; Envoyer le contenu désiré du registre sur 8
bits.
42
![Page 43: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/43.jpg)
Requête de transmission (Request to send) Instruction 0x8…;
Si plusieurs transmissions simultanées, MCP2510 commence par le plus prioritaire.
43
![Page 44: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/44.jpg)
Modification de bits de registres Instruction 0x05; Adresse sur 8 bits; Envoyer le masque et contenu désiré sur 8
bits (chacun).
44
![Page 45: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/45.jpg)
Lecture de l’état des transmissions/réceptions Instruction 0xA0.
45
![Page 46: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/46.jpg)
Remise à zéro du MPC2510 Instruction 0xC0.
46
![Page 47: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/47.jpg)
Exemple (AT91SAM9G45) Supposons que nous utilisions un bus CAN
avec le port SP1, et qu’il soit branché sur la broche NCPS#1 pour le « chip select ».
47
![Page 48: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/48.jpg)
Initialisation du SPI pour CS#1
48
config = 0; config = (AT91C_SPI_DLYBCT & (0x01 << 24)) | // Délais entre deux transferts
(AT91C_SPI_DLYBS & (0xF << 16)) | // Délais avant le SPCK
(AT91C_SPI_SCBR & (0x43 << 8)) | // Baud rate (AT91C_SPI_BITS & (AT91C_SPI_BITS_8)) | // Transferts par blocs de 8 bits.
(AT91C_SPI_CSAAT & (0x1 << 3)) | // maintient CS actif (AT91C_SPI_NCPHA & (0x0 << 1)) | (AT91C_SPI_CPOL & (0x1 << 0)));
SPI_ConfigureNCPS(AT91C_BASE_SP1, 1, config);
![Page 49: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/49.jpg)
Broche du CS#1 du SPI1
49
Déclaration de variables: static Pin pinsSPI1[] = {PINS_SPI1, PIN_SPI1_NPCS1 , PIN_SPI1_NPCS2, PIN_SPI1_NPCS3};
static Pin pinsCAN[] = PINS_CAN; // Devrait être définit dans board.h
Routine initSPI(): PIO_Configure(pinsSPI1, PIO_LISTSIZE(pinsSPI1));
![Page 50: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/50.jpg)
Configuration du bus CAN. static void setupCANbus(void){ spi_write(AT91C_BASE_SP1, 1, 0xC0); // RESET du chip spi_read(AT91C_BASE_SP1); wait(1); // 1 msec > 128 périodes de SCK
// Initialiser la puce MCP2510 RÉPÉTER
SPI_Write(AT91C_BASE_SPI1, 1, 0x02); SPI_Read(AT91C_BASE_SPI1); SPI_Write(AT91C_BASE_SPI1, 1, regaddrCAN[i]); SPI_Read(AT91C_BASE_SPI1); SPI_Write(AT91C_BASE_SPI1, 1, conbusCAN[i]); SPI_Read(AT91C_BASE_SPI1); i++;
TANT QUE CONFIGURATION NON COMPLÉTÉE }
50
Note: Premier message – entrer dans le mode de configuration
Dernier message – sortir du mode de configuration
![Page 51: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/51.jpg)
Transfert de données LECTURE D’UNE DONNÉE spi_write(AT91C_BASE_SP1, 1, 0x03); // Lect. donnée spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, regaddrCAN[x]); ValCAN = spi_read(AT91C_BASE_SP1);
ÉCRITURE D’UNE DONNÉE de 8 bits spi_write(AT91C_BASE_SP1, 1, 0x02); // Écr. donnée spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, regaddrCAN[x]); spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, donnee); spi_read(AT91C_BASE_SP1);
51
![Page 52: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/52.jpg)
Request to send (demande de transfert)
52
spi_write(AT91C_BASE_SP1, 1, 0x8y); // RTS spi_read(AT91C_BASE_SP1);
En binaire y = 0b0abc Si a = 1: vider buffer #2 Si b = 1: vider buffer #1 Si c = 1: vider buffer #0
![Page 53: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/53.jpg)
Interruptions
53
Déclaration de variables: static Pin pinsCAN[] = PINS_CAN; // Devrait être définit
dans board.h
Routine ConfigurePins(): PIO_Configure(pinsCAN, PIO_LISTSIZE(pinsCAN));
PIO_ConfigureIt(&pinsCAN,(void (*)(const Pin *)) ISR_CAN);
PIO_EnableIt(&pinsCAN);
![Page 54: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/54.jpg)
Interruptions
54
Routine : static void ISR_CAN(void) { if (!PIO_Get(&pinsCAN)) { // Identifier la source de l’interruption spi_write(AT91C_BASE_SP1, 1, 0x03); // Lect. donnée spi_read(AT91C_BASE_SP1); spi_write(AT91C_BASE_SP1, 1, 0x2C); inter = spi_read(AT91C_BASE_SP1); // SELON bits actifs, faire les actions correspondantes. … … … … } }
![Page 55: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/55.jpg)
55
![Page 56: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/56.jpg)
56
![Page 57: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/57.jpg)
Exemple : échange de donnée avec des MPPT Régulateur MPPT
(Maximum Power Point Tracking). Énergie solaire.
57
![Page 58: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/58.jpg)
58
![Page 59: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/59.jpg)
59
![Page 60: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/60.jpg)
Terminal du MPPT
60
![Page 61: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/61.jpg)
Identificateur du MPPT
61
![Page 62: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/62.jpg)
62
![Page 63: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/63.jpg)
63
![Page 64: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/64.jpg)
64
![Page 65: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/65.jpg)
Suite dans le fichier .pdf 65
![Page 66: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/66.jpg)
Source: MISE EN OEUVRE D’UNE COMMUNICATION PAR
BUS CAN REALISE PAR CHARLES LERY
66
![Page 67: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/67.jpg)
67
![Page 68: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/68.jpg)
68
![Page 69: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/69.jpg)
Bateau solaire « Furia Two MKII 2011 »
69
![Page 70: Le bus CAN](https://reader036.fdocument.pub/reader036/viewer/2022081507/5681640e550346895dd5b635/html5/thumbnails/70.jpg)
70