---
title: "W5500 Read/Write Register"
url: "https://maker.wiznet.io/forum/15838"
markdown_url: "https://maker.wiznet.io/forum/15838/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "Liyyyyy"
created: "2025-08-13T18:05:52+09:00"
last_activity: "2025-08-14T10:59:45+09:00"
language: "en"
tags: ["W5500"]
views: 5
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5500 Read/Write Register

## Question

Asked by Liyyyyy on 2025-08-13 in Ethernet Chips.

Hi! When I was using SPI to read and write the registers of W5500, I found that the first three bytes of data returned for all the read registers were 1, 2, and 3. Is this a normal phenomenon?

![](https://maker.wiznet.io/upload/ckeditor5/450094992%5F1755107992%2Epng)

## Replies

### Reply 1 by Lihan__, 2025-08-14

Hello, I am a software engineer at Wiznet.

Yes, that is completely normal.

During a read or write operation, the [Address Phase] and [Control Phase] are sent over the MOSI line.

At this time, the first three bytes (0x01, 0x02, 0x03) appearing on the MISO line are unrelated to the actual communication and can be ignored.

Thank you.

### Reply 2 by Liyyyyy, 2025-08-14 (in reply to reply 1)

Thank you for your reply!
The main problem I am currently facing is that I cannot ping the W5500. Based on your response, I can confirm that the SPI read/write registers are functioning properly, as the data read from the register is consistent with the data I wrote into it.

Could you please help me check my code and analyze why the ping is not working?
**1. Reset the W5500 chip and pull up the reset pin. **

void W5500_Reset(void){
GPIO_OutPut_Leve(RST_PIN, 0);
ec_Delay_ms(10);
GPIO_OutPut_Leve(RST_PIN, 1);
ec_Delay_ms(10);
}
**2. Initialize the PHY. **
void W5500_Phy_Init(void){
wiz_PhyConf phyconf;

phyconf.by = PHY_CONFBY_SW;
phyconf.mode = PHY_MODE_MANUAL;
phyconf.speed = PHY_SPEED_10; //閫熺巼100M
phyconf.duplex = PHY_DUPLEX_FULL;

ctlwizchip(CW_SET_PHYCONF, (void*)&phyconf);
}
**3. Configure IP, MAC, etc.**

wiz_NetInfo default_net_info = {
.mac = {0x00, 0x08, 0xDC, 0x12, 0x34, 0x56},
.ip = {192, 168, 1, 100},
.gw = {192, 168, 1, 1},
.sn = {255, 255, 255, 0},
.dns = {8, 8, 8, 8},
.dhcp = NETINFO_STATIC};
void W5500_Network_Init(wiz_NetTimeout *w_NetTimeOut, wiz_NetInfo *w_NetInfo){
uint8_t chipid[6];

ctlnetwork(CN_SET_NETINFO, w_NetInfo);
ctlnetwork(CN_GET_NETINFO, &default_net_info_Test);
ctlwizchip(CW_GET_ID,(void*)chipid);

wizchip_settimeout(w_NetTimeOut);
}

Additionally, one more point to note is that it can be linked through.

Looking forward to your reply!

---

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