Débit CAN : calcul des registres de temps de bit (MCP2515, PIC, dsPIC, MCP2518FD)

Illustration : Débit CAN

Écrit par

dans

Le CAN ne se règle pas avec un simple diviseur : chaque bit est découpé en quanta de temps répartis en segments, et le point où le bit est lu doit tomber au bon endroit. Les contrôleurs Microchip l’expriment chacun avec leurs propres registres. L’outil calcule toutes les combinaisons valides pour votre horloge et donne directement les valeurs à écrire.

Registres conseillés

–

Quantum de temps

–

Segments

–

Tolérance d’horloge

–

BRPTQTQ / bitProp / PS1 / PS2 / SJWÉch.Erreur débitToléranceRegistres

Le découpage d’un bit

Bit = Sync (1 TQ) + Prop + Phase 1 + Phase 2
TQ = 2 × (BRP + 1) / Fosc      (MCP2515, PIC18 ECAN, dsPIC ECAN)
TQ = (BRP + 1) / SYSCLK        (MCP2517FD/18FD, dsPIC33C CAN FD)
Point d'échantillonnage = (1 + Prop + Phase 1) / nombre de TQ

Le segment de propagation absorbe le temps d’aller-retour du signal sur le bus et dans les transceivers ; les segments de phase servent à la resynchronisation. Le SJW (synchronization jump width) est la correction maximale qu’un nœud peut appliquer à chaque front : plus il est grand, plus le bus tolère d’écart entre les horloges des nœuds.

Les registres

ContrôleurRegistresContenu
MCP2515, MCP25625CNF1, CNF2, CNF3SJW et BRP ; BTLMODE, SAM, PHSEG1, PRSEG ; PHSEG2 (valeurs moins 1)
PIC18 ECANBRGCON1, BRGCON2, BRGCON3Même organisation que le MCP2515
dsPIC33F/E, PIC24H ECANCiCFG1, CiCFG2SJW, BRP ; SEG2PH, SEG2PHTS, SAM, SEG1PH, PRSEG
MCP2517FD, MCP2518FDCiNBTCFG, CiDBTCFG, CiTDCBRP, TSEG1 (= Prop + Phase 1), TSEG2, SJW ; idem pour la phase de données ; compensation du délai du transceiver
dsPIC33CK, dsPIC33CHC1NBTCFGH/L, C1DBTCFGH/LMêmes champs que le MCP2518FD

Tous les champs s’écrivent « moins un » : un segment de 7 TQ s’écrit 6. Le bit BTLMODE (ou SEG2PHTS) doit être à 1 pour que Phase 2 soit prise dans le registre et non déduite automatiquement ; l’outil le positionne toujours.

Les erreurs classiques

  • Le quartz du module MCP2515 : beaucoup de modules bon marché ont un quartz de 8 MHz, alors que les bibliothèques supposent souvent 16 MHz. Tout le bus tourne alors à la moitié du débit prévu. Lire la valeur gravée sur le quartz.
  • Le point d’échantillonnage : tous les nœuds d’un bus doivent l’avoir au même endroit, autour de 87,5 % (recommandation CANopen et CiA) en CAN classique, 75 à 80 % en phase de données CAN FD.
  • La terminaison : 120 Ω à chaque extrémité du bus, et seulement aux extrémités. Mesurée entre CAN_H et CAN_L bus hors tension, elle doit donner 60 Ω.
  • Le mode de fonctionnement : après configuration, le contrôleur doit être sorti du mode configuration (mode normal), et il faut au moins un second nœud pour acquitter les trames : seul sur le bus, un émetteur répète sa trame indéfiniment.
  • L’horloge du dsPIC : FCAN est FCY ou FOSC selon le bit CANCKS, et ne doit pas dépasser 40 MHz.

La tolérance d’horloge

Δf ≤ min( min(PS1, PS2) / (2 × (13 × N − PS2)) ,  SJW / (20 × N) )

C’est l’écart maximal admissible entre l’horloge d’un nœud et l’horloge nominale. Un quartz (quelques dizaines de ppm) ne pose jamais de problème ; un oscillateur RC interne à ± 1 ou 2 % peut, lui, sortir de la tolérance d’un réglage serré. Pour les contrôleurs CAN FD, la valeur affichée est approchée (TSEG1 regroupe propagation et phase 1).

Les valeurs sont calculées d’après les fiches techniques des composants ; vérifiez la disposition exacte des bits dans la fiche du modèle utilisé avant de les écrire, en particulier pour les dsPIC33C.

Commentaires

Laisser un commentaire