Outils pour utilisateurs

Outils du site


start:raspberry:uart

RPI : Uart Laison serie

Liaison UART du Raspberry Pi 29 janvier 2014

Avoir un PC embarqué c’est bien, pouvoir communiquer facilement avec les microcontrôleurs de l’électronique, c’est mieux !

Pour cela, le Raspberry Pi propose plusieurs protocoles de communication :

  1. I2C
  2. SPI
  3. UART

Nous pourrions reprocher à l’I2C et au SPI de ne pas permettre de communications asynchrones. C’est en partie pour cela quoi nous nous sommes intéressés à l’UART.

Si ces trois protocoles sont des protocoles de communication de type série, l’UART est souvent considéré comme LE protocole série. C’est l’un des protocoles de type série les plus simples.

Sur le Raspberry Pi sous Raspbian, l’UART est connu sous le nom de ttyAMA0. On le trouve donc ici : /dev/ttyAMA0. Cependant, pour se servir de la liaison UART d’un Raspberry Pi sous Rasbian, il y a quelques manipulations préalables à réaliser. Confiscation par le noyau

Tout d’abord, la liaison est accaparée par le noyau pour offrir un terminal par la liaison série (UART). Il faut dire au noyau de :

  1. ne pas se servir de la liaison série au démarrage ;
  2. ne pas créer un terminal sur cette liaison.

Pour supprimer l’utilisation de l’UART du démarrage, il faut éditer le fichier /boot/cmdline.txt, supprimer la partie en rouge :

/boot/firmware/cmdline.txt

Avant : dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Après : dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

L’édition du fichier /boot/firmware/cmdline.txt demande les droits d’administrateur si vous travaillez directement sur le Raspberry Pi.

Après un redémarrage, vous devriez pouvoir accéder à l’UART. Pour vérifier que tout s’est bien passé, vous pouvez vérifier qu’aucun processus n’utilise votre précieux /dev/ttyAMA0.

Terminal

   ps aux | grep ttyAMA0

Et que le noyau vous a bien rendu la main :

Terminal

  cat /proc/cmdline
  

Configuration de la liaison UART

Mais ce n’est pas fini ! En effet, la liaison /dev/ttyAMA0 est configurée pour vous renvoyer un écho de ce qu’elle reçoit. La liaison se configure avec stty. Pour connaître votre configuration actuelle utilisez :

Terminal

  
  stty -F /dev/ttyAMA0 -a

Pour comprendre précisément la configuration, la page man de stty vous sera bien utile. Nous utilisons la commande suivante pour avoir une configuration fonctionnelle.

Terminal

  
  sudo stty -F /dev/ttyAMA0 115200 cs8 -cstopb -onlcr -echo -echoe -echok -opost

Vous pouvez changer 115200 par la vitesse souhaitée de votre liaison série. Bug du Raspberry Pi

Enfin, vous êtes confronté à un bug du Raspberry Pi, son rapport est ici. Pour éviter d’avoir des octets aléatoires en début de transmission, il est recommandé de laisser le port ouvert :

Terminal

  
  exec 9> /dev/ttyAMA0

Et voilà ! Vous êtes prêt à utiliser l’UART. Si vous voulez modifier la vitesse de la liaison série, n’hésitez pas à utiliser stty ! Utilisation

Sous Linux, “tout est fichier”. L’envoi ou la réception de données sur le RPi se fait en lisant ou en écrivant dans /dev/ttyAMA0. En C, nous utiliserons par exemple fopen, fprintf et fget, tandis qu’en bash, nous utiliserons les commandes suivantes. Pour la réception des données du port série :

Terminal

  
  cat /dev/ttyAMA0

Pour l’émission de données sur le port série :

Terminal echo -e -n “Bonjour\x00” > /dev/ttyAMA0

Pour la commande echo, nous utilisons les options suivantes :

  1. e Demande à la fonction echo d’interpréter les caractère spéciaux, ce qui transformera notre ’\x00’ en caractère de fin de chaîne.
  2. n Demande à la fonction echo de ne pas générer automatiquement de retour à la ligne.

Liens web

Connexion d un RPI à un ESP32 via UART

/home/chanteri/www/fablab37110/data/pages/start/raspberry/uart.txt · Dernière modification : 2025/02/23 10:30 de admin