CAN Bus - Conçu pour le bruit, multi-maître, et 30 ans d'usage automobile
CAN utilise la signalisation différentielle pour résister au bruit électrique, l'arbitrage non destructif pour gérer plusieurs émetteurs simultanés, et une trame avec cinq mécanismes de détection d'erreurs indépendants.
CAN Bus. Conçu pour le bruit, multi-maître, et 30 ans d'usage automobile
Au milieu des années 1980, Bosch avait besoin d'un moyen de faire partager des données à des dizaines de calculateurs dans une voiture sans tirer des fils individuels entre chaque paire de nœuds. La solution devait survivre aux parasites d'allumage, aux variations de température de −40°C à 125°C, et à des câbles de plusieurs mètres. C'est CAN. Il est présent dans chaque voiture vendue en Europe depuis 1993, et on le retrouve dans les machines industrielles, les équipements médicaux et la robotique pour exactement les mêmes raisons.
Les deux choses qui distinguent CAN de tout le reste de cette série : il utilise une paire différentielle (et non des signaux simples), et il dispose d'un arbitrage non destructif. plusieurs nœuds peuvent commencer à émettre simultanément et le protocole résout le conflit automatiquement, sans corrompre aucune des trames.
Signalisation différentielle. pourquoi CAN ignore le bruit
Les signaux simples (comme TTL UART ou I2C) sont mesurés par rapport à la masse. Si un pic de bruit frappe le fil, le récepteur le voit comme une variation de tension. CAN mesure la différence entre deux fils, CAN-H et CAN-L.
État CAN-H CAN-L H − L
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Récessif 2,5V 2,5V 0V → logique 1
Dominant 3,5V 1,5V +2V → logique 0
Si un pic de bruit ajoute 1V aux deux fils, CAN-H devient 3,5+1 et CAN-L devient 1,5+1. La différence est toujours 2V. Le récepteur ne voit rien d'anormal. C'est ce qu'on appelle le rejet de mode commun, et c'est pourquoi CAN peut parcourir des mètres de paire torsadée non blindée à travers un compartiment moteur.
Rendering diagram...
Les résistances de terminaison de 120Ω aux deux extrémités du bus ne sont pas optionnelles. Sans elles, le signal se réfléchit à l'extrémité du câble et crée une copie fantôme de chaque bit transmis. Vérifiez la terminaison en premier lors du débogage d'un problème CAN.
Structure de trame. messages, pas adresses
CAN n'a pas d'adresses d'appareils. Il a des ID de messages. Chaque nœud sur le bus voit chaque trame et décide indépendamment s'il est concerné en fonction de l'ID.
┌─────┬──────────────┬─────┬──────┬──────────┬──────┬─────┬─────┐
│ SOF │ ID 11 bits │ RTR │ DLC │ 0–8 data │ CRC │ ACK │ EOF │
└─────┴──────────────┴─────┴──────┴──────────┴──────┴─────┴─────┘
- SOF (Start of Frame) : un bit dominant pour réveiller les récepteurs
- ID : 11 bits en CAN standard, 29 bits en CAN étendu. ID plus bas = priorité plus haute.
- DLC : longueur des données, 0–8 octets
- CRC : polynôme 15 bits
- ACK : tout nœud qui reçoit correctement tire ACK vers le bas. l'émetteur vérifie cela
Arbitrage non destructif
C'est la partie élégante. Quand deux nœuds commencent à émettre simultanément, ils lisent tous les deux le bus pendant l'émission. Un bit dominant (0) gagne toujours sur un bit récessif (1).
Ainsi, à chaque bit d'ID transmis, le nœud lit ce qui est réellement sur le bus. S'il a transmis un 1 mais lit un 0, il sait qu'un autre nœud a envoyé un bit dominant. ce nœud a un ID plus bas et donc une priorité plus haute. Le nœud perdant s'arrête immédiatement et réessaie après la fin de la trame gagnante.
Rendering diagram...
Le mot clé est non destructif. La trame du nœud B n'est jamais corrompue. La trame du nœud A n'est pas perdue. elle est simplement mise en attente. Pas de contrôleur central, pas de passage de jeton, pas de détection de collision. L'ID le plus bas gagne immédiatement, à chaque fois.
Confinement des pannes. les nœuds défaillants ne tuent pas le bus
Rendering diagram...
Un nœud qui génère continuellement des erreurs est progressivement mis en silence. Au Bus Off, il cesse d'émettre entièrement. le reste du bus continue de fonctionner. C'est une décision de conception intégrée dans le protocole : c'est pourquoi un nœud CAN court-circuité dans une voiture ne désactive pas nécessairement tout le reste.
CAN FD étend la charge utile à 64 octets et permet à la phase de données de fonctionner plus vite que la phase d'arbitrage. jusqu'à 8Mbps pour les données. Même couche physique, même arbitrage, trames plus grandes et plus rapides. Si vous concevez quelque chose de nouveau et que CAN est le bon choix, utilisez CAN FD dès le départ.