---
title: "what is the w5500 initialize function ?"
url: "https://maker.wiznet.io/forum/15917"
markdown_url: "https://maker.wiznet.io/forum/15917/md"
type: "Forum topic"
category: "IO Modules"
author: "yjs1025"
created: "2025-10-22T15:03:03+09:00"
last_activity: "2025-10-23T10:24:01+09:00"
language: "en"
views: 3
replies: 1
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# what is the w5500 initialize function ?

## Question

Asked by yjs1025 on 2025-10-22 in IO Modules.

what is the w5500 initialize function ?

int8_t rrr = socket(TCP_CLIENT_SN, Sn_MR_TCP, 21, 0);

if ( rrr != TCP_CLIENT_SN)

{

SEGGER_RTT_printf(0, "socket() oepn &lt;0x%x>: failed\r\n", rrr);

//close(TCP_CLIENT_SN);

}

else

{

SEGGER_RTT_printf(0, "socket() oepn : Success\r\n"); ---here

}

while (1)

{

qtime_msleep_yield(50);

ret_val = getSn_SR(TCP_CLIENT_SN);

if (ret_val == SOCK_INIT) // socket() 후에 getSn_SR() 이 SOCK_INIT 이면 소켓 초기화 과정 완료

{

SEGGER_RTT_printf(0, "%d socketg is --> SOCK_INIT: 0x%x\r\n", TCP_CLIENT_SN, ret_val);

--> here

break;

}

if (wait_ms++ > 200) {

SEGGER_RTT_printf(0, "\r\n check SOCK_INIT is timeout.\r\n");

break;

}

}

// pc서버 프로그램은 port 21 사용

ret_val = connect(TCP_CLIENT_SN, server_ip, 21); //

if (ret_val != SOCK_OK) {

SEGGER_RTT_printf(0, "Connecting to server --> failed: %d\r\n", ret_val);

close(TCP_CLIENT_SN); --> here

}

else{

SEGGER_RTT_printf(0, "Connecting to server --> sucess: %d\r\n", ret_val);

}

// 3. 연결 완료 대기

/* uint8_t getSn_SR(uint8_t sn);

// 지정된 **소켓 번호(sn)**의 상태 레지스터(Sn_SR)를 읽어서 반환

*/

wait_ms = 0;

while (ret_val != SOCK_ESTABLISHED)

{

qtime_msleep_yield(100);

ret_val = getSn_SR(TCP_CLIENT_SN);

//SEGGER_RTT_printf(0, "ret_val = 0x%x\r\n", ret_val);

---> ret_val is not SOCK_ESTABLISHEDl.
this value is 0x13 continue, I suspect that the w5500 chip has not been initialized. What is the initialization function?

if (ret_val == SOCK_CLOSED)

{

SEGGER_RTT_printf(0, "\r\nSocket closed\r\n");

break;

}

if (ret_val == SOCK_CLOSE_WAIT)

{

SEGGER_RTT_printf(0, "\r\nSocket closed while waiting.\r\n");

break;

}

if (wait_ms++ > 200) {

SEGGER_RTT_printf(0, "\r\nConnect timeout.ret_val (0x%x)\r\n", ret_val);

close(TCP_CLIENT_SN);

break;

}

qtime_msleep_yield(50);

}

if (ret_val == SOCK_ESTABLISHED) {

SEGGER_RTT_printf(0, "\r\nConnection is SOCK_ESTABLISHED!\r\n");

}

## Replies

### Reply 1 by Aimee0, 2025-10-23

Hello.
Please refer to the Application Note and the example code’s `wizchip_initialize(...)` function in the link below.
<https://docs.wiznet.io/Product/Chip/Ethernet/W5500/Application/tcp>
<https://github.com/WIZnet-ioNIC/WIZnet-PICO-C/blob/main/port/ioLibrary_Driver/src/wizchip_spi.c>

---

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