안녕하십니까?
메일을 보내도 답장도 없고 전화 문의는 내용을 잘 몰라서 모르겠다 하시고 여기다 문의 하라고 해서 이곳에 글 남깁니다. (많이 실망 했습니다. 전에 계셨던 분은 정말 친절하게 해주셨던 기억만 있었나 보네요.)
우선 회로 상에는 문제가 없음을 기본 전제 조건으로 문의 드립니다.
약 4년전에 교육 받았을당시 사용 했던 W5500 관련 IO_Library를 사용하고 있습니다.
그리고 STM32F 제품 프로그램 상에서 아래와 같이 설정을 하고 있습니다.
////////////////////////////// W5500 //////////////////////////////////////////////////////////
BYTE buffer[512]; // file copy buffer
wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef},
.ip = {192, 168, 11, 194},
.sn = {255, 255, 255, 0},
.gw = {192, 168, 11, 1},
.dns = {8, 8, 8, 8},
.dhcp = NETINFO_STATIC};
/////////////////////////////////////////////////////////////////////////////////////////////
main 에서는
Load_Net_Parameters();
W5500_Config();
W5500Initialze();
wizchip_setnetinfo(&gWIZNETINFO);
print_network_information();
W5500_CS_On;
W5500_RST_On;
위와 같이 사용 하고 있구요.
while(1){//W5500 TEST for loopback OK~!
loopback_tcps(0,buffer,12345);
}
void print_network_information(void){
wizchip_getnetinfo(&gWIZNETINFO);
printf(“IP address : %d.%d.%d.%d\n\r”,gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
printf(“SM Mask : %d.%d.%d.%d\n\r”,gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
printf(“Gate way : %d.%d.%d.%d\n\r”,gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
printf(“DNS Server : %d.%d.%d.%d\n\r”,gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
}
void W5500_Socket_Set(void){
if(S0_State==0){
if(S0_Mode==TCP_SERVER){
if(Socket_Listen(0)==TRUE) S0_State=S_INIT; else S0_State=0;
}
else if(S0_Mode==TCP_CLIENT){
if(Socket_Connect(0)==TRUE) S0_State=S_INIT; else S0_State=0;
}
else{
if(Socket_UDP(0)==TRUE) S0_State=S_INIT|S_CONN; else S0_State=0;
}
}
}
////// 찾아 보라고 해서 찾은 내용인데 에러만 뜨네요.
void Load_Net_Parameters(void){
//if flash is enabled
if (SPI_FLASH_ReadID() == FLASH_ID) {
delay();
SPI_FLASH_BufferRead(Gateway_IP, FLASH_GATEWAY_IP_ADDR, FLASH_GATEWAY_IP_SIZE);
delay();
SPI_FLASH_BufferRead(Sub_Mask, FLASH_SUBNET_MASK_ADDR, FLASH_SUBNET_MASK_SIZE);
delay();
SPI_FLASH_BufferRead(Phy_Addr, FLASH_PHY_ADDR_ADDR, FLASH_PHY_ADDR_SIZE);
delay();
SPI_FLASH_BufferRead(Local_IP, FLASH_LOCAL_IP_ADDR, FLASH_LOCAL_IP_SIZE);
delay();
SPI_FLASH_BufferRead(S0_Port, FLASH_LOCAL_PORT_ADDR, FLASH_LOCAL_PORT_SIZE);
}
else {
/* 加??? */
Gateway_IP[0] = GATEWAY_IP_ADDR_1;
Gateway_IP[1] = GATEWAY_IP_ADDR_2;
Gateway_IP[2] = GATEWAY_IP_ADDR_3;
Gateway_IP[3] = GATEWAY_IP_ADDR_4;
/* 加?子?掩? */
Sub_Mask[0] = SUBNET_MASK_1;
Sub_Mask[1] = SUBNET_MASK_2;
Sub_Mask[2] = SUBNET_MASK_3;
Sub_Mask[3] = SUBNET_MASK_4;
/* 加?物理地址 */
Phy_Addr[0] = PHY_ADDR_1;
Phy_Addr[1] = PHY_ADDR_2;
Phy_Addr[2] = PHY_ADDR_3;
Phy_Addr[3] = PHY_ADDR_4;
Phy_Addr[4] = PHY_ADDR_5;
Phy_Addr[5] = PHY_ADDR_6;
/* 加?IP地址 */
Local_IP[0] = LOCAL_IP_ADDR_1;
Local_IP[1] = LOCAL_IP_ADDR_2;
Local_IP[2] = LOCAL_IP_ADDR_3;
Local_IP[3] = LOCAL_IP_ADDR_4;
/* 加?端口0的端口?5000 /
S0_Port[0] = S0_PORT_1;
S0_Port[1] = S0_PORT_2;
}
/ 加?端口0/1的工作模式 */
S0_Mode = S0_MODE;
S1_Mode = S1_MODE;
}
}
위 처럼 테스트를 해보라고 해서 사용 하고 있습니다.
PING 테스트에서는 아무런 반응이 없고.
여기서 질문 드립니다.
IO_Library가 4년전 가지고 있던 자료이니 최신 버젼의 자료가 따로 있는지 있다면 어디서 받아야 되는지…
W5500 초기 셋업시 어떤걸 해줘야 되고 어떤 순서로 하는지 나와 있는 자료가 있는지 있다면 어디서 받아야 되는지…
추가 질문 드려요~
Load Net Parameters 에서 사용 되는 변수?는 어디에서 지정이 되어 있는건가요?
구글 검색 해도 못찾겠네요.
FLASH_ID
Gateway_IP
FLASH_GATEWAY_IP_ADDR
FLASH_GATEWAY_IP_SIZE
등등…
이 내용 확인 부탁 드립니다.