W5500 Arduino 라이브러리 Ethernet2 를 이용하여 W5500을 테스트 하면 속도가 느리다.
ESP32-C에서도 역시 W5500의 TCP 전송율이 5Mbp정도로 느리게 측정된다.
라이브러리를 수정해서 ESP32용으로 만들어 테스트 해 보았다.
\Arduino\libraries\Ethernet2\src\utility\w5500.cpp
#if _USE_RP2040_SPI_DMA
#include "w5500_rp2040_dma.hpp"
#elif _USE_STM32_SPI_DMA
#include "w5500_stm32_dma.hpp"
#elif _USE_ESP32_SPI
#include "w5500_esp32.hpp"
#else
#include "w5500.hpp"
#endif
#define USE_THIS_SS_PIN 7
#include <SPI.h>
#include <Ethernet2.h>
byte mac[] = {
0x00, 0x08, 0xDC, 0x00, 0x00, 0x00
};
EthernetServer server(5001);
void setup() {
Serial.begin(115200);
Ethernet.w5500_cspin = USE_THIS_SS_PIN;
//Ethernet.begin(mac, ip, dns_server, gateway, subnet);
Ethernet.begin(mac);
server.begin();
Serial.print("Iperf server address : ");
Serial.println(Ethernet.localIP());
}
void loop() {
byte buf[2048];
unsigned int len = 0;
// wait for a new client:
EthernetClient client = server.available();
if (client) {
Serial.println("Here is new client for check arduino performance");
while (client.connected())
{
len = client.available();
if (len)
{
client.read(buf, 2048);
}
}
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
라이브러리 수정후 ESP32-C3에서 W5500 으로 iperf 테스트해보면 TCP 전송률이 13Mbps정도로 측정된다.
Ax 프로그램으로 테스트 해보면 TCP 수신 전송률이 12Mbps 정도로 측정이 된다.
반응형