🛠 GPIO du CM5 côté RP1 : force de conduite, budget 50 mA et broches pièges
Objetivos
En el CM5, el GPIO ya no está conectado al SoC, sino a RP1, el chip de E/S de Raspberry Pi («un chip adicional completo en la placa en comparación con el CM4»), exactamente igual que en el Pi 5. Consecuencias prácticas: el controlador gpiochip0 se llama rp1, la fuerza de conducción es configurable en 2/4/8/12 mA, las resistencias de pull internas valen ~55 kΩ y, sobre todo, la corriente GPIO acumulada no debe superar los 50 mA en el conjunto de los 28 pines. Este tutorial inventaría el controlador, hace parpadear un LED, lee una entrada de botón y calibra sus opciones de control.
Material
- 1 × CM5 en la placa CM5IO Board (jumper GPIO en posición de 3,3 V por defecto)
- 1 × LED + resistencia de 470 Ω; 1 × botón pulsador hacia GND
sudo apt install -y gpiod-tools pinctrl python3-gpiozero- Opcional: multímetro para verificar el presupuesto de corriente de un montaje que controla varias cargas
Código completo
# 1) Prouver que le GPIO vient de RP1
sudo pinctrl -p | head -8 # gpiochip0 : « rp1 »
gpioinfo gpiochip0 | sed -n '1,14p'
# 2) Blink + bouton (gpiozero fonctionne inchangé, comme sur Pi 5)
cat > /tmp/rp1_demo.py <<'EOF'
from gpiozero import LED, Button
from signal import pause
led = LED(17) # LED + 470 ohm vers GND
btn = Button(4) # bouton vers GND, pull-up interne ~55 kohm
btn.when_pressed = led.on
btn.when_released = led.off
pause
EOF
python3 /tmp/rp1_demo.py
Verificación esperada
pinctrl -p identifica gpiochip0 = rp1 (en el CM4 era el SoC BCM2711); el LED se enciende mientras se pulsa; gpioget gpiochip0 4 vale 1 en reposo (pull-up interno). Cálculo del presupuesto: un LED a 5 mA × 8 pines = 40 mA, estamos cerca del límite de 50 mA — la hoja de datos también impone VOL ≤ 0,4 V a la corriente del ajuste elegido.
Errores frecuentes
- Superar los 50 mA acumulados en los 28 pines (grupos de LED, relés, pantallas): el GPIO colapsa o el chip se calienta; utilice un transistor/driver externo.
- Usar GPIO0/GPIO1 sin configurar nada: es el bus de identificación HAT (ID_SD/ID_SC); para GPIO normal, ponga
force_eeprom_read=0en config.txt. - Olvidar los pull-up de 1,8 kΩ predeterminados en GPIO2/GPIO3: son demasiado fuertes para un simple botón o un I2C largo, distorsionan los niveles — la hoja de datos los señala explícitamente.
- Descuidar la tensión del banco: GPIO_VREF se cablea a 3,3 V, 1,8 V o 2,5 V externo; un periférico de 3,3 V en un banco de 1,8 V nunca verá un nivel alto válido.
Otros tutoriales para esta placa
- Alimenter un CM5 comme il faut : USB-C PD 5 V / 5 A et bouton d'alimentation
- La première RTC des Compute Modules : câbler et vérifier la VBAT du CM5
- Accès distant sans VPN : enregistrer un CM5 dans Raspberry Pi Connect
- Refroidir le CM5 : ventilateur PWM sur le connecteur JST-SH et tachymétrie
- Deux ports USB 3.0 simultanés : le CM5 fait du stockage rapide, pas sur une carte CM4
- Démarrer le CM5 sur un SSD NVMe dans le socket M.2 de la CM5IO
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash