Publié le

Décodage des bus CAN et CAN FD

Décodage des bus CAN et CAN FD

Le bus CAN (Controller Area Network) est une norme de données série développée à l’origine dans les années 1980 par Robert Bosch GmbH pour les applications automobiles. Aujourd’hui, il est également largement utilisé dans le contrôle des processus industriels et dans les applications aérospatiales.

Il permet aux microcontrôleurs et aux appareils électroniques de communiquer entre eux sans passer par un ordinateur hôte et assure un transfert de données rapide et fiable dans des environnements électriquement bruyants, à faible coût et avec un câblage minimal.

Le CAN utilise une signalisation différentielle pour assurer un haut niveau d’immunité aux bruits électriques.

En 1991, Bosch a publié la caractéristique pour CAN 2.0, qui détaille deux formats :

CAN 2.0A est le format standard avec un identifiant de 11 bits.
CAN 2.0B est le format étendu avec un identifiant de 29 bits.
En 1993, l’ISO (Organisation internationale de normalisation) a publié la norme CAN ISO 11898, qui a ensuite été restructurée en trois parties :

ISO 11898-1 qui couvre la couche de liaison de données
ISO 11898-2 qui couvre la couche physique du CAN pour le CAN à grande vitesse (jusqu’à 1 Mbit/s).
ISO 11898-3, qui couvre la couche physique CAN pour le CAN à faible vitesse et tolérant aux pannes (jusqu’à 125 kbit/s).

Bosch a ensuite publié CAN FD 1.0 ou CAN with Flexible Data-rate, qui a été incorporé dans la norme ISO 11898-1:2015. Cette caractéristique permet d’augmenter la longueur des données ainsi que de passer éventuellement à un débit plus rapide une fois l’arbitrage décidé. Le CAN FD est inversement compatible avec les réseaux CAN 2.0 existants, de sorte que les nouveaux dispositifs CAN FD peuvent coexister sur le même réseau que les dispositifs CAN existants.

Câblage

De nombreux dispositifs peuvent être connectés au bus CAN, qu’il s’agisse d’unités de contrôle électronique complexes ou de simples dispositifs d’E/S. Chaque dispositif est appelé nœud. Chaque dispositif est appelé nœud.

Chaque nœud CAN transmet de manière différentielle sur deux fils : CAN High et CAN Low.

Signalisation

CAN transmet de manière différentielle sur deux lignes, CAN High et CAN Low. Il existe deux états logiques :

Dominant – 0 logique
Récessif – Logique 1
Les niveaux de tension varient en fonction des spécifications. Nous nous intéressons ici au CAN à grande vitesse.

Lors d’une transmission récessive (logique 1), le bus n’est pas activement piloté et reste à environ 2,5 V.

Lors d’une transmission dominante (logique 0), CAN High est dirigé vers 5 V (ou Vcc) et CAN Low est dirigé vers 0 V.

Arbitrage

Les données CAN sont envoyées dans des trames commençant par un 0 dominant suivi d’un identificateur, qui constitue la base de l’arbitrage (priorité) lorsque deux nœuds ou plus tentent de transmettre en même temps.

Chaque nœud se voit attribuer un identificateur d’une longueur de 11 bits (CAN 2.0A) ou de 29 bits (CAN 2.0B).

Le tableau montre trois nœuds tentant d’émettre en même temps, chacun commençant par des 0 dominants. Lorsqu’un nœud transmet un 1 récessif mais voit que le bus reste à la dominante 0, il réalise qu’il y a une contention et cesse de transmettre et attend la prochaine occasion de transmettre.

De cette manière, le nœud dont l’ID est le plus faible gagne l’arbitrage et a la priorité pour transmettre le reste de la trame.

 

Trames

Le protocole CAN comporte quatre types de trames :

Trame de données : une trame contenant des données de nœud à transmettre.
Trame distante : une trame demandant la transmission d’un identificateur spécifique.
Trame d’erreur : trame transmise par tout nœud détectant une erreur.
Trame de surcharge : une trame pour injecter un délai entre les données et/ou la trame distante.
Le bit RTR (Remote transmission request) détermine s’il s’agit d’une trame de données (0) ou d’une trame distante (1).

