---
title: "APM32E103-KIT #22 - WIZnet W5500 (확장보드)"
url: "https://maker.wiznet.io/TheoIm/projects/apm32e103-kit-22-wiznet-w5500-/"
markdown_url: "https://maker.wiznet.io/TheoIm/projects/apm32e103-kit-22-wiznet-w5500-/md"
type: "UCC: User Created Content"
author: "baram"
author_url: "https://blog.naver.com/chcbaram/223421840622"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "baram"
original_url: "https://blog.naver.com/chcbaram/223421840622"
published: "2024-05-03"
language: "ko"
hardware: ["WIZnet W5500"]
likes: 0
views: 709
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# APM32E103-KIT #22 - WIZnet W5500 (확장보드)

> APM32E103-KIT #22 - WIZnet W5500 (확장보드)

Original author: baram (source: https://blog.naver.com/chcbaram/223421840622)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

이제 확장보드에서도 마지막인 WIZnet의 W5500 보드 구현을 추가하였습니다. SPI 통신으로 쉽게 이더넷 통신을 가능하게 하는 모듈입니다. 핀연결은 아래와 같이 되어 있습니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMjE4/MDAxNzEzNjE3ODA4MzQz.Ikh_Zcp93kJH5Y_Ec2nS8OJk8alTyaQTP_FZZ_Zzuksg.PB5apNwod1C4iYsSb488vLfUGTq59cD3FkAorke8q7sg.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753357%2Epng)

SPI 제어를 위해서 하드웨어 리스트에 추가했습니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfNzIg/MDAxNzEzNjE3OTI1OTc1.I6kgPAKB_lKo9YtkeIa4gZDLckx7B2pH6EyaLzyVujQg.RlBurMJ68cjsPuvMsmaw9THY1LVy5DJV776hUNLk75cg.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753363%2Epng)

WIZnet 라이브러리 코드는 이전에 만들어서 사용했던 것에서 W5500 부분을 추가했습니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMjg4/MDAxNzEzNjE3OTU0NzA2.4G2C5KGVi4Uou-nSC1OXUuU0a3UTrWggPlRm9iFlVB4g.Hw0sUPvJEFqeUGK9J4k5hx3o28kB8RitS9kEhFPjKB4g.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753372%2Epng)

w5500.c 안에는 일부 포팅해야 하는 함수가 있습니다. SPI 를 통해서 레지스터를 읽고 쓰는 함수를 하드웨어에 맞게 수정합니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMTU0/MDAxNzEzNjE4MDAyODU0.F7uKw5YpQe-m1O9L9n-Im6RE_obc7-Z379Q_eG4ovKYg.GRibrvqqucoC3vHJaSZ3kAXy8YyeRQOvAQXrqSB9Ab8g.PNG/image.png?type=w773)

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMjg3/MDAxNzEzNjE4MDE4OTE4.l2tah32MRsljM-CZFCoxo4fAbReYSq7q7Uei5UD1QMUg.KA3soJhZ17HVY-QdiZbseQMyUmXXHvk0nCOOR7sOmL8g.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753380%2Epng)

초기화 함수를 만들어서 WIZnet 보드를 리셋하고 SPI 초기화를 진행합니다.

![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753390%2Epng)

![](https://postfiles.pstatic.net/MjAyNDA0MjBfNTIg/MDAxNzEzNjE4MDc0Njk0.qGj_uHNr0SyIhg-RDXOS5I_P-OMcadXQwjHpZL4whnYg.93kd8WI9r92Fu2m96k_4g4ngf1DMH-ng5iOTVLOCov8g.PNG/image.png?type=w773)

​

위즈넷 초기화 함수도 수정을 해야 합니다. w5500Init() 함수를 추가해서 초기화 하고 이후에는 위즈넷 라이브러리 초기화를 합니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMjA1/MDAxNzEzNjE4MjU3NjYz.e8Oj-p5Eo1BgXuGJlw3uttu05-bY_37Vz7Sb-yHKC0Yg.64tRfWpDXOMTI-7I9wFc1JY2EUrf5C6y3cYorwNtU08g.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753397%2Epng)

DHCP와 시간을 얻어오기 위해서 SNTP도 초기화를 진행합니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMTY4/MDAxNzEzNjE4MzkyNjIy.SDRGqt8AUQFYnfgd2teTxJq-dCy7AeI-duOvelOqe_Eg.BHYZJvf_4fcEJI8C8NqN5N4HEteagIhgAGD59UUOp_sg.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753403%2Epng)

