🛠 Dominar los GPIO en Banana Pi BPI-RT2

Banana Pi BPI-RT2: Placa de enrutador WiFi 6 AX3000 · avance · Un guide avancé pour configurer, lire et écrire sur les broches GPIO de la BPI-RT2 via sysfs et libgpiod.

Objectifs

Este tutorial tiene como objetivo dominar la interacción de bajo nivel con los pines GPIO de la Banana Pi BPI-RT2. A diferencia de las placas Linux estándar, el SoC Realtek RTL8198D requiere una comprensión precisa del mapeo entre los pines físicos y los números de GPIO de Linux. Aprenderemos a identificar los pines disponibles en los conectores de 5 y 9 pines, configurar las direcciones (entrada/salida) y manipular los estados lógicos para interfaz con sensores o pantallas simples.

Matériel nécessaire

Étapes

Inicie sesión por SSH. El firmware OpenWrt utiliza el kernel Linux estándar. Para conocer el mapeo físico de los pines, consulte el esquema técnico o los archivos Device Tree Source (.dts) proporcionados en el BSP de Realtek. Los conectores de 5 y 9 pines exponen señales GPIO e I2C. Tenga en cuenta que los números de GPIO de Linux no siempre corresponden al orden físico de los pines.

  1. Acceso e identificación del mapeo

Antes de usar bibliotecas complejas, pruebe el acceso directo a través del sistema de archivos sysfs. Cree un directorio de trabajo y exporte un GPIO conocido (por ejemplo, GPIO 12, verifique con su mapeo): ``bash echo 12 > /sys/class/gpio/export ls /sys/class/gpio/gpio12/ `` Si aparece el directorio, el GPIO está disponible. Si ocurre un error "Device or resource busy", es posible que el GPIO esté siendo utilizado por el kernel o un controlador.

  1. Verificación de disponibilidad vía sysfs

Configure el GPIO como salida y encienda un LED conectado mediante una resistencia entre el pin GPIO y Tierra (GND): ``bash echo out > /sys/class/gpio/gpio12/direction echo 1 > /sys/class/gpio/gpio12/value ` El LED debe encenderse. Para apagarlo, escriba 0. Para liberar el recurso: `bash echo 12 > /sys/class/gpio/unexport ``

  1. Configuración de salida y prueba de LED

El método sysfs está obsoleto. Instale libgpiod-utils vía opkg si está disponible, o compílelo. Use gpioinfo para listar los chips GPIO disponibles. Identifique la línea correspondiente a su pin físico: ``bash gpioinfo ` Para poner una línea en salida alta (asumiendo chip0, línea 12): `bash gpiodetect gpioset gpiochip0 12=1 ``

  1. Uso de libgpiod (método moderno)

Configure el GPIO como entrada con pull-up interno si es compatible, de lo contrario use una resistencia externa hacia VCC. Lea el estado: ``bash echo in > /sys/class/gpio/gpio13/direction cat /sys/class/gpio/gpio13/value `` Presione el botón para ver cambiar el valor (0 o 1 según el cableado).

  1. Lectura de entrada (Botón pulsador)

Vérification

Asegúrese de que el LED se encienda y apague en respuesta a los comandos gpioset o escrituras sysfs. Verifique que la lectura del botón cambie de valor al presionarlo. Si los comandos fallan, verifique los permisos (chmod) y asegúrese de que el GPIO no esté reservado por el firmware para otras funciones (como WiFi o Ethernet).

Pour aller plus loin

Explore la interfaz I2C expuesta en los mismos conectores para conectar sensores digitales (temperatura, humedad). Use i2cdetect para escanear el bus. Para aplicaciones en tiempo real, considere escribir módulos del kernel personalizados usando las API GPIO del kernel de Linux, en lugar de llamadas al sistema desde el espacio de usuario, para reducir la latencia.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales