RP2040에서 간단히 W6100을 사용하려면 Ethernet_Generic 라이브러리를 사용하면 쉽게 테스트 해볼 수 있다.
우선 W6100을 사용하기 위해 USING_W6100 을 true로 설정한다.
#define USE_W5100 false
#define USING_W6100 true
다음으로 W6100 SPI설정을 해 준다.
#define USE_ETHERNET_GENERIC true
#define USE_THIS_SS_PIN 17 //RP2040 EXP
#define SPI_X spi0
#define SPI_ETHERNET_SETTINGS SPISettings(33000000, MSBFIRST, SPI_MODE0)
#define USING_SPI2 false
가장 간단하게 W6100을 이용하여 DCHP로 IP를 할당 받는 코드를 테스트 해 보자
#include <SPI.h>
#define USE_UIP_ETHERNET false
#define USE_W5100 false
#define USING_W6100 true
#define USE_ETHERNET_GENERIC true
#define USE_THIS_SS_PIN 17 //RP2040 EXP
#define SPI_X spi0
#define SPI_ETHERNET_SETTINGS SPISettings(33000000, MSBFIRST, SPI_MODE0)
#define USING_SPI2 false
#define ETHERNET_USE_RPIPICO true
#define SPI_HAS_TRANSFER_BUF true
//#define ETHERNET_USE_RPIPICO_DMA true
#define ETHERNET_USE_RPIPICO_DMA flase
#define DebugSerial Serial
#include "Ethernet_Generic.h"
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network.
// gateway and subnet are optional:
byte mac[] = {
0x00, 0x08, 0xDC, 0x00, 0x00, 0x00
};
void setup()
{
DebugSerial.begin(115200);
while (!DebugSerial) {
// ; // wait for serial port to connect. Needed for Leonardo only
}
DebugSerial.println("SPI INIT");
pinMode(USE_THIS_SS_PIN, OUTPUT);
digitalWrite(USE_THIS_SS_PIN, 1);
// initialize the ethernet device
Ethernet.init (USE_THIS_SS_PIN);
Ethernet.begin(mac);
DebugSerial.println("...");
// start listening for clients
server.begin();
DebugSerial.print("Iperf server address : ");
DebugSerial.println(Ethernet.localIP());
}
void loop()
{
}
반응형