ap.c에서 위즈넷 기능을 확인 수행하는 함수를 호출해야 합니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMjUz/MDAxNzEzNjE4NDY5NjA5.B2MfvfNf3jG5lr7C5HiofmhuY6z6e256a7kr3Kj_k6Qg.YdgquFHyvUFvQvTxdrpSsGOUhqyKUXz2bP0NtII_hFog.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753408%2Epng)

위즈넷 업데이트 함수에서는 필요한 서비스에 대한 처리 함수를 차례대로 실행합니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfNTgg/MDAxNzEzNjE4NTE0Mzkz.-c9UTuvZWf3WD5ZfiRfwr_1shnWWSWVlcAOuyxOQznYg.nBDT5HaAjr-PS9gMq_cRUnefEbNerQ8yN6_fv8GK_dUg.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753417%2Epng)

OLED에 네트웍 링크 상태와 연결되었을때 시간을 받아와서 날짜와 시간을 표시하게 됩니다. 그리고 버튼을 누르면 IP 정보를 표시합니다.

> ```c
void updateLCD(void)
{

  if (lcdDrawAvailable())
  {
    lcdClearBuffer(black);

    if (wiznetIsLink() == false)
    {
      lcdPrintf(0, 8, white, "Not Connected");        
    }
    else 
    {
      if (wiznetIsGetIP() == true)
      {
        if (buttonGetPressed(_DEF_BUTTON1))
        {
           wiznet_info_t net_info;

          wiznetGetInfo(&net_info);

          lcdPrintf(0,  0, white,
                    "IP %d.%d.%d.%d", 
                    net_info.ip[0], 
                    net_info.ip[1],
                    net_info.ip[2],
                    net_info.ip[3]);
          lcdPrintf(0, 16, white,
                    "DHCP : %s\n", wiznetIsGetIP() ? "True":"False");
        }
        else
        {
          rtc_time_t rtc_time;
          rtc_date_t rtc_date;
          const char *week_str[] = {"일", "월", "화", "수", "목", "금", "토"};

          rtcGetTime(&rtc_time);
          rtcGetDate(&rtc_date);

          lcdPrintf(0, 0, white,
                    "%02d-%02d-%02d (%s)",
                    rtc_date.year, rtc_date.month, rtc_date.day, week_str[rtc_date.week]);

          lcdPrintf(0, 16, white,
                    "%02d:%02d:%02d",
                    rtc_time.hours, rtc_time.minutes, rtc_time.seconds);
        }
      }
      else
      {
        lcdPrintf(0, 8, white, "Getting_IP..");        
      }
    }

    lcdRequestDraw();
  }
}
```

네트웍 연결 후 ping으로 일단 확인해 봅니다.

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMTA5/MDAxNzEzNjE5NDk2Njcz.BlgozdVFyisB0nDG89BlScnl6LZrxb1dRFgKUBuYnlAg.YmXkT6B3muzZXSEzm50IGo4TvOxGZ9YS2Hvp04JPyfgg.PNG/image.png?type=w773)

​![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753443%2Epng)

**APM32E103 WIZnet W5500 시험**

​

소스코드는 깃허브에 업데이트 하였습니다.

<https://github.com/chcbaram/apm32e103-kit/tree/main/firmware/exam/EX-15-WIZnet-W5500>

​

​

이제 확장보드에 있는 모든 모듈도 기능 확인은 완료 하였습니다.

모든 기능을 활성화 했을때 FLASH는 160KB 정도 사용되었습니다. 그래도 기존 코드들이 있어서 생각보다 빠르게 기능 구현을 진행 할 수 있었습니다.

![](https://maker.wiznet.io/upload/ckeditor5/446449304%5F1714753465%2Epng)

![](https://postfiles.pstatic.net/MjAyNDA0MjBfMTA1/MDAxNzEzNjE4Nzg3NzEx.VOPEUSFpBX2U6-x8UstjZJn3neLlMmfcDvVkBoYfPG8g.AoCw2CBZxUIEUPWe_zoQ_8bF48ANeNW4S9Ic5CU_D9gg.PNG/image.png?type=w773)

---

Source: https://maker.wiznet.io/TheoIm/projects/apm32e103-kit-22-wiznet-w5500-/