Un réseau CAN peut être configuré pour fonctionner avec deux formats de trame différents : le format de trame de base (CAN 2.0A et CAN 2.0B) qui prend en charge les identificateurs de 11 bits, et le format de trame étendu (CAN 2.0B uniquement) qui prend en charge les identificateurs de 29 bits en permettant l’ajout d’une extension d’identificateur de 18 bits.

Un bit d’extension d’identificateur (IDE) détermine si l’extension d’identificateur de 18 bits est utilisée.

Le tableau montre le format d’une trame de données CAN avec le format de base (11 bits) sans bourrage de bits.

Le code de longueur des données indique la longueur des données en octets ; dans ce cas, il s’agit d’un octet.

CRC signifie contrôle de redondance cyclique, utilisé pour la détection des erreurs.

Bit de slot Ack – Tous les nœuds qui reçoivent une trame sans trouver d’erreur transmettent un 0 dominant, qui remplace un 1 récessif envoyé par l’émetteur. Si l’émetteur détecte un 1 récessif, il sait que la trame n’a pas été reçue correctement.

La fin de la trame est confirmée par la transmission de 7 1 récessifs.

Bourrage de bits

Afin de garantir un nombre suffisant de transitions pour maintenir la synchronisation, un bit de polarité opposée est inséré après cinq bits consécutifs de même polarité. Le bourrage de bits ne se produit pas pendant le délimiteur CRC, le champ ACK et la fin de la trame.

Dans les champs où le bit-stuffing est utilisé, six bits consécutifs du même type (000000 ou 111111) sont considérés comme une erreur et un drapeau d’erreur actif composé de six bits dominants consécutifs peut être transmis par un nœud lorsqu’une erreur a été détectée.

CAN FD

Bosch a suivi la norme CAN avec CAN FD 1.0 ou CAN with Flexible Data-Rate, qui a ensuite été intégré à la norme ISO 11898-1:2015. Cette caractéristique permet d’augmenter la longueur des données ainsi que de passer éventuellement à un débit plus rapide une fois l’arbitrage décidé.

CAN FD répond au besoin croissant de transférer plus de données, plus rapidement, dans les systèmes automobiles (et autres) de plus en plus complexes.

CAN FD est inversement compatible avec les réseaux CAN 2.0 existants, de sorte que les nouveaux dispositifs CAN FD peuvent coexister sur le même réseau que les dispositifs CAN classiques.

Différences de protocole entre CAN et CAN FD

Le tableau montre la structure d’une trame CAN FD.

L’arbitrage et l’utilisation des formats de trame Base et Extended sont identiques dans le CAN classique et le CAN FD.

Comme CAN FD n’utilise pas de trames distantes, le bit RTR utilisé dans CAN est redondant et est remplacé par le bit de substitution de requête distante (RRS), qui est toujours transmis dominant (0).

Le bit IDE est utilisé de la même manière.

Le bit de réserve dans CAN devient maintenant le bit FDF (Flexible Data Format) et est un 0 dominant pour indiquer que la trame est au format CAN classique. Les trames envoyées au format CAN FD sont indiquées par un 1 récessif.

Vient ensuite un bit de réserve pour une utilisation future.

Vient ensuite le bit BRS (Bit Rate Switch). Si BRS est envoyé de manière dominante, le débit binaire reste le même sur l’ensemble de la trame. Si le BRS est récessif, un débit plus élevé sera transmis après ce bit jusqu’au délimiteur CRC inclus.

Le bit ESI (Error State Indicator) est une transmission dominante pour les erreurs actives, et une transmission récessive pour les erreurs passives.

Code de longueur des données

Le nombre d’octets dans le champ de données est indiqué par le code de longueur de données (DLC). Son codage est différent dans CAN et dans CAN FD. Les neuf premiers codes sont identiques, mais les codes suivants, qui indiquent tous un CHAMP DE DONNÉES de huit octets dans le CAN, indiquent des CHAMP DE DONNÉES plus longs dans le CAN FD.
Le bit ESI (Error State Indicator) est une transmission dominante pour les erreurs actives, et une transmission récessive pour les erreurs passives.

 

 

Champ CRC CAN FD

Les données étant plus longues avec le CAN FD, plus de bits sont nécessaires pour le contrôle CRC. Si la trame contient 16 octets ou moins, un CRC de 17 bits est utilisé ; et si la trame CAN contient plus de 16 octets, un CRC de 21 bits est utilisé.

Après le champ CRC, la structure d’acquittement et de fin de trame est la même que pour le CAN classique.

Débogage du bus CAN

Des erreurs peuvent se produire en raison des inductances, des bobines et des dispositifs de puissance qui peuvent provoquer des pics de tension importants, des bruits et des sonneries. Un nombre croissant d’ordinateurs et de dispositifs intégrés sont ajoutés aux bus CAN des automobiles et, à mesure que de nouveaux nœuds sont ajoutés, le temps de bus disponible est de plus en plus occupé. Lorsque le trafic atteint environ 40 % du temps de bus, des erreurs peuvent commencer à se produire. À ce stade, un oscilloscope peut être nécessaire pour déboguer le réseau.

Pour surveiller et trouver des défauts sur un bus CAN, il est important de disposer d’un oscilloscope doté d’une mémoire profonde pour capturer une grande fenêtre temporelle avec plusieurs trames de données. L’instrument peut alors traiter l’ensemble de la forme d’onde acquise et zoomer pour analyser les paquets de données.

Nous recommandons que l’instrument dispose d’une bande passante dix fois supérieure à la vitesse de transmission du CAN, afin d’analyser les temps de montée et les éventuelles conditions de défaillance.

Première étape – le sondage

CAN est un signal différentiel, CAN Low étant l’inverse de CAN High. La visualisation de la différence entre les deux élimine toute interférence en mode commun rencontrée par le signal au cours de la transmission.

Les meilleurs résultats seront obtenus en acquérant la différence de signal entre CAN Low et CAN High à l’aide d’une sonde différentielle ou d’un oscilloscope à entrée différentielle tel que le PicoScope 4444.

Le signal peut toujours être acquis à l’aide d’une sonde asymétrique connectée à CAN Low ou CAN High, mais tout bruit de mode commun sera affiché et pourra provoquer des erreurs de décodage sur l’oscilloscope qui n’affecteraient pas le récepteur CAN.

Deuxième étape – acquisition du signal de données CAN 

Réglez la longueur de la mémoire sur une valeur suffisante pour acquérir autant de trames que nécessaire, et avec la résolution requise pour résoudre les bits individuels.

Vous pouvez également utiliser l’index de la mémoire tampon pour capturer de courtes rafales de trames tout en ignorant les temps morts entre ces rafales.

 

 

Troisième étape – configuration d’un décodeur 

Sélectionnez Serial Decoding dans le menu Tools, cliquez sur Create, puis sélectionnez CAN.

 

 

 

 

 

 

Sélectionnez Canal > Données > A et Configuration soit Bas ou Haut si vous sondez à une extrémité, soit Haut si vous sondez de manière différentielle.

Le PicoScope calculera automatiquement le seuil optimal, l’hystérésis et le débit en bauds, mais ces valeurs peuvent être personnalisées si nécessaire.

Dans le menu Affichage, cochez Graphique ou Tableau, ou les deux, puis sélectionnez le format requis – hexa/binaire/décimal/ASCII – et cliquez sur OK.

 

Si l’option Graphique est sélectionnée, une trace codée en couleur apparaît dans l’affichage graphique, en corrélation temporelle avec les données acquises.

Si l’option Tableau est sélectionnée, toutes les données sont présentées sous forme de tableau. Le tableau offre plusieurs fonctions utiles :

  • Double-cliquez sur un cadre dans le format graphique et le cadre correspondant sera mis en évidence dans le tableau.
  • Sélectionnez Exporter pour enregistrer les données du tableau au format .csv.
  • Configurez un fichier de liaison pour que les données du tableau puissent être affichées sous la forme d’un texte significatif.
  • Filtrez le tableau pour rechercher des valeurs spécifiques dans n’importe quel champ, par exemple des CRC non valides.

Résumé

Le décodage CAN et CAN FD est une fonction standard du logiciel PicoScope et peut être utilisé avec tous les oscilloscopes PicoScope en temps réel.