Wiznet makers

gunn

Published March 13, 2026 ©

75 UCC

0 VAR

0 Contests

0 Followers

0 Following

Original Link

ESP32-S3 + W5500以太网实战:从SPI配置到静态IP设置的完整流程

ESP32-S3 + W5500 이더넷 실습: SPI 설정부터 고정 IP 설정까지 완벽한 과정

COMPONENTS
PROJECT DESCRIPTION

This article is a practical guide on implementing a wired Ethernet connection by combining the ESP32-S3 and W5500. The main contents are as follows:

**Hardware Connection**: Covers SPI interface-based pin mapping (MOSI/MISO/SCLK/CS, etc.), power decoupling capacitor placement, and methods to ensure signal integrity.

**SPI Optimization**: Although the W5500 supports up to 80MHz, it is necessary to lower the frequency to 10–40MHz in practice depending on the PCB environment for stability; a DMA buffer of 4096 bytes is suggested as the optimal balance point.

**MAC Address Management**: Explains three strategies—utilizing the ESP32-S3's built-in native MAC, generating locally, and reading from external storage—and emphasizes that these must be configured before startup after driver installation.

**Static IP Configuration**: You must explicitly stop DHCP first (`esp_netif_dhcpc_stop()`) before applying the static IP; failure to follow this order may result in the system reverting to a dynamic IP after a reboot.

** **Advanced Features**: Interrupt + Polling Hybrid Mode, SPI Clock Dynamic Tuning, and an Automatic Error Recovery Mechanism are introduced, achieving an MTBF of over 8,000 hours in real-world industrial Modbus gateway applications.

---

## Defining the Role of the W5500

In this article, the W5500 is positioned as a **Hardware TCP/IP Offload Ethernet Controller**.

While the ESP32-S3 has built-in Wi-Fi/BLE, it lacks a wired Ethernet MAC/PHY. The W5500 fills this void, and its core role is as follows:

| Role | Content |

|------|------|

| **TCP/IP Hardware Processing** | Processes protocol stacks such as TCP, UDP, IPv4, and ICMP via internal hardware → Minimizes ESP32-S3 CPU load |

| **SPI Bridge** | Serves as a communication channel connected to the ESP32-S3 via an SPI interface to exchange Ethernet frames |

| **Internal Buffer Management** | Packet flow control with a built-in 32KB transmit/receive buffer |

| **Network Interface Expansion** | Serves as an expansion chip that adds a wired Ethernet port to the Wi-Fi-only ESP32-S3 |

In conclusion, the W5500 is a **dedicated network processing offload chip** that enables the ESP32-S3 to reliably operate wired Ethernet without a software stack (such as LwIP). This is also the key differentiating feature of the WIZnet W5500.

 ========

글 요약

이 글은 ESP32-S3와 W5500을 결합하여 유선 이더넷 연결을 구현하는 실전 가이드입니다. 

주요 내용은 다음과 같습니다.

1. 하드웨어 연결: SPI 인터페이스 기반 핀 매핑(MOSI/MISO/SCLK/CS 등), 전원 디커플링 커패시터 배치, 신호 무결성 확보 방법을 다룹니다.

2. SPI 최적화: W5500은 최대 80MHz를 지원하지만 PCB 환경에 따라 실제로는 10~40MHz 수준으로 낮춰야 안정적이며, DMA 버퍼는 4096바이트가 균형점으로 제시됩니다.

3. MAC 주소 관리: ESP32-S3 내장 고유 MAC 활용, 로컬 생성, 외부 저장소 읽기의 세 가지 전략을 설명하고, 드라이버 설치 후 시작 전에 반드시 설정해야 한다고 강조합니다.

4. 고정 IP 설정: DHCP를 먼저 명시적으로 중지(esp_netif_dhcpc_stop())한 뒤 고정 IP를 적용해야 하며, 이 순서를 지키지 않으면 재부팅 후 동적 IP로 되돌아가는 문제가 발생합니다.

5. 고급 기능: 인터럽트+폴링 하이브리드 모드, SPI 클럭 동적 조정, 자동 오류 복구 메커니즘이 소개되며, 실제 산업용 Modbus 게이트웨이 사례에서 MTBF 8,000시간 이상을 달성했습니다.


W5500의 역할 정의

이 글에서 W5500은 하드웨어 TCP/IP 오프로드 이더넷 컨트롤러로 포지셔닝됩니다.

ESP32-S3는 Wi-Fi/BLE를 내장하고 있지만 유선 이더넷 MAC/PHY가 없습니다. W5500은 이 빈자리를 채우며, 핵심 역할은 다음과 같습니다.

역할내용
TCP/IP 하드웨어 처리TCP, UDP, IPv4, ICMP 등 프로토콜 스택을 내부 하드웨어로 처리 → ESP32-S3 CPU 부담 최소화
SPI 브리지ESP32-S3와 SPI 인터페이스로 연결되어 이더넷 프레임을 주고받는 통신 채널 역할
내부 버퍼 관리32KB 송수신 버퍼를 내장하여 패킷 흐름 제어
네트워크 인터페이스 확장Wi-Fi 전용인 ESP32-S3에 유선 이더넷 포트를 추가하는 확장 칩 역할

결론적으로 W5500은 ESP32-S3가 소프트웨어 스택(LwIP 등) 없이도 유선 이더넷을 안정적으로 운용할 수 있도록 해주는 전용 네트워크 처리 오프로드 칩입니다. 이것이 WIZnet W5500의 핵심 차별점이기도 하죠.


ESP32-S3 와 W5500 간 SPI 통신을 ESP-IDE 환경에서 설정할 때, 고려해야 할 3가지

1. 시계 속도 - 80MHz를 지원하지만, 실제 환경에서는 PCB 트레이스 길이, 기생 커패시턴스, 임피던스 불일치 등의 물리적 요인이 신호를 왜곡시키므로 20~33Mhz 로 목표치 설정해야 함

2. 위상 극성 - 데이타 샘플 시점이 일치해야 함으로 mode=3 보다는 mode=0 을 사용하여 동기화함

3. 타이밍 일치 - W5500에서 데이터를 읽어올 때(MISO line)의 지연이 가장 흔한 문제이므로 더미클럭을 삽입 해결


하드웨어 연결시 주의할 점 3가지

1. 전원 공급 장치 분리  - W5500은 하나의 칩이지만 내부적으로 두 가지 성격이 전혀 다른 회로가 공존하여 하나의 전원으로 하면 큰 문제가 발생

2. 신호 무결성 - 임피던스가 불일치하거나 트레이스가 길어지면 다음 현상이 발생합니다.

① SCLK 트레이스 설계

② 접지 보호 (Ground Shielding)

③ PHY 차동 쌍 배선 (이더넷 측)

④ 접지 연결점 (AGND/DGND 단일 접지)

3. 인터럽트 처리 -  네트워크 이벤트가 발생하면 INT 핀을 Low로 당겨(Active Low) ESP32-S3에 알림

① 하드웨어 연결

② 트리거 방식 설정

③ ISR 내부 처리 원칙


SPI 통신 디버깅 기법

1. 물리적 연결 상태를 확인하기 위해 모든 핀의 연결 상태를 확인

2. 전원 공급 확인 :  W5500 의 3.3V 에서 5% 이내의 오차인지 확인

3. 오실로스코프 관찰 : SCLK, MOSI, MISO 확인

4. 클럭 주파수 낮추기 : 1Mhz 로 낮춤

5. 코드 간소화 


2장 : MAC 주소 관리 및 네트워크 식별

전략1 : ESP32-S3 의 공장 출고시 MAC 주소를 사용합니다.

전략2 : 로컬에서 관리되는 MAC 주소 생성.

전략3 : MAC 주소를 외부 EEPROM 또는 플래시에서 저장할 수 있음


3장 : 고정 IP 설정의 완벽한 구현 및 일반적인 문제점

주요 문제의 원인들

각각의 해결방법들


4장 : SPI 클럭 속도의 동적 조정

W5500 의 다양한 SPI 클럭 모두 자동 조절로 통신 안정성을 최적화할 수 있다


4장 3절 : W5500 의 여러 저전력 모드를 지원하여 배터리로 작동하는 IoT 기기에서 전력관리 방법


5장 : 기타 여러가지 최적화 이야기 (경험를 바탕으로)

a. SPI DMA 버퍼 크기 : 데이터 처리량에 따라 조정. 대용량 데이터 전송시 8192바이트로 설정.
b. 작업 우선순위 : 네트워크 처리 작업은 데이터 수집 작업보다 우선순위가 높아야 합니다.
c. 워치독 구성 : 시스템 교착 상태를 방지하기 위해 핵심 작업에 대한 워치독을 구성합니다.
d. 메모리 최적화 : PSRAM을 사용하여 메모리를 확장하고 이력 데이터를 캐시합니다.
e. 로그 관리 : 운영 환경에서는 디버그 로깅이 비활성화되어 있으며, 중요 이벤트는 순환 버퍼를 사용하여 기록됩니다.
f. 산업용 게이트웨이 솔루션은 여러 분야에서 1년 이상 안정적으로 운영되어 왔으며, 평균 고장 간격(MTBF)은 8,000시간을 초과합니다. 

g. SPI 클록의 동적 조정 과 네트워크 이상 발생 시 자체 복구 메커니즘 존재 : 복잡한 산업 환경에도 잘 적응 가능.
 

 

FAQ

Q1. W5500 SPI 통신이 불안정할 때 가장 먼저 해야 할 조치는? → 클럭 주파수를 10MHz로 낮추고 버전 레지스터에서 0x04가 읽히는지 확인한다.

Q2. 고정 IP를 설정했는데 재부팅 후 동적 IP가 할당되는 이유는? → 고정 IP 설정 전에 esp_netif_dhcpc_stop()으로 DHCP 클라이언트를 먼저 중지하지 않았기 때문이다.

Q3. W5500의 MAC 주소를 설정해야 하는 올바른 타이밍은?esp_eth_driver_install() 실행 후, esp_eth_start() 호출 전 사이에 설정해야 한다.

Documents
Comments Write