uext-ch390-low-power-wake-8.ino

Olimex UEXT-CH390: Módulo Ethernet SPI 10/100 Mbps para microcontroladores · Archivo : uext-ch390-low-power-wake-8.ino · Lenguaje : C (C Microcontrôleur générique · Uso : Implémenter une stratégie d'économie d'énergie où le microcontrôleur dort jusqu'à la détection de paquet Ethernet.

Ejemplo conceptual que muestra cómo usar el pin de interrupción del CH390 para despertar un MCU en sueño profundo.

Este ejemplo ilustra la interacción hardware/software para modos de bajo consumo. El CH390 debe configurarse a través de sus registros internos para señalar la actividad de red en el pin INT. El microcontrolador (RP2040/ESP32) debe configurarse para dormir y despertar en este pin. Requiere un controlador SPI para escribir en los registros de control del CH390.

uext-ch390-low-power-wake-8.ino

#include <stdio.h>

// Broches UEXT communes
#define CS_PIN 1
#define INT_PIN 2
#define RST_PIN 3

void setup() {
  // Configuration GPIO basique
  printf("Configuration GPIO...\n");
  
  // Activer le mode Low Power sur le CH390
  // Commande spécifique WCH: Écrire dans le registre de configuration
  uint8_t config_reg = 0x00;
  config_reg |= (1 << 0); // Enable Low Power Mode
  
  // Envoyer la commande au CH390 via SPI
  printf("Envoi commande Low Power au CH390...\n");
  
  // Activer l'interrupteur (INT) pour réveiller le MCU
  // Sur RP2040 ou ESP32, configurer INT_PIN comme entrée avec interruption sur front montant
  printf("Mise en veille du MCU, attente d'activité réseau...\n");
}

void loop() {
  // Le code entre ici n'est exécuté que si une interruption est levée (paquet reçu)
  printf("Paquet détecté ! Réveil du système.\n");
  
  // Traiter le paquet (lecture SPI)
  // ...
  
  // Remettre en veille
  printf("Retour en veille basse consommation...\n");
  // sleep_deep(); // Fonction dépendante du MCU
}

← Volver a la ficha