1 773 octets ajoutés
, 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.