
![]()
Télécharger la version : [PDF]
![]()
SOMMAIRE
10/03/06 : correction suite remarque de V. BONIFACIE
![]()
Ce document a pour but de présenter les caractéristiques essentiels du bus/réseau de terrain CAN (Control Area Network). Bien plus qu'un bus au sens électrique, le bus CAN est un réseau à part entière respectant le modèle d'interconnexion des systèmes ouverts OSI de l'ISO. C'est un réseau de terrain aussi car il doit fonctionner dans un environnement limité géographiquement et sévère comme une usine, un atelier, une voiture
Le bus/réseau CAN, standard de fait, est promu à un essor rapide.
Le protocole CAN (Control Area Network) est un protocole de communication série qui supporte des systèmes temps réel avec un haut niveau de fiabilité. Ses domaines dapplication sétendent des réseaux moyens débits aux réseaux de multiplexages faibles coûts. Il est avant tout à classer dans la catégorie des réseaux de terrain utilisés dans l'industrie pour remplacer la boucle analogique 20mA.
La structure du protocole du bus CAN possède implicitement les principales propriétés suivantes :
En étudiant la norme BOSCH on se rend compte que le protocole CAN ne couvre seulement que deux des sept couches du modèle d'interconnexion des systèmes ouverts OSI de l'ISO.
On retrouve ainsi dans le protocole CAN, la couche liaison de données (couche 2) et la couche physique (couche 1) (figure 1). La couche de liaison de données est subdivisée en deux sous-couches (LLC Logic Link Control), et MAC (Medium Access Control), tandis que la couche physique est divisée en trois sous-couches (PLS Physical Signalling), PMA (Physical Medium Access), MDI (Medium Dependent Interface).
La sous-couche MAC représente le noyau du protocole CAN. Elle a pour fonction de présenter les messages reçus en provenance de la sous-couche LLC et daccepter les messages devant être transmis vers la sous-couche LLC. Elle est responsable de :
Elle est supervisée par une entité de supervision qui est un mécanisme apte à faire la distinction entre les dérangements de courtes durées et des pannes permanentes.

Figure 1 : Le protocole CAN et le modèle OSI
La sous-couche LLC soccupe quant à elle :
La couche physique définit comment le signal est transmis et a par conséquent pour rôle dassurer le transfert physique des bits entre les différents nuds en accord avec toutes les propriétés (électriques, électroniques ) du système. Il est évident quà lintérieur dun même et unique réseau la couche physique doit être la même pour chaque nud. Cette couche soccupe donc :
Comme dans la plupart des protocoles, il est nécessaire dutiliser un vocabulaire adapté à la situation. Nous allons donc définir un certain nombre de termes et de règles de fonctionnement concernant le protocole CAN.
Par ailleurs il existe deux types de format (trame standard, trame étendue) pour les trames de données et de requête, et ils diffèrent seulement lun de lautre par lidentificateur (identificateur de 11 bits pour les trames standards, de 29 bits pour les trames étendues).
Le transfert des messages se manifeste et est commandé à laide de quatre types de trames spécifiques et dun intervalle de temps les séparant. Outre les trames de données et de requête, on a donc également des trames derreurs (émises par nimporte quel nud dès la détection dune erreur), et des trames de surcharge (ces trames correspondent à une demande dun laps de temps entre les trames de données et de requête précédentes et successives). Il existe un espace intertrame de 3 bits récessifs entre les trames de données et de requête.
En ce qui concerne le flot de bits des trames du bus CAN, la méthode de codage NRZ (Non Return to Zero) a été retenue. Ceci revient à dire que pendant la durée totale du bit généré son niveau reste constant quil soit dominant ou récessif.
De plus afin de sécuriser la transmission des messages on utilise la méthode dite de Bit-Stuffing (bit de transparence). Cette méthode consiste, dès que lon a émis 5 bits de même polarité sur le bus, à insérer un bit de polarité contraire pour casser des chaînes trop importantes de bits identiques. On obtient ainsi dans le message un plus grand nombre de transitions ce qui permet de faciliter la synchronisation en réception par les nuds. Cette technique est uniquement active sur les champs de SOF, darbitrage, de contrôle, de CRC (délimiteur exclu). Pour un fonctionnement correct de tout le réseau, cette technique doit être implémentée aussi bien à la réception quà lémission.

