본문 바로가기

RaspberryPi/W55RP20

[W55RP20-4032] W55RP20 Arduino 개발환경 설정 - 기본 동작 테스트

W55RP20 은 W5500 + RP2040 + Flash Memory 가 포함된 SIP 칩으로 W5500이 독자 PIO SPI 버스에 연결되어 있다. SPI를 독립적으로 사용할 수 있다는 장점이 있고 속도도 더 빠르지만 기존에 RP2040에서 사용했던 W5500 라이브러리를 사용할 수 없어 코드 호환에 문제가 있다. 특히 기존에 쉽고 간단하게 사용하던 Arduino 코드를 사용할 수 없었다. 이를 해결하기 위해 Arduino 용 lwIP 라이브러리가 추가 되었고 Arduino Ethernet 관련 예제를 구동해 볼수 있다.

 

쉽고 간단함이 최고의 장점이 Arduino 예제 작성을 위한 개발 환경 설정을 해보자.

Arduino Preferences에 아래를 추가 한다.

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

 

 

 

Arduino Board Manager에서 w55rp20을 검색하면 Arduino-Pico를 추가 할수 있다.

 

 

Board Manager 에서 Raspberry Pi Pico/RP2040/RP2350 -> Wiznet W55RP20-EVB-Pico 를 선택한다.

 

 

이렇게 하면 W55RP20을 Arduino 환경에서 테스트 할 수 있다.


우선 보드의 가장 기본이 되는 LED, Switch, UART 등을 테스트 해 보자.

[W55RP20 4032] 보드에는 2개의 LED가 GP8, GP9에 연결되어 있다.

 

 

#include <Arduino.h>

#define LED_PORT          8
#define Led1On()          digitalWrite(LED_PORT, 1)
#define Led1Off()         digitalWrite(LED_PORT, 0)

#define LED_PORT2          9
#define Led2On()          digitalWrite(LED_PORT2, 1)
#define Led2Off()         digitalWrite(LED_PORT2, 0)

void setup() {
  pinMode(LED_PORT, OUTPUT);
  pinMode(LED_PORT2, OUTPUT);
}

void loop() {
  Led1On();
  Led2Off();
  delay(500);  

  Led1Off();
  Led2On();
  delay(500);  
}

 

 


스위치는 GP2, GP28에 각각 연결되어 있다.

 

#include <Arduino.h>

#define LED_PORT          8
#define Led1On()          digitalWrite(LED_PORT, 1)
#define Led1Off()         digitalWrite(LED_PORT, 0)

#define LED_PORT2          9
#define Led2On()          digitalWrite(LED_PORT2, 1)
#define Led2Off()         digitalWrite(LED_PORT2, 0)


#define SW_PORT1          2
#define GetSwitch1()      !digitalRead(SW_PORT1)

#define SW_PORT2          28
#define GetSwitch2()      !digitalRead(SW_PORT2)


void setup() {
  pinMode(LED_PORT, OUTPUT);
  pinMode(LED_PORT2, OUTPUT);

  pinMode(SW_PORT1, INPUT_PULLUP);
  pinMode(SW_PORT2, INPUT_PULLUP);
}


unsigned int curtime = 0;
unsigned int led_toggle = 0;

void loop() {
  if(GetSwitch1())
  {
    Led1On();
    delay(100);
  }
  else
  {
    Led1Off();
    delay(100);
  }
  
  if(millis() - curtime > 500)
  {
    curtime = millis();

    led_toggle ^= 1;

    if(led_toggle)Led2On();
    else Led2Off();
  }
}

 


디버깅용 UART는 표준 커넥터로 GP1(RXD), GP0(TXD)에 연결되어 있다.

 

 

Arduino ( \AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\5.6.0\variants\wiznet_55rp20_evb_pico\pins_arduino.h ) 파일에 아래와 같이 디폴트로 설정되어 있어 특별한 설정 없이 사용하면 된다.

// Serial
#define PIN_SERIAL1_TX (0u)
#define PIN_SERIAL1_RX (1u)

#define PIN_SERIAL2_TX (8u)
#define PIN_SERIAL2_RX (9u)