Bus CAN et systèmes PSOC5 publié le 10/02/2013  - mis à jour le 17/10/2019

2. Exploitation du bus CAN avec le microcontrôleur PSOC5

2.1 Module transceiver

Afin d’interfacer correctement le contrôleur CAN présent dans le microcontrôleur, un module transceiver est nécessaire. Il est bien sur possible de le câbler directement sur la carte LAB du kit. J’ai préféré une réalisation offrant plus de modularité.

Schéma structurel du module transceiver et photographie du module (circuit imprimé)..

Le transceiver employé (TJA1050) a été implanté sur un circuit imprimé sur lequel existe la possibilité de placer les résistances de terminaison du bus (2 x 60 Ohms). Les documents nécessaires à la réalisation de cette interface sont accessibles :

 
L’exploitation proposée consiste à réaliser un émetteur ainsi qu’un récepteur. Toutes les déclinaisons/exploitations sont ensuite possibles.

2.2 L’émetteur, construction du projet

Le top design (PSOC Creator 1.0)
 

Design du projet émetteur sous PSOC creator 1.0

Il faut ajouter au top design le composant contrôleur CAN (renommé ici CAN_TX).

 
Il faut ensuite le configurer.
Arbitrairement le choix a été fixé à une vitesse de transmission de 500kb/s et 1 octet de champ de donnée.

 

 

 

 

Fenêtre de configuration générale du contrôleur CAN.

1. Imposer le nom du contrôleur CAN
2. ôter l’option du signal de validation du transceiver (on ne se servira que des broches RX et TX))
3. Sélectionner l’option Automatic

 

 

 

 

 

 

Fenêtre de configuration des timing du contrôleur CAN.


1. Choisir la vitesse de transmission
2. Sélectionner le timing désiré (double clic). Les champs de la ligne "3" seront complétés automatiquement.

 

 

 

 

 

 

Fenêtre de configuration des interruptions du contrôleur CAN.

Pas de manipulation ici, sauf si des besoins d’interruptions supplémentaires sont nécessaires.

 

 

 

 

 

 

Fenêtre de configuration du registre de transmission du contrôleur CAN.


1. Modification de DLC = 1 (longueur de donnée à transmettre ici, 1 octet)
2. Changement du nom de la case "mailbox" (champ de données) à transmettre.
3. Identification du noeud emetteur (codé sur 11bits _Full_ en mode IDE il est possible de coder l’identifiant sur 29 bits), choisi arbitrairement à 0x005.

Chaque "MailBox" peut contenir jusqu’à 8 octets à transmettre. Les variables permettant de compléter ces "mailboxes" sont identifiées ainsi dans la fonction CAN_TX_TX_RX_func.c (voir après) :

 
Pour la "mailbox0" (ici renommée TX_Message), la variable "container" est :
CAN_TX_TX_DATA_BYTE1(0).

 
Elle contient le premier octet à transmettre. Cela nous suffit puisque DLC=1. Si on avait désiré transmettre plus d’octets (DLC = 2 par exemple), il aurait fallu employer deux variables CAN_TX_TX_DATA_BYTE1(0) et CAN_TX_TX_DATA_BYTE2(0).

Fenêtre de configuration des broches du composant PSOC.

A ce stade il convient d’assigner les broches de l’afficheur ainsi que du contrôleur.

 

 
Il faut à présent construire le projet "Shift F6" et compléter le programme principal ainsi que la fonction CAN_TX_TX_RX_func.c qui a été générée

Impression

  Imprimer
  L'article au format pdf

Auteur

 Laurent Proust

Partager

     

Dans la même rubrique

 Bus CAN et systèmes PSOC5