Figure 2 : Technique de Bit-Stuffing
Une trame de données se décompose en 7 champs différents (figure 3) :

Figure 3 : Format de la trame CAN
Le début de trame nest effectif que si le bus était précédemment au repos. Tous les nuds du réseau doivent se resynchroniser sur le bit de SOF.
Dans une trame standard, le champ darbitrage est composé des 11 bits de lidentificateur (figure 4) et dun bit de RTR (Remote Transmission Request) qui est dominant pour une trame de données et récessif pour une trame de requête. On ne détaillera pas ici le champ darbitrage pour une trame. Ceux qui désire voir plus de détails sur ce point peuvent faire appel à la norme BOSCH. Pour lidentificateur les bits sont transmis dans lordre, de ID_10 à ID_0 (le moins significatif est ID_0). Par ailleurs les 7 bits les plus significatifs (de ID_10 à ID_4) ne doivent pas tous être récessifs. Pour des raisons de compatibilité avec des anciens circuits, les 4 derniers bits de lidentificateur (ID_3 à ID_0) ne sont pas utilisés, ce qui réduit le nombre de combinaisons possibles.
Figure 4 : Champ arbitrage
Le champ de contrôle est composé de 6 bits (figure 5). Les deux premiers (r1 dans une trame standard, et r0) sont des bits de réserve et leur rôle est dassurer des compatibilités futures ascendantes (par exemple avec les trames étendues). Les quatre derniers bits permettent de déterminer le nombre doctets de données contenus dans le champ de données pour une trame de données ou bien le nombre doctets de données dont a besoin un nud du réseau lors dune trame de requête. Le nombre doctets de données ne peut pas excéder la valeur de 8.
Taille des données en octets
DLC (Data Length Code)
DLC3
DLC2
DLC1
DLC0
0
D
D
D
D
1
D
D
D
R
2
D
D
R
D
3
D
D
R
R
4
D
R
D
D
5
D
R
D
R
6
D
R
R
D
7
D
R
R
R
8
R
D
D
D
D : bit Dominant, R : bit Récessif
Tableau 1 : Codage des bits DLC suivant la taille des données en octets
Figure 5 : Champ contrôle
Le champ de données a une longueur qui peut varier de 0 à 64 bits (0 à 8 octets). Cette longueur a été déterminée lors de lanalyse du champ de contrôle. Dans le cas dune trame de requête, le champ de données est vide.
Le champ de CRC est composé de 16 bits (figure 6). La séquence CRC calculée est contenue dans les 15 premiers bits tandis que le dernier bit est un délimiteur de fin de champ de CRC (bit toujours récessif).
Ce champ de CRC permet de sassurer de la validité du message transmis, et tous les récepteurs doivent sastreindre à ce procédé de vérification. Seuls les champs de SOF, darbitrage, de contrôle et de données sont utilisés pour le calcul de la séquence de CRC. Les codes utilisés par les contrôleurs de bus CAN sont des codes linéaires de. De fait la longueur maximale du début de trame ne doit pas excéder 215 bits pour une séquence de CRC de 15 bits. Le nombre maximal derreurs détectées dans la trame est de 5.
La séquence de CRC est calculée par la procédure suivante :

Figure 6 : Champ CRC
La réalisation du module de calcul de CRC est particulièrement aisée à laide de registres à décalages. La norme BOSCH propose le programme informatique correspondant à lalgorithme précédemment décrit :
Le champ dacquittement possède 2 bits (figure 7). La station émettrice de la trame laisse le bus libre pendant 2 coups dhorloge (ce qui correspond à lémission de deux bits récessifs) et elle passe en mode réception pendant le premier coup dhorloge.
Le premier bit correspond à lacquittement par lensemble des nuds ayant reçu le message. Si aucune erreur na été détectée par un nud (après calcul du CRC), ce dernier émet un bit dominant sinon il émet une trame derreur. La station émettrice du message originel doit alors être capable de réagir en fonction de lémission dun bit dominant ou non par les autres stations sur le premier bit du champ dacquittement.
Le second bit est un bit délimiteur dacquittement qui doit toujours être récessif.

Figure 7 : Champ acquittement
Ce champ de fin de trame est constitué de 7 bits récessifs, ce qui déroge à la règle de Bit-Stuffing. Ce champ étant fixe, il est nécessaire de désactiver le codage (à lémission) et le décodage (à la réception) suivant la règle du Bit-Stuffing.
Une trame de requête est constituée de la même manière quune trame de données sauf que le champ de données est vide (figure 8).
Dans le champ darbitrage, le bit de RTR est récessif. Par conséquent si deux nuds émettent chacun une trame possédant le même identificateur (cest à dire quun nud émet une trame de données et lautre une trame de requête), larbitrage sur le bit de RTR va donner la priorité à la trame de données.
Si un nud a besoin dun certain nombre de données, il va émettre une trame de requête dès que le bus sera libre en prenant soin dindiquer dans le champ de contrôle le nombre doctets de données dont il a besoin.
Les règles de construction des autres divers champs dune trame de requête sont les mêmes que dans le cas dune trame de données.

Figure 8 : Trame de requête
Lors de lémission dune trame sur le bus, des erreurs de transmission peuvent venir perturber le bon fonctionnement des différents utilisateurs du bus. Lerreur peut venir dun nud, et empêcher le réseau de fonctionner correctement. Pour cela, des méthodes de détection derreurs de transmissions sont prévues par le protocole CAN.
Le Bit Error :
Chaque fois quun émetteur envoie un bit sur le bus, il vérifie en même temps si le niveau émis sur le bus correspond à celui quil désire envoyer en faisant une surveillance du bus. Si le niveau ne correspond pas, il le signale par un Bit Error.
Cependant, le Bit Error nest pas signalé dans les cas suivants :
- Aucune erreur de Bit Error nest signalée lorsquun bit dominant est envoyé dans le champ darbitrage à la place dun bit récessif. Le bit dominant signifie simplement une perte darbitrage.
- De même, pour un bit dominant lors de lacknowledge slot, à la place dun bit récessif.
- Un émetteur envoyant un flag derreur passive (bit récessif) et recevant un bit dominant, ne doit pas signaler un Bit Error.
Lerreur de Stuffing (Stuff Error) :
Une erreur de Stuffing est détectée à chaque fois quil y a 6 bits ou plus consécutifs de même signe sur le bus.
Cependant, une erreur de Stuffing ne doit être signalée que dans les champs didentificateurs, de commande et de CRC. La règle du Bit-Stuffing ne sappliquant plus après la fin du CRC. En aucun cas, une erreur de Bit-Stuffing ne doit être signalée dans le champ de fin de trame ou dans le champ dacquittement.
Lerreur de Cyclic Redundancy Code (CRC Error) :
Si la valeur du CRC calculée par le récepteur est différente de celle envoyée par lémetteur, il y a erreur de CRC (CRC Error).
Lerreur dAcknowledge Delimiter :
Une erreur dAcknowledge Delimiter est signalée lorsque le récepteur nobserve pas un bit récessif lors du champ de Acknowledge Delimiter. Il en est de même pour le CRC Delimiter.
Lerreur de Slot Acknowledge (Acknowledgment Error) :
Une erreur de Slot Acknowledge est signalée par lémetteur sil ne lit pas un bit dominant lors du champ de slot acknowledge.
La figure 9 résume les différents types derreurs et leur validité suivant lendroit où lon se trouve dans la trame.

Figure 9 : Les sources d'erreur dans la trame CAN
La trame derreur :
La trame derreur est constituée de deux champs principaux :
La figure 10 montre de quelle manière est construite la trame derreur.

Figure 10 : Construction de la trame d'erreur
Le champ des drapeaux peut être constitué de deux sortes de drapeaux :
Les trames diffèrent suivant le type de drapeaux quelles contiennent. Les figures 11 et 12 représentent les deux types de trame avec leurs drapeaux respectifs.

Figure 11 : Trame d'erreur active

Figure 12 : Trame d'erreur passive
La trame derreur active :
Elle est formée de six bits dominant consécutifs pour le champ de drapeau suivi de huit bits récessifs pour le délimiteur. Par construction, la trame derreur brise la règle du Bit-Stuffing. Les autres récepteurs vont donc se mettre à émettre des trames derreurs actives (sils sont en mode derreur active) à la fin du drapeau de la première station qui a émis la trame derreur. Toutes les stations vont donc émettre à tour de rôle la trame derreur. La dernière station aura en charge démettre le champ dError Delimiter, les autres champs ayant été remplacés par les bits dominants des drapeaux émis.
Remarque :
La norme limite le nombre de bits dominant consécutifs à 12 bits.
La trame derreur passive :
La trame est formée de six bits récessifs pour le drapeau et de huit bits récessifs pour le délimiteur. Le champ du drapeau brise de nouveau la règle du Bit-Stuffing et les émetteurs envoient à tour de rôle le Passive Error Flag (sils sont en mode derreur passive). Mais une trame dActive Error Flag reste prioritaire sur une trame de Passive Error Flag si elles sont envoyées en même temps. En effet, Les bits dominants de lActive Error Flag remplacent les bits récessifs du Passive Error Flag. La fin de la trame quant à elle ne change pas puisquelle est formée dans les deux cas de huit bits récessifs.
Le recouvrement des erreurs est assuré par la retransmission automatique de la trame incriminée jusqu'à ce que lémission de cette trame seffectue sans erreur. La validité du message est acquise sil ny a aucune erreur depuis le SOF (Start Of Frame) jusqu'à la fin de trame.
Si lémetteur narrive pas à émettre sa trame correctement, il essaye de nouveau de lémettre jusqu'à ce que son compteur derreur passe en mode derreur passive.
La gestion des modes derreur :
Suivant le nombre derreur quun nud comptabilise, létat du mode de ce nud peut différer. Un compteur mémorise le nombre derreur rencontré lors de la transmission des trames sur le bus. Deux compteurs séparés régissent respectivement le nombre derreurs en émission et en réception. Il se nomme :
Lorsque le nombre derreur devient trop important et que le gestionnaire est déjà en erreur passive, le nud se met en Bus Off et se déconnecte du bus. Il ne reçoit ni émet à ce moment là aucune trame circulant sur le bus CAN.
Le passage dans les différents modes seffectue suivant la valeur des compteurs comme le montre la figure 13.

Figure 13 : Compteur d'erreur et état d'un nud
Les règles de passages dans les modes :
Lincrémentation et la décrémentation des compteurs ne se fait pas avec le même rapport. En effet, le compteur sincrémente plus vite lorsqu'il y a une erreur quil ne se décrémente lorsque la trame reçue est correcte.
Les règles dincrémentation et de décrémentation des compteurs sont les suivantes :
- Le compteur de réception est incrémenté de 1 si :
- Le compteur de réception est incrémenté de 8 si :
- Le compteur de transmission est incrémenté de 8 si :
- Les compteurs démission et de réception sincrémentent de 8 si :
- Le compteur de réception est décrémenté de 1 si :
- Le compteur démission est décrémenté de 1 si :
Les modes derreurs :
- Mode derreur active :
Le gestionnaire de protocole est en mode derreur active si le compteur de réception et le compteur démission ont une valeur inférieure à 127. Dans ce mode, le nud émet des trames derreurs actives (Active Error Flag).
- Mode derreur passive :
Le gestionnaire de protocole est en mode derreur passive si le compteur de réception ou le compteur démission est supérieur ou égal à 128 et inférieur à 255. Dans ce mode, le nud émet des trames derreurs passives (Passive Error Flag).
- Mode Bus Off :
Le gestionnaire de protocole est en mode Bus Off si la valeur d'un des deux compteurs est > 255. Le nud est alors totalement déconnecté du bus (les drivers de lignes ne sont plus actifs). Il sort de cet état de Bus Off avoir reçu 127 trames de onze bits récessifs.
La trame de surcharge indique aux autres nuds quune station est surchargée. Elle est formée de deux champs :
La figure 14 représente la trame.

