A la découverte du Bus CAN
Par Jeremie le 30 Octobre 2011
I - Introduction
Le bus CAN (Control Area Network) est un bus de communication série, principalement conçu pour mettre en reseau diverses cartes éléctroniques.
Il est utilisé dans l’automobile pour faire dialoguer les divers systemes de contrôle ou de commande : ABS, systeme de freinage, de supenssion etc...
1.1-Comment imaginer une conversation CAN ?
Pour imager le protocole CAN on peut faire l'analogie avec une discution que vous avez entre amis. Et oui, vous utilisez le même formalisme que le CAN chaque jour (enfin c'est lui qui utilise le même que vous…).
En effet avant de parler avec vos amis vous annoncez le theme de votre message c’est l’identifiant, ensuite certains de vos amis ne sont pas interessés par votre message et ne vous ecouterons pas : ils continurons leurs activités. Ceux qui veulent vous écouter vous écoutent et vous commencez à parler (en respectant des regles). Imaginez que lors de votre discussion en cours, un autre amis a un message très urgent à vous transmettre (IL Y A LE FEU, SORTEZ !) vous allez arrêter votre discusion, l’ecouter et courir en lieux sûrs. Une fois hors de danger vous aller reprendre votre conversation là ou vous l’aviez laissée .
Résumons, dans un protocole CAN, tout les périphériques sont au même niveau (pas de relation mâitre-esclave) seul les messages sont classé par ordre de priorités. Chaque message est precédé d’un identifiant, vous n'écoutez donc que les messages qui vous intéressent (comme dans la vraie vie !).
1.3 Le CAN et un peu de théorie
Le bus CAN est constituer de 2 fils terminés par des résistance de terminaisons. Un grand nombre de periphériques peuvent venir se raccorder au bus.
La structure d’un trame CAN :
- ID (11 bits)
- Message (8 octets)
- Plein d’autre chose pour contoler les erreurs
Les signaux :
Les signaux ne sont pas TTL , mais on s’interresse à la différence de tension entre CANH et CANL se qui rend le bus très stables au divers perturbations (car si on modifie de la même manière la tension des 2 canaux la différence reste inchangée)
Le materiel :
Pour réaliser un periphérique CAN nous avons donc besoin :
- d'un transcrivers pour adapter les signaux sur le bus
- d'un controleur CAN pour gérer les regles d’emmision et de la réception
- d’un microcontroleur
II- Le Bus CAN et les PIC
2.1- La partie matériel
On a vue que l’on a besoin :
-
d'un controleurs CAN pour la gestion du protocole
-
d'un transcriver pour adapter les niveaux de tension
Les pic 18FXX80 intergre materiellemnt le contoleur CAN , cependant il n'integre pas de transcriver, il faut donc avoir un transcriver externe (MCP2551 de Microhip) .
Il est conseillé d’avoir un quartz cristal externe, pour avoir une horloge stable
2.2 La partie logiciel
Dans la datasheet du pic nous avons tous les registre du CAN dans la partie ECAN.
Cependant Microhip nous facilite les choses grace à sa librairie CAN ecrit pour les pic 18FXX qui est compatible avec le compilteur C18.
Nous avons donc à notre dispositon des fonctions en C, qui permettent de gérées de manière très intuitive le Bus CAN
Ces fonctions se regroupent suivant :
-
fonction liées à la configurations du bus
-
fonctions liées à l’emmission de donnée
-
fonctions liées à la reception de donnée
-
fonctions liées àà la gestion des erreurs
2.3- Notions de mask et de filtre
Pour que un message arrive dans votre buffer de réception (possibilité de declencher un interruption), il faut qu’il soit accepté . Grace au mask vous pouver choisir quel bits de l’identifiant doivent être comparé avec le filtre pour que le message soit validé et arrive dans votre buffer .
Voici un exemple :
ID du message : 101001111101
dans la config du PIC :
mask : 00000000111
ex n°1 de filtre: 110110000101
ex n°2 de filtre: 110110000111
Dans l'exemple n°1 le on voit que les 3 premiers bits sont identiques, le message est accepté
Dans l'exemple n°2 le on voit que les 3 premiers bits sont différents, le message est refussé
Avec les pic18F vous disposé de 2 buffer de recptions, ayant un maks et des filtre qu’ils leurs sont propre et que vous régler lors de la configuration du bus CAN du Pic .
2.4- Schema
III - Exemple de code
IV - Liens et documentation
Dans le fichier ressource.zip (cliquer pour le télécharger), nous avons regrouper toutes les documments qui nous ont aidé à mettre au point le Bus CAN sur PIC. Voici le détaille :
- Datasheet du PIC18F2680
- Datasheet du transcriver MCP2551
- Librairie CAN de microchip
- Exemple de réalisation CAN (projet Robusta)