안녕하세요?
아래 질문자님처럼 저도 동시에 2개 이상의 W5500장비를 사용해야 합니다.
1대 할때는 문제 없는데요.
2대 동시 사용시 데이타 응답이 없거나 기타 등등의 이유로 동작이 원활하지가 않습니다.
- YouTube <=== 동영상이 안올라 가서 유튜브에 올렸습니다.
확인 부탁 드립니다.
STM32F103 과 연동 해서 사용 중인데요.
wiz_NetInfo gWIZNETINFO = {.mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef},
.ip = {1,2,3,4},
.sn = {255, 255, 255, 0},
.gw = {192, 168,0, 1},
.dns = {8, 8, 8, 8},
.dhcp = NETINFO_STATIC};
위와 같이 설정 해놓고 IP는 중간에 바꾸어서 사용 합니다.
192.168.0.2
192.168.0.4
이렇게 해서 테스트 하고 있습니다.
W5500Initialze();
wizchip_setnetinfo(&gWIZNETINFO);
print_network_information();
중간에 위와 같이 설정 하구요 (라이브러리에 있는거 그대로 불러서 사용)
Main 문에서 While 에서
while(1){
if(EDIT_Mode==0) Display_FND(); else Display_EDIT();
W5500(0, buffer, WIFI_PORT);
}
위와 같은 방법으로 불러서 사용중입니다.
int32_t W5500(uint8_t sn, uint8_t* buf, uint16_t port){
int32_t ret;
uint16_t size = 0, sentsize=0;
double c_cnt, c_pos, c_pos1,t_pos;
int drv_value;
char send_buff[50];
#ifdef _LOOPBACK_DEBUG_
uint8_t destip[4];
uint16_t destport;
#endif
switch(getSn_SR(sn)){
case SOCK_LISTEN:{//0x14 ////////////////////////////////////////////////
asm("nop");
break;
}
case SOCK_SYNSENT:{//0x15 ////////////////////////////////////////////////
asm("nop");
break;
}
case SOCK_ESTABLISHED : //0x17 ///////////////////////////////////////////
if(getSn_IR(sn) & Sn_IR_CON){
#ifdef _LOOPBACK_DEBUG_
getSn_DIPR(sn, destip);
destport = getSn_DPORT(sn);
printf("%d:Connected - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport);
#endif
setSn_IR(sn,Sn_IR_CON);
}
if((size = getSn_RX_RSR(sn)) > 0){ // Don't need to check SOCKERR_BUSY because it doesn't not occur.
if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE;
ret = recv(sn, buf, size);
위과 같이 W5500은 자료로 있던건지 인터넷에서 찾은거 그대로 사용 중입니다.
뭐가 문제 인지 모르겠는데요.
무슨 모드로 사용하는건지도 모르겠고 그냥 1개 할때 잘 되길래 그렇게 사용하고 있었는데 2대 사용할때 문제가 될줄은 ㅠ.ㅠ
어떤 부분을 확인 해봐야 되나요?
밑에 다른분 글 달린거 보면 MAC 주소가 언급 되었던데.
W5500 장비 마다 MAC 주소를 임의로 틀리게 주어야 되나요?
이부분 말고는 어떤 부분을 확인 해봐야 될까요?
동영상 보시는 거처럼
인터넷을 통한 공유기가 아니라
노트북 — HUB ----- W5500 (IP 192.168.0.2 PORT 10)
---- W5500 (IP 192.168.0.4 PORT 10)
이렇게 사용 중입니다.