W5100S-EVB DHCPClinet

W5100S 공부하고 있는 초보 입니다.

W5100S-EVB 사용 해서 W5100S_loopback 프로그램은
loopback_tcps 함수랑 loopback_tcpc 함수는 잘 동작 되는거 확인 했습니다.

그리고 WIZnetDHCPClient 프로그램을 테스트 하고 있는데 동작이 안되고 있습니다.

캡처1

그림처럼 PHY Link-up check 하는 while 문을 무한 반복 하고 있습니다.

이유를 알고 싶습니다.

Chip Version를 제대로 읽지 못하는거라면, SPI가 정상동작하지 않는겁니다.
WIZCHIP을 아래와 같이 세팅하셨나요?
확인부탁드립니다.

wizchip_conf.h 내에

#define _WIZCHIP_                      W5100S

로 되어있나요?

의 경우 PHY link register를 제대로 읽어오지 못해서 발생하는 문제입니다.
CHIP Version 값이 정상으로 읽혀오는 상황에서 PHY Link loop에서 빠져나오지 못한다면, Lan cable이 연결되어 있지 않을 수 있습니다.

wizchip_conf.h 내에
#define WIZCHIP W5100S
정의 되어 있습니다.
그리고 LAN 케이블도 정상 연결 되어 있습니다.
W5100S_loopback 프로그램은 정상 적으로 동작 하고 있습니다.

제가 알고 싶은 것은 wiznet 의 WIZnetDHCPClient 예제가 W5100S-EVB 보드에서 잘 동작 하는게 확인된 예제인가요?

wizchip_conf.c 안에 아래 함수를 보면

int8_t ctlwizchip(ctlwizchip_type cwtype, void* arg)

W5100S chip 사용시 CW_GET_PHYLINK 에 대한 정의가 안되 있는거 같은데 확인 부탁 드립니다.

image
W5100S로 설정했을경우 CW_GET_PHYLINK를 사용할수 있도록 되어있습니다.

wiznet에서제공하는 DHCPclient예제는 정상동작합니다.

DHCPClient 예제가 정상동작하지 않는경우는

  1. DHCP Server가 없을경우
  2. timer handler를 enable안했을 경우
  • timer handler에 DHCP 관련 Handler가 들어가있습니다. timer hanler가 enable되어있지 않으면 추후 DHCP 재할당 받을때 문제 발생

현재 위즈넷에서 다운로드 받을수 있는 최종 화일을 보면 wizchip_conf.c 화일 내에
밑줄친 위치에는 _W5100S가 정의가 안되어 있습니다.
제가 다운로드한 화일은이 옛날 버젼일수도 있을거 같은데요.

혹시 최종 ioLibrary 화일을 받을수 있을까요?

해결이 됬습니다.

원인이 2가지 있었는데.
하나는 W5100S_loopback 예제에 포함된 ioLibrary 를 사용 했는데 이게 옛날 버전이었내요,
그래서 다른 ioLibrary 다운로드 해서 적용 했는데도 안됬어요.
다시 원인을 찾다보니 두번째 원인은 HAL_Config.h 에 SPI_1으로 정의 되어 있는 것을 SPI_2로 바꾸나까 되내요.

답변이 늦어서 죄송합니다.
말씀해주신 부분 참고하여 이후 iolibrary 및EVB 업데이트시 적용하도록 하겠습니다.