🛠 Activer le bus SPI0 et piloter un petit écran TFT
Objectifs
Le connecteur 40 broches du BPI-M2 Zero amène le contrôleur SPI0 sur les broches 19/21/23/24 (signaux PC0 à PC3 d'après la table du wiki) : de quoi brancher un petit écran TFT à contrôleur ILI9341, un afficheur segmenté ou n'importe quel périphérique SPI. Vous allez activer le bus via la configuration Armbian, vérifier le contrôleur avec un boucle-à-boucle MOSI vers MISO, puis écrire des octets avec python-spidev avant d'aborder la couche framebuffer.
Matériel
- BPI-M2 Zero sous Armbian
- Écran TFT 2,4" ILI9341 en mode SPI (6 broches : VCC, GND, CS, RESET, DC, SDI — câbler aussi LED/K vers 3V3)
- 6 fils Dupont ; alimentation de l'écran en 3,3 V
- Pour le test de câble : un simple pont MOSI (broche 19) vers MISO (broche 21)
Code complet
# 1) Activer SPI0 (overlay) puis redémarrer
grep overlays /boot/armbianEnv.txt
sudo armbian-config # System > Hardware > SPI0 (spi-spidev)
sudo reboot
# 2) Le périphérique est apparu
ls /dev/spidev*
ls -l /sys/class/spi_master/ | cat
# 3) Test boucle-à-boucle : pont filaire broche 19 (MOSI) -> broche 21 (MISO)
sudo apt install -y python3-spidev
python3 - <<'EOF'
import spidev
spi = spidev.SpiDev
spi.open(0, 0) # bus 0, cs0
spi.max_speed_hz = 8000000
rx = spi.xfer2([0xA5, 0x5A, 0xF0])
print("reçu :", [hex(b) for b in rx]) # attendu 0xa5 0x5a 0xf0 en boucle-à-boucle
EOF
# 4) Écran ILI9341 : piloter via un pilote framebuffer (fbtft) ou une
# bibliothèque Python dédiée au contrôleur, en gardant SPI <= 8-16 MHz
Vérification attendue
Après activation, /dev/spidev0.0 existe ; le test boucle-à-boucle renvoie exactement les octets émis (0xa5, 0x5a, 0xf0), preuve que le contrôleur, le muxing PC0-PC3 et le câblage sont bons. Une fois l'écran branché, les bibliothèques ILI9341 affichent formes et texte.
Erreurs fréquentes
- Oublier l'overlay : sans lui, aucun /dev/spidev n'apparaît et gpioinfo montre les broches libres mais muettes.
- Alimenter l'écran en 5 V alors que la logique SPI sort en 3,3 V : les entrées 5V-tolérantes sont rares, rester en 3,3 V.
- Le RESET et le DC de l'ILI9341 réclament deux broches GPIO supplémentaires : les réserver dans le brochage avant de tout câbler.
- Pousser la fréquence SPI trop haut avec des fils Dupont : pixels faux ou écran noir, redescendre à 8 MHz.
- Confondre SPI0 (PC0-PC3, broches 19/21/23/24) avec SPI1 (PA13-PA16) dont les signaux apparaissent aussi dans la table du wiki mais sur d'autres broches.
Autres tutoriels pour cette carte
- Flasher Armbian et premier boot du BPI-M2 Zero
- LED et bouton avec libgpiod sur le port 40 broches
- Wi-Fi AP6212 : le piège de l'antenne U.FL non fournie
- Console série sur USB-OTG : dépanner sans réseau ni câble UART
- Survivre avec 512 Mo : zram, swap compressé et services légers
- Câbler l'Ethernet 10/100 EMAC avec le carrier Zero-EPHY
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash