🛠 Control de GPIO y E/S industriales en BPI-5202
Objectifs
Este tutorial avanzado tiene como objetivo configurar y controlar las E/S digitales en el BPI-5202. Aprovecharemos el puerto GPIO de 20 pines y los módulos de extensión (DI/DO) a través del bus interno. El objetivo es implementar un bucle de control simple: leer un estado lógico (sensor) y comandar un actuador (LED o relé), utilizando el soporte de hardware LoongArch.
Matériel nécessaire
- Tarjeta BPI-5202 alimentada por DC 24V.
- Sistema operativo Loongnix o LoongOS instalado.
- Módulo de extensión GPIO o sensor/actuador conectado al conector de 20 pines (paso de 2,54 mm).
- Interfaz de consola serie (RS232 aislada) o SSH para acceso terminal.
- Multímetro para verificación de niveles de voltaje (opcional).
Étapes
Inicie sesión por terminal. Compruebe si el kernel ha detectado el controlador GPIO específico de LoongArch. Use dmesg | grep gpio para confirmar la inicialización del controlador. Anote los números base asignados a los puertos físicos.
- Verificación de detección de hardware
En Linux, los GPIO se exponen a través de sysfs. Asumiendo que el GPIO físico 1 se mapea al GPIO del sistema 100. Cree el enlace si es necesario: ``bash echo 100 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio100/direction ` Para una entrada (sensor), reemplace out por in`. Asegúrese de que las resistencias pull-up/down estén configuradas si el módulo lo permite, o dependa de las características del módulo DI/DO.
- Configuración del modo de entrada/salida
Para poner la salida en alto (3.3V o 5V según el módulo): ``bash echo 1 > /sys/class/gpio/gpio100/value ` Para leer el estado de una entrada configurada en modo in: `bash cat /sys/class/gpio/gpio101/value `` Escriba un script Bash simple para alternar el estado cada segundo para probar la capacidad de respuesta.
- Control y lectura
Si usa un módulo DI/DO conectado al bus interno, los GPIO pueden estar agrupados. Consulte la documentación del módulo para conocer los desplazamientos de dirección. El bus interno maneja la lógica, pero la exposición de Linux sigue siendo estándar a través de sysfs o /dev/gpiochipX con libgpiod.
- Uso de módulos de extensión
Para aplicaciones críticas, evite cambios de estado rápidos a través de sysfs (demasiado lento). Use la interfaz ioctl directa o configure el kernel para el acceso directo a memoria a los registros GPIO del 2K1000LA, respetando las direcciones físicas definidas en el Device Tree.
- Optimización en tiempo real
Vérification
Use un multímetro para medir el voltaje en el pin correspondiente: debe estar cerca de 0V (estado bajo) o del voltaje de referencia (estado alto). Para entradas, cortocircuite el pin a tierra para verificar que el comando cat devuelve 0.
Pour aller plus loin
Explore libgpiod para una gestión más robusta de eventos GPIO. Integre estas E/S en un sistema SCADA ligero o use los puertos CAN2.0 para comunicación de red industrial distribuida.