rp2040-lwip-ethernet-ping-6.ino
Utiliza el SDK de Raspberry Pi Pico y la pila lwIP para habilitar la conectividad TCP/IP sobre el módulo Ethernet CH390.
Este código requiere el SDK de Raspberry Pi Pico y el controlador específico de CH390. Configura la interfaz SPI0 para comunicarse con el módulo UEXT-CH390. La ejecución muestra registros de inicio de la pila de red a través de UART USB. Asegúrese de que los pines CS, RST e INT estén correctamente mapeados al conector 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;
}