Différences entre versions de « Bus CAN »

De Polybot Grenoble
Sauter à la navigation Sauter à la recherche
(Page créée avec « =Bus CAN= Il a été choisi d'implementer un bus CAN au sein des robots conçu par Polybot. Il permet de relier chaque élement du robot avec un bus commum et permet de r... »)
 
(Aucune différence)

Version actuelle datée du 12 novembre 2020 à 18:58

Bus CAN

Il a été choisi d'implementer un bus CAN au sein des robots conçu par Polybot. Il permet de relier chaque élement du robot avec un bus commum et permet de réaliser du multi-maître.

Cette page expliquera les choix d'implémentation réalisé pour ces réseaux CAN. Elle apportera aussi un guide et des examples d'implémentation.

CANPolybot

CANPolybot est la spécification et les règles que les nodes doivent respecter.

A SPECIFIER

Guide

Calcul des timings

Cet outil permet de calculer les timings afin de configurer chaque node basée sur µC STM32 d'un réseau CAN : http://www.bittiming.can-wiki.info/

Après avoir selectionné ST Microelectronics bxCAN, reglé les valeurs comme souhaité. NB: La valeur Clock Rate est la valeur de XXXX.

Vous obtiendrez ainsi le prescaler (XXX) et les 2 bits (à adapter)

Configuration STM32CubeMX

Code utilisateur

Exemples

Des exemples sont disponibles : https://gitlab.com/polybot-grenoble/stm32-can-demo/can-nodes-bare-metal https://gitlab.com/polybot-grenoble/stm32-can-demo/can-nodes-bare-metal-with-interrupts

Les exemples précedents implémentent un réseau CAN de deux nodes.

Le setup hardware est comme ci-dessous: INSERER SCHEMA

Une node envoie une trame periodiquement (node Sender) et l'autre reçois (node Receiver) par polling ou par interruption. La node Sender envoie une trame chaque seconde (f=1Hz) et allume la LED de la carte Nucleo brievement. La node Receiver reçois la trame et lors de la reception allume aussi brievement la LED et retransmet le message sur la liaison UART du ST-Link.

Afin de compiler le projet pour obtenir l'image binaire d'une node Receiver ou Sender, il suffit simplement de commenté ou décommenté la ligne 39 du fichier main.c.