Page Personnelle de Vincent Kerhoas Vincent Kerhoas - Professeur Agrégé

LE BUS CAN

Le bus CAN est un une laison série :


Format d’une Trame de Données (Data Frame)

Capture d’une Trame avec Analyseur Logique SALEAE :


Arbitrage

CSMA CD/AMP ( Carrier Sense Multiple Acces with Collision Detection and Arbitration Message Priority).
Avant d’Emettre sur la ligne, le noeud écoute et vérifie qu’aucun transfert n’est en court. Si c’est le cas il attend.

Lorsque le bus est libre, plusieurs noeuds peuvent vouloir émettre. Tous ces noeuds commencent à placer l’identifiant sur le bus.
Le niveau 0 étant dominant, si un noeud tente de forcer le niveau 1 sur la ligne, mais qu’il entend 0, c’est qu’il a perdu l’arbitrage.
Le noeud envoyant un message avec l’identifiant le plus petit gagnera donc le droit d’émettre.

REMARQUE : Format Standard/Etendu

Il est possible de faire cohabiter sur un même réseau des trames au format standard (11 bits) et au format étendu (29 bits).


Filtrage

Tous les messages défilant sur le bus n’intéressent pas forcément tous les noeuds.
Pour éviter d’interrompre un noeud dès qu’un message est placé sur le bus, on peut écrire au niveau du périphérique CAN les identifiants accceptables.


Modèle ISO du Bus CAN

La norme CAN spécifie les couches Physique et Liaison de données uniquement.
D’autres protocoles (devicenet, canopen, ..) spécifient les couches hautes.

La Couche Physique

Le codage NRZ

Le bit Stuffing

Le bus CAN étant une liaison asynchrone, il faut qu’un front soit régulièrement présent pour resynchroniser le récepteur.
L’ajout systématique d’un bit de polarité inversée au bout de 5 bits de même polarité permet de résoudre le problème.
L’émetteur ajoute donc ces bits de stuffing, le récepteur ne les considèrera pas comme de l’information utile.

Une liaison différentielle

L’information du bus CAN est une tension différentielle entre CAN_H et CAN_L.
Cela permet une meilleure immunité face aux perturbations électromagnétiques (les perturbations touchant les deux fils, la différence de potentiel reste la même).

Le driver CAN doit permettre, en plus d’amplifier le signal du µC, de transformer une tension référencée par rapport à la masse en une tension différentielle.

Exemple de circuit d’interface de ligne :


Les autres Trames

Trame de requête (Request Frame)

A identifiant identique, moins prioritaire qu’une trame de données (cf RTR bit)

Trame d’erreur (Error Frame)

En cas de problème (par exemple défaut d’acquittement), interrompt le transfert en court en abandonnant la règle du stuffing.

Le noeud interrompu réémet sa trame ; si l’erreur n’est pas résolue, une autre trame d’erreur sera émise.
Une trame d’erreur active interrompt la communication en cours ; au bout d’un certain nombre de trames d’erreur active émises, on passe en erreur passive.
Une trame d’erreur n’est alors émise que lorsque le bus est libre. Si l’erreur persiste, le noeud responsable est déconnecté.

Trame de Surcharge (Overload Frame)

Identique à une trame d’erreur active.
Interrompt le transfert en cours pour signaler une demande de délai.