Titre: Gestion de bus CAN
Auteurs: Sylvain Choisel Matthieu Liger Vincent Oberlé
Ecole: Néant
Résumé: Le CAN (Controller Area Network) est un bus de communication série développé à la fin des années 80 par l’entreprise allemande Robert Bosch. L’objectif était de fournir à l’industrie automobile un bus peu coûteux pour l’électronique embarquée des automobiles, comme alternative aux encombrants et complexes câbles des modèles de l’époque. Aujourd’hui, l’efficacité et la robustesse de ce protocole l’ont amené à être utilisé dans de nombreuses autres applications industrielles, en particulier celles nécessitant un débit important jusqu’à1 Mbits/s avec un tr`es faible taux d’erreur.
Le CAN est aussi devenu un standard international reconnu par l’ISO. De nombreux contrôleurs CAN sont aujourd’hui disponibles chez la plupart des fabricants, qui proposent aussi des versions de leurs microcontrôleurs avec des contrôleurs CAN intégrés. De nombreux packages de développement existent aussi sur le marché. Ce document présente un exemple d’implémentation d’un bus CAN reliant différentes plateformes : une carte PowerPC 403 avec sa carte contrôleur CAN, un PC utilisant aussi une carte contrôleur CAN, et des nœuds autonomes. Cet environnement est le résultat du développement :
– de plusieurs cartes mettant en oeuvre des contrôleurs CAN,
– des librairies permettant d’utiliser ces cartes et de développer des applications utilisant le bus CAN,
– d’applications de développement et de démonstration. Bonne lecture !
Extrait du sommaire:
Introduction 5
1 Le protocole CAN. 6
1.1 Origines et utilisations du CAN. 6
1.1.1 Le CAN dans l’industrie automobile. 6
1.1.2 Autres applications industrielles. 6
1.1.3 Perspectives.7
1.2 Le CAN dans le modèle ISO/OSI. 7
1.2.1 Le modèle ISO/OSI 7
1.2.1.1 La couche physique.7
1.2.1.2 La couche liaison. 8
1.2.1.3 La couche réseau. 8
1.2.1.4 La couche transport.8
1.2.1.5 La couche session. 9
1.2.1.6 La couche présentation. 9
1.2.1.7 La couche application. 9
1.3 Fonctionnement du CAN.9
1.3.1 Principes. 9
1.3.1.1 ”Identifiers”. 9
1.3.1.2 Notions de bits dominants / récessifs. 9
1.3.2 Fonctionnement détaillé de l’arbitrage. 10
1.3.3 Transmission des messages. 11
1.3.3.1 Protocoles 2.0A et 2.0B. 11
1.3.3.2 Types de messages.11
1.3.4 Format des trames de données. 11
1.3.4.1 Start of frame12
1.3.4.2 Arbitration field 12
1.3.4.3 Control field 12
1.3.4.4 Data field13
1.3.4.5 CRC field13
1.3.4.6 ACK field13
1.3.4.7 End of frame 13
1.3.5 Bit-stuffing 14
1.3.6 Détection et gestion des erreurs. 14
1.3.6.1 Types d’erreurs 14
1.3.6.2 Trames d’erreurs 14
1.3.6.3 Gestion et confinement des erreurs 15
1.3.6.4 Probabilité de détection des erreurs16
2 Les composants CAN 19
2.1 Le P82C150 19
2.1.1 Configuration du SLIO 19
2.1.1.1 Choix de l’ID 19
2.1.1.2 Calibration 19
2.1.2 Utilisation du 82C150 20
2.1.2.1 Format des trames 20
2.1.2.2 Les registres 20
2.2 Le PCA82C25021
2.2.1 Codage physique des bits 21
2.2.2 Débit 22
2.3 Le SJA1000 22
2.3.1 Présentation22
2.3.1.1 Caractéristiques 22
2.3.2 Le mode Basic CAN 22
2.3.3 Le mode PeliCAN22
2.3.4 Les principaux registres22
2.3.4.1 Le registre MODE 22
2.3.4.2 Le registre COMMAND 23
2.3.4.3 Le registre STATUS23
2.3.4.4 Le registre INTERRUPT23
2.3.4.5 Les registres BUS TIMING0 et BUS TIMING1 24
2.3.5 Le buffer de réception 24
2.3.6 Le buffer d’émission 25
2.3.7 Le filtre d’acceptation 25
3 Cartes développées 26
3.1 Carte SJA1000-PPC26
3.1.1 Description 26
3.1.2 Utilisation 27
3.1.2.1 Macros de lecture-écriture28
3.1.2.2 Exemples d’utilisation 30
3.2 Carte SLIO 30
3.2.1 Description 30
3.2.2 Utilisation 30
3.2.2.1 Calibration 30
3.2.2.2 Pilotage des sorties analogiques et digitales 32
3.2.2.3 Lecture des entrés analogiques ou digitales 32
4 Programmation PPC 33
4.1 Bibliothèque can.s 33
4.1.1 Représentation machine des trames CAN 33
4.1.2 Le fichier pelican.h 33
4.1.2.1 Procédure sja init pelican 34
4.1.2.2 Procédure receive trame35
4.1.2.3 Procédure send trame 38
4.1.2.4 Procédure send trame sans verif38
4.2 Bibliothèque slio.s39
4.2.1 Le fichier slio.h 40
4.2.1.1 Procédure calibration slio41
4.2.1.2 Procédure send calibration43
4.2.1.3 Procédure make slio ffi44
4.2.1.4 Procédure wr reg slio 45
4.2.1.5 Procédure test slio id46
4.3 MoniCAN47
4.3.1 Caractéristiques 48
4.3.2 Fonctionnement 48
4.3.2.1 Initialisation 48
4.3.2.2 Fonctionnement normal 49
4.3.2.3 Traitement d’une trame re¸cue49
4.3.3 Utilisation 50
4.3.3.1 Envoi d’une commande 50
4.3.3.2 Lecture d’un message envoyé par un superviseur 50
4.3.3.3 Chargement d’un nouveau programme 50
4.4 Le Loader CAN50
4.4.1 Fonctionnement 50
4.4.1.1 Transmission du programme. 51
4.4.1.2 Implémentation en mémoire. 51
4.4.2 Utilisation 51
4.4.2.1 Compilation du loader 51
4.4.2.2 Compilation du programme àloader51
4.4.2.3 Exemple51
5 Environnement JerryCAN 54
5.1 Carte SJA 1000 pour PC.54
5.1.1 Description. 54
5.1.2 Librairies en C. 54
5.1.2.1 Mode BasicCAN. 54
5.1.2.2 Mode PeliCAN55
5.1.3 Programmes56
5.2 Avantages de Java pour le protocole CAN.56
5.2.1 Rapidité de développement 56
5.2.2 Réutilisabilité57
5.2.3 Portabilité 57
5.2.4 Développement de Java dans les applications embarquées 57
5.3 CANAPI.57
5.3.1 Package canapi.can20.58
5.3.2 Package canapi.sja1000. 58
5.3.2.1 Acc`es àla carte. 58
5.3.2.2 Comment porter CAN APIs ur un autre environnement.59
5.3.2.3 Classe Sja1000. 59
5.3.2.4 Configuration du SJA 1000. 60
5.3.2.5 Accès concurrents à la carte. 60
5.3.3 Package canapi.app. 63
5.4 Application JerryCAN. 64
5.4.1 Fichier de configuration.64
5.4.2 Assistant de configuration 64
5.4.3 Gestion du Manager. 65
5.4.4 Outils de JerryCAN. 65
5.4.4.1 Visualisateur de trames reçues65
5.4.4.2 Visualisateur du registre STATUS 65
5.4.4.3 Visualisateur des registres d’erreurs66
5.4.4.4 Envoi d’une trame 66
5.4.4.5 Envoi d’un fichier 66
5.4.4.6 Envoi d’un programme (loader) 67
5.4.5 Serveur de mails. 67
5.4.6 CAN WebServer. 67
5.4.7 Test intéressant. 67
Télécharger le fichier PDF : Gestion de bus CAN