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

Olimex UEXT-CH390: SPI to Ethernet 10/100 Mbps Module for Microcontrollers · File : uext-ch390-low-power-wake-8.ino · Language : C (C Microcontrôleur générique · Use case : Implémenter une stratégie d'économie d'énergie où le microcontrôleur dort jusqu'à la détection de paquet Ethernet.

Conceptual example showing how to use the CH390 interrupt pin to wake up a MCU in deep sleep.

This example illustrates hardware/software interaction for low-power modes. The CH390 must be configured via its internal registers to signal network activity on the INT pin. The microcontroller (RP2040/ESP32) must be set to sleep and wake on this pin. Requires an SPI driver to write to the CH390 control registers.

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
}

← Back to the board