---
title: "w5500 처음 써보는데, 초기화부터 막히네요..."
url: "https://maker.wiznet.io/forum/12981"
markdown_url: "https://maker.wiznet.io/forum/12981/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "Sehui Han Shidare Ho"
created: "2018-07-06T06:37:12+09:00"
last_activity: "2018-07-11T02:07:08+09:00"
language: "ko"
views: 2217
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# w5500 처음 써보는데, 초기화부터 막히네요...

## Question

Asked by Sehui Han Shidare Ho on 2018-07-06 in Ethernet Chips.

라이브러리가 계속 바뀌니, 예제코드 받아봐도 사용법이 상당히 다른경우가 있네요.

며칠전에 [GitHub - Wiznet/ioLibrary_Driver: ioLibrary_Driver can be used for the application design of WIZnet TCP/IP chips as W5500, W5300, W5200, W5100 W5100S.](https://github.com/Wiznet/ioLibrary_Driver) 에서 라이브러리를 받았습니다.

W5500과 MCU가 SPI로 연결되어 있습니다.
SCK, MOSI, MISO, SCSn, RSTn
제눈엔 wizchip_conf.c 에서 세팅을 잡아줘야 하는걸로 보이는데요.

질문1.
178번째 줄을 보면 아래 구조체가 있습니다.

_WIZCHIP WIZCHIP =
{
*WIZCHIP_IO_MODE*,
*WIZCHIP_ID* ,
wizchip_cris_enter,
wizchip_cris_exit,
wizchip_cs_select,
wizchip_cs_deselect,
//M20150601 : Rename the function
//wizchip_bus_readbyte,
//wizchip_bus_writebyte
wizchip_bus_readdata,
wizchip_bus_writedata,
//wizchip_spi_readbyte,
//wizchip_spi_writebyte
};

기본값이 이렇게 되어있는데요, spi 부분이 주석처리 되어있고
버스 부분이 활성화가 되어 있습니다.
이것을 그냥 놔두고 쓰면 되나요?

질문2.
SPI DMA 기능을 써서 데이터를 한번에 왕창 보내고 왕창 받으려고 합니다.
wizchip_conf.c 코드를 보면 146번째 줄에
void wizchip_spi_readburst(uint8_t* pBuf, uint16_t len) {}
라고 함수가 보이는데요, 여기에 DMA 코드를 넣으면 되는건가요?

질문3.
main.c 에서 socket.h 를 include 한 이후에
w5500 으로 데이터를 주고 받으려면, int main 문 안에 어떤 코드들을 넣어야 하는지 궁금합니다.
인터넷에서 굴러다니는 예제를 보면

```
/// wiznet 5500 reset
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
sys_tick_cnt = 100;
while(sys_tick_cnt);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
///

wizchip_struct_init();
wizchip_sw_reset();

/* WIZCHIP SOCKET Buffer initialize */
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1)
{
	printf("WIZCHIP Initialized fail.\r\n");
	while(1);
}

/* PHY link status check */
do
{
	if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1)
	  	printf("Unknown PHY Link stauts.\r\n");
}while(tmp == PHY_LINK_OFF);

/* Network initialization */
network_init();
```

이렇게 선언하고 끝인데, 최신버전의 라이브러리에서도 이렇게 쓰면 되는건가요?

## Replies

### Reply 1 by irina, 2018-07-11

Sehui_Han_Shidare_Ho:

> 로 데이터를 주고 받으려면, in

[W5500 세팅방법 궁금합니다.](https://forum.wiznet.io/t/topic/4809/2) [W5500](https://maker.wiznet.io/c/tcp-ip-chip/w5500/18)

> 1.SPI 통신을 하신다면, wizchip_conf.h에 보시면 /** * @brief Define interface mode. * @todo you should select interface mode as chip. Select one of @ref _WIZCHIP_IO_MODE_SPI_ , @ref _WIZCHIP_IO_MODE_BUS_DIR_ or @ref _WIZCHIP_IO_MODE_BUS_INDIR_ */ // #define WIZCHIP_IO_MODE WIZCHIP_IO_MODE_BUS_DIR // #define WIZCHIP_IO_MODE WIZCHIP_IO_MODE_BUS_INDIR #define WIZCHIP_IO_MODE WIZCHIP_IO_MODE_SPI WIZCHIP_IO_MODE 를 SPI로 선택만 해주시면 사용가능합니다. 2… W5500 + STM32F4xx 를 SPI DMA를 사…

->질문 1,2는 위의 링크에 가셔서 보시면됩니다.

질문 3.
PHY링크를 확인한 후 넘어갔다면, 저희가 제공하는 라이브러리 안에 있는 함수를 사용하시면 됩니다.
예를 들어 Version Register(0x0039)를 읽고 싶다면.

```
                   ret = getVERSIONR();
```

넣어주면 ret에 W5500의 버전값인 0x04 값이 출력됩니다.

---

Source: https://maker.wiznet.io/forum/12981
