Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

[STM32] Carte Nucleo F411

Back                  << Index >>

La carte Nucleo F411 doit :


Brochage

Selection des Broches


Sources Projet


WORKSPACE_F411_uROS.zip

REMARQUE : Le paramètre ROS_DOMAIN_ID ( défini dans main.c ) sera à ajuster en fonction du numéro indiqué sur le Robot.


Environnement de Développement

IDE Eclipse


Acquisition des Capteurs de distance avant ( Périphérique ADC )

Stratégies d’utilisation de l’ADC

Les convertisseurs sont suffisamment rapides pour scruter la fin de conversion plutôt que de réagir à une interruption de fin de conversion qui prendrait plus de temps.

code captDistIR


Acquisition du Capteur de distance arrière ( Périphérique I2C )

Initialisation :

Récupération de la Distance Mesurée :


Affichage sur l’écran LCD ( Périphérique I2C )

code groveLCD

REMARQUE : Les fonctions groveLCD_clear() ou groveLCD_home() prennent beaucoup de temps du fait des temporisations.
Il peut être plus intéressant d’utiliser groveLCD_setCursor(0,0) suivi de groveLCD_term_printf(), en gardant en tête que les fonctions d’affichage prennent du temps ( tout affichage ne doit pas perturber les autres éléments du robot ).


Communication avec le RPI ( liaison UART1 )

Du fait de la sérialisation, la gestion de l’envoi ou de la réception de données par l’ UART prend du temps.
Pour libérer le Processeur, le DMA ( Direct Memory Access ) permet de stocker directement en mémoire les données reçues par l’UART, sans perturber le processeur.
Une fois la zone mémoire remplie, le processeur peut alors traiter l’ensemble des données disponibles ( sans attendre la réception de chaque caractère ).
Il en va de même pour l’émission : le processeur remplit une zone mémoire dédiée, et le DMA se charge de transmettre chaque caractère à l’UART, qui le sérialise.

La communication avec le RPI se fera au formalisme ROS2, la fonction rmw_uros_set_custom_transport() permet d’indiquer le périphérique UART utilisé par la bibliothèque microros

main.c

Les fonctions publish et subscribe permettent alors d’envoyer un message ou de s’abonner à la réception d’un message.


Communication avec PC HOST pour le DEBUG ( liaison UART2 )

La fonction printf() est configurée pour envoyer des caractères au périphérique UART2.
En effet la fonction élémentaire __io_putchar() utilisée par printf() est redéfinie afin d’envoyer un caractère sur UART2 :

drv_uart.c

Côté PC Host

Un terminal série ( minicom ou gtkterm ) permet, côté PC, d’afficher le message :

REMARQUE : Afin de respecter la période d’échantillonage pour le contrôle des moteurs en boucle fermée, éviter de placer trop de printf dans le code ( cette fonction a un temps d’exécution non négligeable ).


Back                  << Index >>