Figure 14 : Trame de surcharge
Une trame de surcharge est émise sur le bus si :
Dès quune trame de surcharge est émise, les autres nuds voient sur le bus une suite de six bits dominants qui ne respectent pas la règle du Bit-Stuffing. Ils émettent à leur tour une trame de surcharge. Seulement deux trames de surcharges consécutives sont autorisées sur le bus (pas plus de 12 bits dominants consécutifs émis sur le bus).
Elle sépare les trames de données ou de requêtes entre elles. Il sagit dune suite de plusieurs bits récessifs.
Le champ dintermission est une suite de 3 bits récessifs consécutifs. Durant la période dintermission, lémission de trame nest pas autorisée. Les gestionnaires de protocole ne sont autorisés à signaler que les conditions de surcharge.
Le champ de Bus Idle est celui du bus quand il est au repos. Le niveau de repos est le niveau récessif et aucune trame ne circule sur le bus.
Le champ de suspension de transmission est émis par un nud lorsque celui-ci envoie une trame derreur passive.
La figure 15 représente les différents champs.

Figure 15 : Période d'intertrame
Pour la gestion de lénergie sur le bus, les drivers de ligne peuvent être désactivés lorsqu'il ny a plus de trames sur le bus.
Pour activer ces drivers sur le bus, la station devra observer 11 bits récessifs à la suite. La procédure ainsi décrite est la procédure de réveil appelée Wake-up. Un identificateur a été réservé à cette fonction pour éviter de perdre un trop grand nombre de trames lors de la reconnexion sur le bus.
Lors des démarrages dune station sur le bus, le Start-up se charge de connecter les drivers de lignes et dobserver la séquence voulue pour commencer à émettre ou à recevoir des trames du bus.
Dans le protocole CAN le code de ligne (en bande de base) choisi pour la transmission des données sur le bus est le code NRZ (Non Return to Zero). La figure 16 donne un exemple de codage.

Figure 16 : Codage NRZ du bus CAN
Remarque :
La règle du Bit-Stuffing ne modifie en aucun cas le procédé de codage de ligne.
Comme le montre la figure 16, les transitions des bits seffectuent sur chaque front montant de lhorloge. Dans le protocole CAN, une période dhorloge correspond à ce que lon appelle le Nominal Bit Time.
Le Nominal Bit Time représente en fait la durée du bit sur le bus. Cette durée est, comme nous lavons vu, étroitement liée à la période de lhorloge. 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 circulant sur le bus.
Ainsi, la durée du bit time de chaque circuit est construite à partir dun nombre déterminé de périodes dhorloge issue de lhorloge interne de chaque circuit CAN.
La norme BOSCH décrit avec précision la composition de ce Nominal Bit Time qui est divisé en plusieurs segments :
La figure 17 donne un aperçu de ces divers composants et de leur agencement.

Figure 17 : Décomposition du nominal Bit Time
En fait, le Nominal Bit Time, exprimé en s, correspond évidemment à linverse du débit sur le bus. Nous avons donc la formule suivante:
Time Quantum : Le Time Quantum est une unité de temps qui est construite à partir de la période de loscillateur interne de chaque nud. Les fréquences de fonctionnement du bus CAN sétendant de 125 KHz à 1 MHz et celle des oscillateurs étant de plusieurs MHz, le Time Quantum représente plusieurs périodes dune horloge doscillateur. La période dhorloge de loscillateur est appelée minimum Time Quantum. La valeur du pré scalaire m détermine le rapport entre le Time Quantum et le Minimum Time Quantum :
La valeur de m peut varier de 1 à 32. La figure 18 représente la construction dun Time Quantum à partir dune période dhorloge interne au circuit.
Figure 18 : Construction du Time Quantum
Dans lexemple ci-dessus, le facteur m est égal à 4.
|
Segment |
Durée en Time Quanta |
|
Synchronisation - SYNC_SEG |
1 |
|
Propagation - PROP_SEG |
1 à 8 |
|
Buffer phase1 - PHASE_SEG1 |
1 à 8 |
|
Buffer phase1 - PHASE_SEG2 |
1 à 8 |
Le nombre de Time Quanta dans un Nominal Bit Time peut ainsi varier de 8 à 25. La figure 19 donne le nombre de Time Quanta possible par segment de Nominal Bit Time.

