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

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

Exemple conceptuel montrant comment utiliser la broche d'interruption du CH390 pour réveiller un MCU en veille profonde.

Cet exemple illustre l'interaction matériel/logiciel pour le low-power. Le CH390 doit être configuré via ses registres internes pour signaler une activité réseau sur la broche INT. Le microcontrôleur (RP2040/ESP32) doit être configuré pour dormir et se réveiller sur cette broche. Nécessite un driver SPI pour écrire les registres de contrôle du 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
}

← Retour à la fiche