# Initialisation de l'UART avec un Raspberry Pi
### Yohan Boujon
---
Pour tester l'intégration de l'UART j'ai décidé de me focaliser uniquement sur l'UART 1 du STM32. Afin de simplifier la programmation côté microcontrôleur, et aussi d'apprendre plus sur mon Raspberry Pi ce choix était plus complaisant.

## Configuration du Raspberry Pi

La première chose est de vérifier si les pins pour la communication UART sont dans le bon mode. Pour se faire il suffit de lancer la commande :
```bash
sudo raspi-gpio get 14-15
```
Normalement le résultat devrait être le suivant :
![sudo raspi-gpio get 14-15](../assets/resultcmd0.png)
Si func n'est pas TXD/RXD alors entrez ces commandes :
```bash
sudo raspi-gpio set 15 a5
sudo raspi-gpio set 14 a5
```
Pour rappel, le terme après 15/14  détermine l'alternative function, plus d'informations peuvent être trouvées ici [Détail sur les différentes ALT](https://blog.boochow.com/wp-content/uploads/rpi-gpio-table.png). Pour vérifier si vous voulez UART1 ou UART 0, avec la commande ```ls -l /dev``` il est possible de voir le lien symbolique réalisé entre votre serialX et la pin réelle de votre pi. Choisissez celle que vous voulez, mais si vous avez besoin du bluetooth, **ttyS0** est la liaison serie recommandée. *(Dans notre cas elle est reliée à l'UART1)*

Pour finalement activer du côté hardware l'UART, il faut entrer la commande suivante :
```bash
sudo raspi-config
```
Après cela une fenêtre bleue avec divers paramètres sont disponible. Ce qui nous intéresse c'est donc d'activer le port UART, soit :
**3 Interface Option** > **I6 Serial Port** > **No** > **Yes**
Il faut ensuite vérifier que le fichier de configuration accepte bien l'UART, soit :
```bash
sudo nano /boot/config.txt
```
et entrez les paramètres suivants en fin de ligne :
```
enable_uart=1
dtoverlay=disable-bt
dtoverlay=uart1,txd1_pin=14,rxd1_pin=15
```
Le premier active l'UART, le second désactive le bluetooth *(peut poser des problèmes sur l'UART 1 ou 0, dépendant des cas)* et enfin le dernier active le txd/rxd 0/1 pour une certaine pin.
Faites **CTRL+X** , **'y'** et rebootez votre Raspberry :
```bash
sudo reboot
```

Ensuite il ne reste plus qu'à tester ! à l'aide du programme [**minicom**](https://doc.ubuntu-fr.org/minicom) il est possible de tester simplement l'UART en rebouclant les GPIO comme ici :
![Raspberry Pi](../assets/raspberry_config.jpg)

Maintenant testons avec la commande
```bash
minicom -b 9600 -o -D /dev/ttyS0
```

![Raspberry Pi UART](../assets/raspberry_uart.jpg)