Figure 19 : Durée des différents segments
Le choix du nombre de Time Quanta pour chaque segment dépend de la fréquence de loscillateur. Un nombre important de Time Quanta par segment augmente la précision de la synchronisation des différents nuds sur le bus.
Chaque nud doit produire un nominal Bit Time pour pouvoir recevoir et émettre les données circulant sur le bus en synchronisme avec les autres circuits. En effet, si les Nominal Bit Time de chaque nud ne sont pas du tout synchronisés, la valeur lue sur le bus au moment de léchantillonnage peut ne pas être la valeur correcte au bon moment, comme le représente la figure 20. Ces retards peuvent être gênants, dans la phase dacquittement de la trame où il y a peu de temps pour finir de calculer le CRC et envoyer un bit à létat dominant lors de lAcknowledge Slot pour confirmer que la trame a bien été reçue.

Figure 20 : Problème de la synchronisation
La norme BOSCH prévoit donc des règles de synchronisation du Nominal Bit Time de chaque circuit pour palier aux inconvénients exposés ci-dessus.
Pour corriger les dérives du Nominal Bit Time, il faut placer des butées que la dérive de la période ne pourra pas dépasser. La butée en question sappelle le RJW : Resynchronisation Jump Width. Le RJW est une variable entière programmée à une valeur comprise entre 1 et le minimum de (4, segment de phase1).
La valeur est mise dans le registre du circuit lors de linitialisation et ne change pas en cours de fonctionnement.
Lerreur de phase (PHASE_ERROR) est détectée lorsqu'une transition dun bit dominant à récessif ou dun bit récessif à dominant ne seffectue pas à lintérieur du segment de synchronisation. Une variable notée e sert à quantifier cette erreur de phase et fournit le signe. Le calcul de e est fait de la manière suivante :
- e = 0, si la transition seffectue dans le segment de synchronisation (SYNC_SEG).
- e >0, si la transition seffectue avant le point déchantillonnage (Sample Point).
- e <0, si la transition seffectue après le point déchantillonnage (Sample Point).
La règle simple évoquée ci-dessus sert de base pour resynchroniser les différents Nominal Bit Time de chaque circuit connecté au bus. La règle sappuie sur les transitions des bits récessifs à dominant ou dominant à récessif qui arrivent au moins tous les 5 bits de même signe consécutifs, à cause de la règle du Bit-Stuffing.
Lerreur de phase e est donc calculée par rapport au Sample Point qui détermine si le PHASE_SEG1 doit être allongé ou si le PHASE _SEG2 doit être raccourci pour que la prochaine transition seffectue dans le SYNC_SEG. La figure 21 donne un exemple et les conséquences des emplacements des transitions sur la longueur des segments du Nominal Bit Time.

