🛠 Activer le bus SPI0 et piloter un petit écran TFT
Objetivos
El conector de 40 pines del BPI-M2 Zero expone el controlador SPI0 en los pines 19/21/23/24 (señales PC0 a PC3 según la tabla de la wiki): lo suficiente para conectar una pequeña pantalla TFT con controlador ILI9341, un visualizador segmentado o cualquier dispositivo SPI. Vas a activar el bus mediante la configuración de Armbian, verificar el controlador con una prueba de bucle directo de MOSI a MISO, y luego escribir bytes con python-spidev antes de abordar la capa framebuffer.
Material
- BPI-M2 Zero con Armbian
- Pantalla TFT de 2,4" ILI9341 en modo SPI (6 pines: VCC, GND, CS, RESET, DC, SDI — conectar también LED/K a 3V3)
- 6 cables Dupont; alimentación de la pantalla a 3,3 V
- Para la prueba de cable: un simple puente de MOSI (pin 19) a MISO (pin 21)
Código completo
# 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
Verificación esperada
Tras la activación, /dev/spidev0.0 existe; la prueba de bucle directo devuelve exactamente los bytes emitidos (0xa5, 0x5a, 0xf0), lo que demuestra que el controlador, la multiplexación PC0-PC3 y el cableado son correctos. Una vez conectada la pantalla, las bibliotecas ILI9341 muestran formas y texto.
Errores frecuentes
- Olvidar el overlay: sin él, no aparece ningún /dev/spidev y gpioinfo muestra los pines libres pero mudos.
- Alimentar la pantalla a 5 V cuando la lógica SPI sale a 3,3 V: las entradas tolerantes a 5 V son raras, mantenerse en 3,3 V.
- El RESET y el DC del ILI9341 requieren dos pines GPIO adicionales: reservar los en la distribución de pines antes de cablear todo.
- Subir demasiado la frecuencia SPI con cables Dupont: píxeles erróneos o pantalla negra, bajar a 8 MHz.
- Confundir SPI0 (PC0-PC3, pines 19/21/23/24) con SPI1 (PA13-PA16), cuyas señales también aparecen en la tabla de la wiki pero en otros pines.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash