Back | << | Index | >> |
Le bus CAN est un une laison série :
Capture d’une Trame avec Analyseur Logique SALEAE :
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).
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.
La norme CAN spécifie les couches Physique et Liaison de données uniquement.
D’autres protocoles (devicenet, canopen, ..) spécifient les couches hautes.
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.
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 :
A identifiant identique, moins prioritaire qu’une trame de données (cf RTR bit)
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é.
|
|
Identique à une trame d’erreur active.
Interrompt le transfert en cours pour signaler une demande de délai.
Back | << | Index | >> |