Figure 21 : Erreur de phase
La hard-synchronisation :
Leffet dune hard-synchronisation est de faire repartir le Nominal Bit Time depuis le segment de synchronisation (SYNC_SEG) à chaque fois quun ordre de hard-synchronisation est donné par le gestionnaire du protocole. Le Nominal Bit Time en cours est abandonné et un nouveau Nominal Bit Time repart dès le Time Quantum suivant, depuis le segment de synchronisation (SYNC_SEG).
La resynchronisation :
Le calcul et lordre de resynchronisation sont donnés à partir de la valeur de lerreur de phase e, et dépendent aussi de la valeur du RJW :
- Si lerreur de phase est nulle (e = 0, la transition est dans le SYNC_SEG), leffet de la resynchronisation est le même que celui de la hard-synchronisation.
- Si lerreur de phase est positive et inférieure en valeur absolue à RJW (0<e<RJW), le PHASE_SEG1 sera rallongé de e.
- Si lerreur de phase est négative, mais inférieure à RJW en valeur absolue (e<0 et ç eç <RJW) le PHASE_SEG2 est raccourci de e.
- Si lerreur de phase est positive et supérieure ou égale RJW (e>0 et e>RJW), le PHASE_SEG1 est rallongé de RJW.
- Enfin, si lerreur de phase est négative et supérieure à RJW (en valeur absolue -e<0 et ç eç >RJW) le PHASE_SEG2 est raccourci de RJW.
Le tableau suivant résume les règles évoquées ci-dessus.
|
Erreur de phase |
Effet sur PHASE_SEG1 |
Effet sur PHASE_SEG2 |
|
0<e<RJW |
Allongé de e |
|
|
E<0 et ç eç <RJW |
Raccourci de e |
|
|
e>0 et e>RJW |
Allongé de RJW |
|
|
E<0 et ç eç >RJW |
Raccourci de RJW |
Tableau 2 : Règles de resynchronisation
Les règles de synchronisation :
Un seul type de synchronisation est autorisé pour un même Nominal Bit Time.
Hard-synchronisation :
- Une hard-synchronisation est faite à chaque fois quune transition seffectue dans le segment de synchronisation SYNC_SEG.
- Une hard-synchronisation est effectuée lorsque le bus est au repos (bus idle) et quune transition dun bit récessif à un bit dominant est détectée, autrement dit lors dun SOF (Start Of Frame).
Resynchronisation :
- Une resynchronisation est effectuée si une transition est détectée au point déchantillonnage précédent et que la valeur lue sur le bus immédiatement après la transition est différente de celle lue sur le bus avant la transition.
- Les transitions des bits récessifs à dominants peuvent être utilisées pour la resynchronisation si elles respectent la règle précédente, sauf si un nud émet un bit dominant qui ne suit pas la règle de resynchronisation avec une transition de récessif à dominant et une erreur de phase positive. La règle ne sapplique que si les transitions des bits de récessif à dominant sont utilisées pour la resynchronisation.
La transmission des données est effectuée sur une paire filaire différentielle. La ligne est donc constituée de deux fils :

Figure 22 : Paire filaire du bus CAN
Le CAN est un bus de terrain, soumis à des parasites importants. La transmission en paire différentielle permet de s'affranchir de ces problèmes. Les montages différentiels ont en plus un fort taux de réjection en mode commun CMRR.
Pour les niveaux physiques sur le bus, il est important de distinguer les deux types de transmission possibles :
Le tableau ci-dessous résume les principales différences entre les deux types de bus notamment sur les débits supportés.
|
Paramètres |
CAN low speed |
CAN high speed |
|
Débit |
125 kb/s |
125 kb/s à 1 Mb/s |
|
Nombre de nuds sur le bus |
2 à 20 |
2 à 30 |
|
Courant de sortie (mode émission) |
> 1 mA sur 2,2 kW |
25 à 50 mA sur 60W |
|
Niveau dominant |
CAN H = 4V CAN L = 1V |
CAN H = 3,5 V CAN L = 1,5 V |
|
Niveau récessif |
CAN H = 1,75V CAN L = 3,25V |
CAN H = 2,5 V CAN L = 2,5 V |
|
Caractéristique du câble |
30 pF entre les câbles de ligne |
2*120W |
|
Tensions dalimentation |
5V |
5V |
Tableau 2 : Les 2 types de bus CAN

Figure 23 : Niveaux de tension du bus CAN low speed

Figure 24 : Niveaux de tension du bus CAN high speed
Le schéma dun circuit CAN relié au bus est présenté figure 25.

Figure 25 : Schéma de principe d'un circuit CAN
Le débit du réseau est calculé par rapport au Nominal Bit Time. Il sétend de 125 kb/s à 1 Mb/s suivant le type de bus utilisé. Les valeurs ci-dessus correspondent au débit dit brut du réseau, cest à dire en comptant tous les bits qui sont transmis sur le bus.
Le débit dit net ne tient compte que des bits transportant des informations utiles. Le débit net est en fait le débit utile du bus en ne comptant pas tous les bits tels que le SOF, les Acknowlegde Delimiter, les bits de Bit-Stuffing...
Le temps de latence est un intervalle de temps qui représente la durée écoulée entre le moment où une demande de requête est formulée et linstant où la réponse est présente sur le bus. Le temps de latence dépend du nombre de nuds maîtres désirant effectuer un transfert de données.
![]()
[1] Dominique PARET. Le bus CAN Controller Area Network. 1997
[2] BOSCH. Norme CAN.
[3] Pascal BORGHESI, Cyril RAPIN. Projet de fin d'étude ENSEIRB. 1998