---
title: "W5500 PHY Link 문의"
url: "https://maker.wiznet.io/forum/11602"
markdown_url: "https://maker.wiznet.io/forum/11602/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "eloiz"
created: "2016-01-18T07:43:02+09:00"
last_activity: "2017-05-04T08:38:01+09:00"
language: "ko"
views: 1390
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5500 PHY Link 문의

## Question

Asked by eloiz on 2016-01-18 in Ethernet Chips.

안녕하세요.

W5500을 이용해서 보드를 개발중인데 PHY Link 가 안되서 문의 드립니다.
일단 SPI 통신은 정상적으로 되구요. (IP, GW등 설정 됩니다)

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

PHY 체크 하는 부분에서 PHY_LINK_OFF만 계속해서 나옵니다(무한루프 상태).
케이블은 크로스케이블과 스트레이트 케이블 둘다 사용해봤지만 둘다 반응이 없네요.
정상적으로 연결되었을때 켜지는 LED도 불이 안들어옵니다.

STM32f101 + W5500 으로 만들었으며,
회로는 [wizwiki.net/wiki/doku.php?id=pro … fschematic](http://wizwiki.net/wiki/doku.php?id=products:w5500:refschematic) 이 페이지를 참조하였습니다.
(

- RJ-45 커넥터는 J0011D21B 를 사용하였구요

- 회로에서 W5500 리셋 하는 부분을 STM32F의 GPIO로 제어 하지 않고 RC 리셋회로를 만들어서 리셋 시켰습니다(10ms).

- 25MHz 크리스탈 사용했습니다.
  )
  포팅 코드는 [blog.cahg.org/wp/?p=40](http://blog.cahg.org/wp/?p=40) 이 블로그를 참고 했습니다.

전체 소스는 [dropbox.com/s/avbq40ohhur2e … t.zip?dl=0](https://www.dropbox.com/s/avbq40ohhur2efd/STM_Ethernet.zip?dl=0) 여기서 볼수 있습니다(/Source 폴더)
어떤 부분을 확인하면 될까요

ps. W5500-EVB 를 하나 구매했는데 하루 이틀 잘 되는거 확인하고 2주쯤 안쓰다가
다시 꺼내서 써볼려니 Tcp Connect가(펌웨어 변경 안한상태) 안되는군요. 고장일경우 혹시 수리 맡길려면 어디에 문의 하면 되나요?

## Replies

### Reply 1 by Edward, 2016-01-18

안녕하세요.

코드로 보았을 때는 문제가 없어보이는데요…

제작하신 회로도랑 PCB파일이 필요해보입니다.

일단 정상적으로 LINK가 되셨다는 뜻은 PHY가 정상동작한다는 것으로 판단됩니다.

아래 코드는 정상동작하는 코드인데, 비교 한 번 부탁드립니다.

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

그리고 보통 GPIO로 핀 전부 선언하고 SPI initialize하고 난 뒤에 아래 코드와 같이

세팅을 하게 되는데요. 이렇게 작성하신 것 맞나요???

void W5500Initialze(void)
{
unsigned char temp;
unsigned char W5500FifoSize[2][8] = {{2,2,2,2,2,2,2,2,},{2,2,2,2,2,2,2,2}};

```
W5500DeSelect();

/* spi function register */
reg_wizchip_spi_cbfunc(W5500ReadByte, W5500WriteByte);

/* CS function register */
reg_wizchip_cs_cbfunc(W5500Select,W5500DeSelect);

if(ctlwizchip(CW_INIT_WIZCHIP,(void*)W5500FifoSize) == -1)
{
	printf("W5500 initialized fail.\r\n");
}

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

}

만약 위 코드대로 하셨는데도 동일한 증상이 나타나신다면 제작하신 회로 확인이 필요할 것 같습니다.

감사합니다.

---

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