ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raspberry Pi Pico 와 WIZ810Sio를 이용한 Ethernet loopback 예제
    Raspberry Pi 2021. 9. 30. 12:51

    라즈베리 파이 피코에는 다양한 기능들이 있지만 아쉽게도 네트워크에 관련된 기능은 없습니다. 그래서 이번 글은 Raspberry Pi Pico와 WIZ810Sio만 있다면 초보자들도 쉽게 Ethernet 통신을 사용할 수 있도록 Loopback test를 해보려 합니다.

     

    BUILD 환경

    Build 환경 구성 정리 잘해놓은 블로그 링크 올려드릴게요 이분 블로그 참고하시기 바라겠습니다. :D

     

     

    Raspberry Pi Pico : C/C++ SDK and Toolchain Setup in Windows 10 - Arnab Kumar Das

    Raspberry Pi Pico / RP2040 Microcontroller C/C++ SDK and Toolchain Setup in Windows 10 | Raspberry Pi Pico Programming Tutorial

    www.arnabkumardas.com

     

    Hardware 구성

    Pico를 구성한 환경에 따라 다르겠지만, female to female 점퍼선 8개를 이용하여 아래와 같이 연결하였습니다.

    [Pico - WIZ810Sio 연결]

    자세한 핀맵은 아래를 참고해주세요.

    Pico WIZ810Sio
    GP21 J1,6(INTn)
    GP20 J2,5(RSTn)
    GP19 J1,3(MOSI)
    GP18 J1,4(SCLK)
    GP17 J1,5(SCSn)
    GP16 J2,6(MISO)
    3V3(OUT)   3V3D
    GND GND

    하드웨어 구성을 완료했으면 S/W를 올려보도록 하죠

     

    Software Build

    먼저, 아래의 git에 접속해 code를 다운로드하여주세요.

     

     

    GitHub - Wiznet/RP2040-HAT-C

    Contribute to Wiznet/RP2040-HAT-C development by creating an account on GitHub.

    github.com

     

    Visual Studio Code를 아래와 같은 cmd(Developer Command Prompt for VS 2019) 창에서 "code"라는 명령어를 통해 실행시켜줍니다.

     

    실행 후, Open Folder를 선택해 위에서 다운로드한 폴더 경로를 선택합니다.

     

    Select a Kit for RP2040-HAT-C란에 우리가 사용할 CMake Kit인 "GCC10.2.1 arm-none-eabi"를 선택해 줍니다.

     

    그다음, w5x00_loopback.c 가 있는 경로로 들어가 줍니다. (경로: examples\loopback\w5x00_loopback.c)

     

    w5x00_loopback.c에 있는 코드를 보도록 하겠습니다. 먼저, 아래 코드는 SPI pin 설정을 해주는 부분입니다.

    #define SPI_PORT spi0
    
    #define PIN_SCK 18
    #define PIN_MOSI 19
    #define PIN_MISO 16
    #define PIN_CS 17
    #define PIN_RST 20

     

    IP 및 MAC address 등을 설정해주는 부분입니다. 기본적인 설정들(IP, Gateway)을 자신의 PC 환경에 맞게 설정해주세요.

    static wiz_NetInfo g_net_info =
        {
            .mac = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56}, // MAC address
            .ip = {192, 168, 11, 2},                     // IP address
            .sn = {255, 255, 255, 0},                    // Subnet Mask
            .gw = {192, 168, 11, 1},                     // Gateway
            .dns = {8, 8, 8, 8},                         // DNS server
            .dhcp = NETINFO_STATIC                       // DHCP
    };

     

     

    SPI clock 설정하는 부분입니다. 이번 예제에서는 5 MHz로 동작시키겠습니다.

    spi_init(SPI_PORT, 5000 * 1000);		// this example will use SPI0 at 5MHz

     

    이제 Build를 할 차례입니다. VSC 하단 부분의 Build 클릭 or 단축키 "F7"을 눌러 Build를 진행하겠습니다.

    빌드가 오류 없이 완료되었다면 위에 보이는 그림과 같이 "[build] Build finished with exit code 0"이 출력되어야 합니다.

     

    Upload and Run

    • Build 완료로 생성된 파일을 Pico에 올려보려 합니다. 저 같은 경우에는 Tera Term과 Hercules를 사용하여 loopback 테스트를 진행하였습니다.
    • 프로젝트 폴더 경로에서 build 파일 경로로 이동하여 아래와 같이 "w5x00_loopback.uf2" 파일을 찾습니다. (경로: RP2040-HAT-C\build\examples\loopback)

     

    BOOTSEL 버튼을 누른 상태에서, Pico에 전원을 인가하면 아래와 같이 저장장치 RPI-RP2 Drive 화면이 출력됩니다.

     

    • "w5x00_loopback.uf2" 파일을 Pico 저장장치 RPI-RP2에 Drag and Drop을 해줍니다. 그러면, Pico가 자동적으로 Reboot 됩니다.
    • Tera Term을 연결하여 Network 정보를 확인하겠습니다. Pico의 COM Port 번호가 몇 번인지 장치 관리자를 통해 확인 후, 연결해 줍니다. (저는 COM15입니다. 만약, Port를 연결했는데 아무 반응이 없을 시, Pico를 재부팅해보시기를 바랍니다. 또한 COM Port 번호 재확인 확인하시기 바랍니다.)

    ping 테스트를 해보겠습니다.

     

    ping 테스트가 완료됐으면 이제 Hercules를 이용하여 loopback 테스트를 진행하겠습니다. Hercules를 실행시킨 뒤 아래와 같이 진행해 주세요.

    1. TCP Client 항목을 선택합니다.
    2. 자신이 설정한 WIZ810Sio의 IP, Port 번호를 입력합니다.
    3. Connect 버튼을 누릅니다.
    4. 정상적으로 연결이 완료되면 오른쪽 그림과 같이 Msg가 나오게 됩니다.

     

    마지막으로 원하는 Msg를 Send 해보겠습니다.

    보낸 Msg가 Hercules 창을 통해 출력되는 걸 확인하는 거로 이번 블로그 글을 마치겠습니다. 수고하셨습니다 :D

Designed by Tistory.