Le bus CAN
LE BUS CAN
Control Area Network
Introduction
Bus/réseau de terrain
Respecte les spécifications ISO/OSI
Fonctionne dans des environnements limités et
sévères
Haut niveau de fiabilité
2
Ivan FRANCOIS 1
Le bus CAN
CAN pour l’automobile
CAN est conçu par BOSCH en 1983 devant
la montée de l’électronique embarquée dans
les voitures et du nombre de câbles
La première voiture multiplexée à utiliser le
bus CAN comme support de transmission a
été réalisée en 1991 (avec un débit de 500
kbit/s)
Actuellement, il peut y avoir plusieurs bus
3 CAN dans une voiture suivant les modèles
CAN pour l’automobile
Situation du câblage dans les années 80
Climatisation Sièges
Contrôle électriques
suspensions
moteur
Tableau de bord Airbag
ABS
Vitres
Boite de
électriques
vitesse Phares
Ivan FRANCOIS 2
Le bus CAN
CAN pour l’automobile
Situation sur les modèles récents
Climatisation Sièges
suspensions Contrôle électriques
moteur
Airbag
Bus CAN Tableau de bord Bus CAN
ABS Boite de
Vitres
vitesse Phares
électriques
Couches OSI
Open System Interconnection
APPLICATION
PRESENTATION
Le bus CAN ne concerne SESSION
que les couches basses:
TRANSPORT
– Couche physique
RESEAU
– Couche liaison de données
LIAISON
PHYSIQUE
Ivan FRANCOIS 3
Le bus CAN
Couches OSI
COUCHE LIAISON
LLC ( Logic Link Control ) MAC ( Medium Access Control )
Filtrage d'acceptance des messages Encapsulation/Décapsulation des données
Notification de sucharge ( overload ) Codage de trame ( Stuffing/Destuffing )
Recouvrement des erreurs Medium Access Management
Détection d'erreur
Signalisation d'erreur
Acquittement
Sérialisation/Désérialisation
COUCHE PHYSIQUE
PLS ( Physical Signalling ) PMA ( Physical Medium MDI ( Medium Dependent
Codage/Décodage de bit Attachment ) Interface )
Caractéristiques Connecteurs
7 Bit timing
Driver/Receiver
Synchronisation
Couche liaison
Sous couche LLC
La sous-couche LLC s’occupe:
– du filtrage des messages.
– de la notification de surcharge (Overload).
– de la procédure de recouvrement des erreurs.
Ivan FRANCOIS 4
Le bus CAN
Couche liaison
Sous couche MAC
C’est le noyau du protocole CAN. Elle a pour
fonction de présenter les messages reçus en
provenance de la sous-couche LLC et
d’accepter les messages devant être
transmis vers la sous-couche LLC. Elle est
responsable de :
– la mise en trame du message.
– l’arbitrage.
– l’acquittement.
– la détection des erreurs.
– la signalisation des erreurs.
9
Couche physique
Elle définit comment le signal est transmis. Son
rôle est d’assurer le transfert physique des bits
entre les différents nœuds en accord avec
toutes les propriétés (électriques,
électroniques…) du système
A l’intérieur d’un unique réseau la couche
physique doit être la même pour chaque noeud.
Cette couche s’occupe donc :
– de gérer la représentation du bit (codage, timing…).
– de gérer la synchronisation bit.
– de définir les niveaux électriques des signaux.
– de définir le support de transmission.
10
Ivan FRANCOIS 5
Le bus CAN
Implémentations CAN typique
Nœud A Capteur Nœud N Capteur
DAC, I2C, SPI,… DAC, I2C, SPI,…
Microcontrôleur Microcontrôleur
avec contrôleur avec contrôleur
CAN intégré CAN intégré
CANTX CANRX CANTX CANRX
TXD RXD TXD RXD
Interface de ligne: Interface de ligne:
CAN transceiver CAN transceiver
CANL CANL
CANH CANH
120Ω BUS CAN CAN L (CAN LOW)
11 CAN H (CAN HIGH) 120Ω
Caractéristiques physiques du bus
CAN
La transmission des données est effectuée sur
une paire filaire différentielle. La ligne est donc
constituée de deux fils :
CAN L (CAN LOW)
CAN H (CAN HIGH) Paire
filaire
La transmission en paire différentielle permet
12
de s'affranchir des problèmes de parasites
Ivan FRANCOIS 6
Le bus CAN
Caractéristiques physiques du bus
CAN
Pour les niveaux physiques sur le bus, il est
important de distinguer les deux types de
transmission possibles :
– transmission en bus CAN low speed ≤125kb/s
– transmission en bus CAN high speed >125kb/s
13
Caractéristiques physiques du bus
CAN
Niveau de tension du bus CAN Low Speed
14
Ivan FRANCOIS 7
Le bus CAN
Caractéristiques physiques du bus
CAN
Niveau de tension du bus CAN High Speed
15
L’interface de ligne
C’est l’interface finale entre le
microcontrôleur et les fils
Ce circuit réalise la transposition de niveaux
asymétriques (0 à 5V) en niveaux
différentiels sur une ligne d’impédance
caractéristique de 120 Ω
16
Ivan FRANCOIS 8
Le bus CAN
Règles de fonctionnement et
définitions
Nœud: Sous-ensemble relié à un réseau de
communication et capable de communiquer
sur le réseau selon un protocole de
communication (ici le protocole CAN)
Flexibilité: aucune modification logicielle ou
matérielle n’est requise lorsqu’un nœud est
ajouté au réseau
17
Règles de fonctionnement et
définitions
Débit bit (bit rate): le débit bit peut varier
entre différents systèmes, mais il doit être
fixe et uniforme au sein d’un même système
Fonctionnement multimaître : lorsque le
bus est libre, chaque nœud peut décider
d’envoyer un message. Seul le message de
plus haute priorité prend possession du bus.
18
Ivan FRANCOIS 9
Le bus CAN
Arbitrage - Identificateur
Si deux nœuds ou plus tentent d’émettre un
message sur un bus libre il faut régler les
conflits d’accès. On effectue alors un
arbitrage bit à bit (non destructif) tout au long
du contenu de l’identificateur.
Ce mécanisme garantit qu’il n’y aura ni perte
de temps, ni perte d’informations.
19
Arbitrage
Utilisation de la dominance de bit:
– 0 bit dominant
– 1 bit récessif
Exemple 3 nœuds veulent émettre en même
temps:
– N1: 01100111010
– N2: 01100101000
– N3: 01100101011
20
Ivan FRANCOIS 10
Le bus CAN
Arbitrage
Nœud 1 0 1 1 0 0 1 1 Perdu
Nœud 2 0 1 1 0 0 1 0 1 0 0 0 Gagné
Nœud 3 0 1 1 0 0 1 0 1 0 1 0 Perdu
Bus CAN
0 1 1 0 0 1 0 1 0 0 0
21
Arbitrage
Tous les nœuds vérifient l’état du bus après
émission d’un bit
Si un bit récessif est émis et un bit récessif
est lu, le nœud continue à émettre
Si un bit récessif est émis et un bit dominant
est lu, il y a conflit et perte d’arbitrage. Le
nœud stoppe son émission et passe en
mode réception
22
Ivan FRANCOIS 11
Le bus CAN
Sécurisation de la transmission
Bit stuffing
Insertion d’un ‘0’ après une suite de cinq ‘1’
consécutifs
Insertion d’un ‘1’ après une suite de cinq ‘0’
consécutifs
Cette technique est uniquement active sur
les champs de SOF, d’arbitrage, de contrôle,
de données et de CRC (délimiteur exclu)
23
Sécurisation de la transmission
Bit stuffing
6ème ‘1’ consécutif
Trame originale: 010011111110010001
Trame transmise: 0100111110110010001
Bit de transparence inséré dans la trame
6ème ‘0’ consécutif
Trame originale: 010000001110010001
Trame transmise: 0100000101110010001
Bit de transparence inséré dans la trame
24
Ivan FRANCOIS 12
Le bus CAN
Les différents types de trames
Trame de données (data frame)
Trame de requête (remote frame)
Trame d’erreur (error frame)
Trame de surcharge (overload frame)
25
Trame de données
Il existe 2 formats de trame de données:
– CAN 2.0A trame standard. Identificateur sur 11 bits
– CAN 2.0B trame étendue. Identificateur sur 29 bits
26
Ivan FRANCOIS 13
Le bus CAN
Trame de données
Espace Arbitration R Espace
SO AC END OF
inter T IDE DLC DATA BYTE CRC inter
F ID K FRAME
trame R trame
1 11 bits ou 1 2 4 2
0-8 octets 16 bits 7 bits
bit 29 bits bit bits bits bits
Champ Champ de
Fin de trame
d’arbitrage données
Champ
Champ de
Début de d’acquittement
commandes
trame
Champ de
CRC
27
Trame de données
Début de trame
Début de trame 1 bit
– Constitué d’un seul bit dominant
– Signale le début d’un échange
– Un nœud est autorisé à émettre que si le bus est
libre
28
Ivan FRANCOIS 14
Le bus CAN
Trame de données
Champ d’arbitrage
Champ d’arbitrage 12 bits
– Identificateur 11 bits (CAN 2.0 A) ou 29 bits (CAN
2.0 B)
Ordre de ID10 (MSB) vers ID0 (LSB)
L’identificateur le plus prioritaire (valeur la plus faible)
gagne le bus
– RTR Remote Transmission Request 1bit
Récessif lors d’une trame de requête
Dominant lors d’une trame de données
29
Trame de données
Champ de commande
Champ de commande 6 bits
– Bits de réserve 2 bits
Permettent d’assurer la compatibilité entre CAN 2.0A et
CAN 2.0B (dominants pour CAN 2.0A)
– DLC Data Length Code 4 bits
Nombre d’octets contenues dans le champ de données
(0 à 8 octets)
30
Ivan FRANCOIS 15
Le bus CAN
Trame de données
Champs de données
Champs de données 0 à 64 bits
– Champ où se trouvent les données utiles
transmises
– 0 octets minimum, 8 octets maximum
– Chaque octet est transmis avec le bit de poids fort
en tête
31
Trame de données
Champ de CRC
Champ de CRC (Cyclic Redondance Code)
16 bits
– Séquence CRC 15 bits
– Délimiteur de CRC 1 bit
Ce champ permet de s’assurer de la validité
du message transmis
Un calcul permet de déterminer 5 erreurs au
maximum
32
Ivan FRANCOIS 16
Le bus CAN
Trame de données
Calcul du CRC
On considère le polynôme f(x), dont les
coefficients sont les bits de début de trame,
des champs d’arbitrage, de contrôle et de
données
Le polynôme obtenu est multiplié par x15
On divise ensuite ce polynôme par le
polynôme générateur:
g(x)=x15+x14+x10+x8+x7+x4+x3+1
33 Le reste de cette division donne le CRC
Trame de données
Calcul du CRC
Exemple: L’identifiant 5 envoi de l’octet A0h
SOF=0
Id=101
RTR=0
IDE=00
DLC=0001
Donnée=1010
Le polynôme est f(x) = x17+x15+x8+x7+x5
34
Ivan FRANCOIS 17
Le bus CAN
Trame de données
Calcul du CRC
On multiplie f(x) par x15 . On obtient:
x32+x30+x23+x22+x20
Ensuite, on divise (modulo 2) ce polynôme
par
x15+x14+x10+x8+x7+x4+x3+1
Un algorithme permet d’effectuer cette
division
Le reste de la division donne le CRC sur 15
35 bits
Trame de données
Champ d’acquittement
Champ d’acquittement
– ACK SLOT émis à l’état récessif
A chaque fois qu’une station a émis un message valide,
elle superpose un bit dominant sur le Ack Slot.
Sinon elle envoi une trame d’erreur
L’acquittement signifie qu’au moins une station a reçue
la trame
– ACK DELIMITER toujours récessif
Bit délimiteur d’acquittement
36
Ivan FRANCOIS 18
Le bus CAN
Trame de données
Fin de trame
Fin de trame 7 bits
– 7 bits récessifs successifs
– Les logiques de codage et de décodage Bit
Stuffing sont désactivées pendant la séquence de
fin de trame
37
Trame de requête
Les règles de construction des divers
champs sont les mêmes que dans le cas
d’une trame de données. Le champ de
données est vide
Si un nœud a besoin d’un certain nombre de
données, il va émettre une trame de requête
en prenant soin d’indiquer dans le champ de
contrôle le nombre d’octets de données dont
il a besoin
Permet une coopération de type Client-
38 Serveur
Ivan FRANCOIS 19
Le bus CAN
Trame de requête
Début de trame
– Identique à la trame de données
Champ d’arbitrage
– Identificateur identique à la trame de données
– RTR toujours récessif
Une trame de données sera toujours prioritaire sur une
trame de requête
39
Trame de requête
Champ de commande 6 bits
– Bits de réserve 2 bits
Permettent d’assurer la compatibilité entre CAN 2.0A et
CAN 2.0B
– DLC Data Length Code 4 bits
Nombre d’octets contenues dans le champ de données
(0 à 8 octets) qui devra être retournée par la trame de
donnée demandée
40
Ivan FRANCOIS 20
Le bus CAN
Trame de requête
Champ de données
– Toujours vide
Champ de CRC d’acquittement et fin de
trame
– Identique à la trame de données
41
Gestion des erreurs
Principe: une station qui détecte une erreur,
la signale aux autres par une trame d’erreur
42
Ivan FRANCOIS 21
Le bus CAN
Différents types d’erreurs
Erreur de Bit stuffing (stuff bit error)
– 6 bits consécutifs de même niveau entre le SOF et le CRC
delimiter
Erreur de bit (bit error)
– dominant + récessif = récessif !
Erreur de CRC (CRC error)
– CRC error : CRC calculé ≠ CRC trame
Erreur d’acknoledge (ack error)
– Acknoledge récessif!
Erreur de forme
– Bit dominant fin de trame, inter trame ou CRC delimiter
43
Confinement d’erreurs
Un mécanisme permet de faire la distinction
entre un défaut temporaire (surtension,
perturbation aléatoire) et une panne
permanente (mauvaise connexion, nœud
défectueux, perturbation persistante,...)
Une station peut prendre l’un des trois états
suivants:
– « error active »
– « error passive »
44 – « bus off »
Ivan FRANCOIS 22
Le bus CAN
Compteur d’erreurs
2 compteurs d’erreurs permettent de
connaitre l’état d’un nœud:
– sur les trames émises (TEC – transmit error
counter)
– sur les trames reçues (REC – receive error
counter)
45
Evolution des compteurs
REC :
–Réception d’une trame corrompue : +1 ou +8 selon
l’erreur (jusque 128)
– Réception d’une trame correcte : -1 (si >0)
TEC :
– Emission d’une trame corrompue : +8 (jusque 256)
– Emission d’une trame correcte : -1 (si >0)
Il existe quelques exceptions mineures à ces
règles (ex: quand une station est seule sur le
réseau)
46
Ivan FRANCOIS 23
Le bus CAN
Règle de changement des états
Reset
Error active
REC>=127 OU
TEC>=127 128
OCCURRENCES
REC<127 OU DE 11 BITS
RECESSIFS
TEC<127
Error passive
TEC>=256 Bus Off
47
Etats des erreurs
0 à 127 état error active
– Fonctionnement normal mais en cas d’erreur,
transmission d’un active error flag pendant la
trame d’erreur
128 à 255 état error passive
– Fonctionnement normal mais en cas d’erreur,
transmission d’un passive error flag pendant la
trame d’erreur
48
Ivan FRANCOIS 24
Le bus CAN
Etats des erreurs
>255 Bus Off
– Le nœud se déconnecte du bus
– Les drivers de bus ne sont plus actifs
– Le nœud sera autorisé à se reconnecter après
qu’il ait observé, sans erreurs sur le bus, 128
trames de 11 bits récessifs
49
Trame d’erreur
Erreur
Trame de données
6 bits 0…6 bits 8 bits 3 bits
incomplète
Flag d’erreur Délimiteur d’erreurs intertrame
Superposition des flags
d’erreurs
Trame d’erreur
50
Ivan FRANCOIS 25
Le bus CAN
Trame d’erreur
Champ flag d’erreur
– Superposition des différents flag d’erreurs
auxquels ont contribué les différents nœuds
présents sur le bus
– 2 types de flag d’erreur
Active error flag
Passive error flag
Champ délimiteur d’erreur
– 8 bits récessifs consécutifs
51
Trame d’erreur
Active error flag: 6 bits dominants successifs
Trame de données 6 bits 0…6 bits 8 bits
3 bits
incomplète 000000 000000 11111111
Flag d’erreur Délimiteur d’erreurs intertrame
Superposition des flags
d’erreurs
Passive error flag: 6 bits récessifs successifs
Trame de données 6 bits 0…6 bits 8 bits
3 bits
incomplète 111111 111111 11111111
Flag d’erreur Délimiteur d’erreurs intertrame
52 Superposition des flags
d’erreurs
Ivan FRANCOIS 26
Le bus CAN
Trame de surcharge
Indique qu’une station est surchargée pour
un certain laps de temps
6 bits 0…6 bits 8 bits
Trame de données 3 bits
dominants dominants récessifs
Flag de Délimiteur de
intertrame
surcharge surcharge
Superposition des flags
de surcharge
Trame de surcharge
53
Trame de surcharge
Une trame de surcharge est émise si:
– un bit dominant est détecté durant la période
d’intertrame
– un récepteur n’est pas prêt pour la réception
d’une nouvelle trame de donnée ou de requête
(retard sur le traitement des informations circulant
sur le bus)
Pas plus de 2 trames de surcharges
consécutives
54
Ivan FRANCOIS 27
Le bus CAN
Nominal Bit Time
Le Nominal Bit Time représente la durée du
bit sur le bus
Chaque station reliée sur le bus doit être
cadencée avec le même Nominal Bit Time
pour pouvoir émettre et recevoir
correctement les données
Le Nominal Bit Time, exprimé en secondes,
correspond à l’inverse du débit sur le bus
55
Nominal Bit Time
Nominal_Bit_Time = 1
Nominal_Bit_Rate
(débit)
Exemple:
Bus CAN 125 Kbits/S donne un Nominal bit time
de 8 µS
Bus CAN 1 Mbits/S donne un Nominal bit time
de 1 µS
56
Ivan FRANCOIS 28
Le bus CAN
Nominal Bit Time
Nominal Bit Time est divisé en plusieurs
segments
Nominal Bit Time
SYNC_SEG PROG_SEG PHASE_SEG1 PHASE_SEG2
segment de segment de segment de phase segment de phase
synchronisation propagation buffer n°1 buffer n°2
1 bit 1 à 8 bits 1 à 8 bits 1 à 8 bits
57
Time Quantum Tq
Unité de temps construite à partir de la
période de l’oscillateur interne de chaque
nœud
Tq = m * Tosc
Tosc
Tq
58
Ivan FRANCOIS 29
Le bus CAN
Time Quantum Tq
Nominal bit time Tbit = Tq*(SYNC_SEG + PROG_SEG +
PHASE_SEG1 + PHASE_SEG2)
Exemple:
– SYNC_SEG = 1 bit
– PROG_SEG = 1 bit ⇒Tbit= 8*Tq
– PHASE_SEG1 = 3 bits
– PHASE_SEG2 = 3 bits
Si Fosc = 8 Mhz et m=2 alors
Tq = 2*125 ns = 250 ns
Soit Tbit = 8 * 250ns = 2 µs
Donc un nominal bit rate (débit brut du bus CAN) = 500 Kbits/s
59
Débit net / débit brut
Le débit brut
– S’étend de 125 kb/s à 1 Mb/s suivant le type de bus
CAN utilisé
– Compte tous les bits qui sont transmis sur le bus
Le débit net
– Ne tient compte que des bits transportant des
informations utiles
– Ne compte pas tous les bits tels que le SOF, les
Acknowlegde Delimiter, les bits de Bit-Stuffing...
60
Ivan FRANCOIS 30
Le bus CAN
Exercices
A un instant donné, le bus devient libre et 2 trames
d’identificateurs 31 et 29 (émises respectivement par
les stations 1 et 2) sont en concurrence.
Représenter les bits émis par les stations 1 et 2 et le
niveau résultant sur le bus
Quelle est la durée maximale de transmission d’une
trame CAN (2.0A) sur un réseau à 125kbit/s ?
Sur un bus CAN à 500kbit/s, quel débit utile
(données) peut-on espérer ?
61
Application au Pic 18F4685
Le pic 18f4685 possède un contrôleur CAN
intégré
Les deux formats de trame de données 2.0A
et 2.0B sont compatibles
3 modes de fonctionnement: mode 0, mode
1 et mode 2
62
Ivan FRANCOIS 31
Le bus CAN
Réglage du débit
D’après les équations du transparent 56
1/débit =Tbit = Tq*(SYNC_SEG + PROG_SEG +
PHASE_SEG1 + PHASE_SEG2)
Or Tbit=1/débit et Tq =[Link] soit
Fosc
Débit =
(SYNC_SEG + PROG_SEG + PHASE_SEG1 + PHASE_SEG2).m
63
Réglage des registres
3 registres BRGCON1, BRGCON2 et BRGCON3
permettent de régler le débit (datasheet p. 312)
La variable BRP(baud rate prescaler) est directement
liée à m:
m=2*(BRP+1) soit
Fosc
Débit =
(SYNC_SEG + PROG_SEG + PHASE_SEG1 + PHASE_SEG2).2(BRP + 1)
64
Ivan FRANCOIS 32
Le bus CAN
Filtres et masques
Les filtres et masques sont utilisés afin de
déterminer si un message reçu doit être
chargé dans les buffers
Si le masque est à zéro, le message sera
accepté
Si le filtre est égal à l’identificateur, le
message sera accepté.
65
Table de vérité des fitres/masques
Identificateur Bit n accepté
Masque bit n Filtre bit n
bit n ou rejeté
0 X X Accepté
1 0 0 Accepté
1 0 1 Rejeté
1 1 0 rejeté
1 1 1 Accepté
66
Ivan FRANCOIS 33