🛠 Ajouter une RTC au CM4 (PCF8523 sur I2C1 via dt-blob)

Raspberry Pi Compute Module 4 (CM4, 2020) — Fiche de carte · intermediaire · Schéma : IMG-compute-module-4-intermediaire-2-rtc-i2c-dt-blob-cm4.svg — CM4 sur IO Board ; sur l'empreinte HAT 40 broches, un module RTC PCF8523 avec pile bouton est branché sur SDA1/SCL1 (GPIO44/45) ; un porte-pile est aussi dessiné sur le connecteur RTC dédié de l'IO Board.

Objetivos

El módulo CM4 no tiene ni RTC con pila ni reloj de tiempo real integrado (a diferencia de lo que se podría pensar: la hoja de datos no lista ninguno — es la placa portadora la que proporciona una, ya que la IO Board tiene un conector RTC con soporte para pila). Este tutorial añade una RTC PCF8523 sobre I2C1 utilizando el flujo de trabajo dt-blob de la Guía de Software de Periféricos — el método oficial para configurar los pines de una placa portadora personalizada desde las primeras etapas del arranque — y luego sincroniza la hora del sistema con la RTC.

Hardware

Código completo

# 1) Exposer I2C1 sur GPIO44/45 via dt-blob (méthode Peripheral Software Guide)
cat > minimal-cm-dt-blob.dts <<'EOF'
/dts-v1/; /plugin/;
/ {
  pin-config {
    pin@p44 { function = "i2c1"; termination = "pull_up"; };  // SDA1
    pin@p45 { function = "i2c1"; termination = "pull_up"; };  // SCL1
  };
};
EOF
sudo dtc -I dts -O dtb -o /boot/firmware/dt-blob.bin minimal-cm-dt-blob.dts

# 2) Activer le driver RTC et purger la fausse horloge
echo 'dtoverlay=i2c-rtc,pcf8523' | sudo tee -a /boot/firmware/config.txt
sudo apt remove -y fake-hwclock || true
sudo systemctl disable -q fake-hwclock.service 2>/dev/null || true
sudo reboot

# 3) Après reboot : vérifier bus, RTC et heure
sudo i2cdetect -y 1                     # 68 = PCF8523 présent
sudo hwclock -s                         # RTC -> heure système
date && timedatectl | head -3
sudo hwclock -r -f /dev/rtc0            # lit l'heure de la RTC

Verificación esperada

i2cdetect -y 1 muestra la dirección 0x68; /dev/rtc0 existe; tras un corte de alimentación de 5 minutos, date devuelve la hora correcta sin NTP. dmesg | grep -i pcf8523 confirma la detección del controlador.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales