rp2040-lwip-ethernet-ping-6.ino
Utilisation du SDK Raspberry Pi Pico avec lwIP pour activer la pile TCP/IP nécessaire au fonctionnement de l'Ethernet.
Ce code nécessite le SDK Raspberry Pi Pico et le pilote CH390 spécifique. Il configure l'interface SPI0 pour communiquer avec le module UEXT-CH390. L'exécution montre les logs de démarrage du stack réseau via l'UART USB. Assurez-vous que les broches CS, RST et INT sont correctement mappées au connecteur UEXT.
rp2040-lwip-ethernet-ping-6.ino
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#include "lwip/apps/lwiperf.h"
#include "lwip/ip.h"
#include "lwip/netif.h"
#include "lwip/tcpip.h"
#include "lwip/init.h"
// Pinout spécifique UEXT-CH390 sur Pico (à vérifier selon câblage UEXT)
#define ETH_CS_PIN GPIO_PIN_17
#define ETH_RST_PIN GPIO_PIN_6
#define ETH_INT_PIN GPIO_PIN_7
static void print_ip_addr(const ip_addr_t* addr) {
char buf[IPADDR_BUF_SIZE];
ipaddr_ntoa_r(addr, buf, sizeof(buf));
printf("IP: %s\n", buf);
}
int main() {
stdio_init_all();
printf("Initialisation du CH390...\n");
// Initialisation matérielle bas-niveau pour CH390
gpio_init(ETH_CS_PIN); gpio_set_dir(ETH_CS_PIN, GPIO_OUT);
gpio_init(ETH_RST_PIN); gpio_set_dir(ETH_RST_PIN, GPIO_OUT);
gpio_put(ETH_RST_PIN, 0); sleep_ms(10); gpio_put(ETH_RST_PIN, 1); sleep_ms(100);
// Initialisation SPI0 (compatible CH390)
spi_init(spi0, 40000000); // 40MHz
gpio_set_function(GPIO_PIN_18, GPIO_FUNC_SPI); // SCK
gpio_set_function(GPIO_PIN_19, GPIO_FUNC_SPI); // MOSI
gpio_set_function(GPIO_PIN_20, GPIO_FUNC_SPI); // MISO
lwip_init();
// Note: Dans un cas réel, utiliser le driver lwip_ch390 fourni par Olimex/WCH
// Ici, structure théorique pour compiler le squelette
printf("Stack lwIP initialisé. Attente de l'IP...\n");
// Boucle principale
while (1) {
sleep_ms(1000);
printf("Heartbeat...\n");
}
return 0;
}