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
–
| BRP | TQ | TQ / bit | Prop / PS1 / PS2 / SJW | Éch. | Erreur débit | Tolérance | Registres |
|---|
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ôleur | Registres | Contenu |
|---|---|---|
| MCP2515, MCP25625 | CNF1, CNF2, CNF3 | SJW et BRP ; BTLMODE, SAM, PHSEG1, PRSEG ; PHSEG2 (valeurs moins 1) |
| PIC18 ECAN | BRGCON1, BRGCON2, BRGCON3 | Même organisation que le MCP2515 |
| dsPIC33F/E, PIC24H ECAN | CiCFG1, CiCFG2 | SJW, BRP ; SEG2PH, SEG2PHTS, SAM, SEG1PH, PRSEG |
| MCP2517FD, MCP2518FD | CiNBTCFG, CiDBTCFG, CiTDC | BRP, TSEG1 (= Prop + Phase 1), TSEG2, SJW ; idem pour la phase de données ; compensation du délai du transceiver |
| dsPIC33CK, dsPIC33CH | C1NBTCFGH/L, C1DBTCFGH/L | Mê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.

Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.