41#define W5500_CHIP_VERSION 0x04
44#define W5500_BYTE_HIGH(value) (((value) >> 8) & 0xFF)
45#define W5500_BYTE_LOW(value) ((value) & 0xFF)
48#define W5500_BSB_MASK NO_OS_GENMASK(7, 3)
49#define W5500_RWB_MASK NO_OS_BIT(2)
50#define W5500_OM_MASK NO_OS_GENMASK(1, 0)
53#define W5500_BSB(block) no_os_field_prep(W5500_BSB_MASK, block)
54#define W5500_RWB_READ 0x00
55#define W5500_RWB_WRITE NO_OS_BIT(2)
56#define W5500_OM_VDM 0x00
57#define W5500_OM_FDM_1 0x01
58#define W5500_OM_FDM_2 0x02
59#define W5500_OM_FDM_4 0x03
62#define W5500_COMMON_REG 0x00
63#define W5500_SOCKET_REG_BLOCK(n) (0x01 + (n) * 4)
64#define W5500_SOCKET_TX_BUF_BLOCK(n) (0x02 + (n) * 4)
65#define W5500_SOCKET_RX_BUF_BLOCK(n) (0x03 + (n) * 4)
68#define W5500_MR 0x0000
69#define W5500_GAR 0x0001
70#define W5500_SUBR 0x0005
71#define W5500_SHAR 0x0009
72#define W5500_SIPR 0x000F
73#define W5500_INTLEVEL 0x0013
74#define W5500_IR 0x0015
75#define W5500_IMR 0x0016
76#define W5500_SIR 0x0017
77#define W5500_SIMR 0x0018
78#define W5500_RTR 0x0019
79#define W5500_RCR 0x001B
80#define W5500_PTIMER 0x001C
81#define W5500_PMAGIC 0x001D
82#define W5500_PHAR 0x001E
83#define W5500_PSID 0x0024
84#define W5500_PMRU 0x0026
85#define W5500_UIPR 0x0028
86#define W5500_UPORTR 0x002C
87#define W5500_PHYCFGR 0x002E
88#define W5500_VERSIONR 0x0039
91#define W5500_MR_RST NO_OS_BIT(7)
92#define W5500_MR_WOL NO_OS_BIT(5)
93#define W5500_MR_PB NO_OS_BIT(4)
94#define W5500_MR_PPPOE NO_OS_BIT(3)
95#define W5500_MR_FARP NO_OS_BIT(1)
98#define W5500_Sn_MR 0x0000
99#define W5500_Sn_CR 0x0001
100#define W5500_Sn_IR 0x0002
101#define W5500_Sn_SR 0x0003
102#define W5500_Sn_PORT 0x0004
103#define W5500_Sn_DHAR 0x0006
104#define W5500_Sn_DIPR 0x000C
105#define W5500_Sn_DPORT 0x0010
106#define W5500_Sn_MSSR 0x0012
107#define W5500_Sn_TOS 0x0015
108#define W5500_Sn_TTL 0x0016
109#define W5500_Sn_RXBUF_SIZE 0x001E
110#define W5500_Sn_TXBUF_SIZE 0x001F
111#define W5500_Sn_TX_FSR 0x0020
112#define W5500_Sn_TX_RD 0x0022
113#define W5500_Sn_TX_WR 0x0024
114#define W5500_Sn_RX_RSR 0x0026
115#define W5500_Sn_RX_RD 0x0028
116#define W5500_Sn_RX_WR 0x002A
117#define W5500_Sn_IMR 0x002C
118#define W5500_Sn_FRAG 0x002D
119#define W5500_Sn_KPALVTR 0x002F
122#define W5500_Sn_MR_CLOSE 0x00
123#define W5500_Sn_MR_TCP 0x01
124#define W5500_Sn_MR_UDP 0x02
125#define W5500_Sn_MR_MACRAW 0x04
126#define W5500_Sn_MR_NDMC NO_OS_BIT(5)
127#define W5500_Sn_MR_MULTI NO_OS_BIT(7)
128#define W5500_Sn_MR_BCASTB NO_OS_BIT(6)
129#define W5500_Sn_MR_UCASTB NO_OS_BIT(4)
130#define W5500_Sn_MR_MIP6B NO_OS_BIT(4)
133#define W5500_Sn_CR_OPEN 0x01
134#define W5500_Sn_CR_LISTEN 0x02
135#define W5500_Sn_CR_CONNECT 0x04
136#define W5500_Sn_CR_DISCON 0x08
137#define W5500_Sn_CR_CLOSE 0x10
138#define W5500_Sn_CR_SEND 0x20
139#define W5500_Sn_CR_SEND_MAC 0x21
140#define W5500_Sn_CR_SEND_KEEP 0x22
141#define W5500_Sn_CR_RECV 0x40
144#define W5500_Sn_SR_CLOSED 0x00
145#define W5500_Sn_SR_INIT 0x13
146#define W5500_Sn_SR_LISTEN 0x14
147#define W5500_Sn_SR_ESTABLISHED 0x17
148#define W5500_Sn_SR_CLOSE_WAIT 0x1C
149#define W5500_Sn_SR_UDP 0x22
150#define W5500_Sn_SR_MACRAW 0x42
151#define W5500_Sn_SR_SYNSENT 0x15
152#define W5500_Sn_SR_SYNRECV 0x16
153#define W5500_Sn_SR_FIN_WAIT 0x18
154#define W5500_Sn_SR_CLOSING 0x1A
155#define W5500_Sn_SR_TIME_WAIT 0x1B
156#define W5500_Sn_SR_LAST_ACK 0x1D
159#define W5500_Sn_IR_SEND_OK NO_OS_BIT(4)
160#define W5500_Sn_IR_TIMEOUT NO_OS_BIT(3)
161#define W5500_Sn_IR_RECV NO_OS_BIT(2)
162#define W5500_Sn_IR_DISCON NO_OS_BIT(1)
163#define W5500_Sn_IR_CON NO_OS_BIT(0)
166#define W5500_IR_CONFLICT NO_OS_BIT(7)
167#define W5500_IR_UNREACH NO_OS_BIT(6)
168#define W5500_IR_PPPOE NO_OS_BIT(5)
169#define W5500_IR_MP NO_OS_BIT(4)
172#define W5500_PHYCFGR_RST NO_OS_BIT(7)
173#define W5500_PHYCFGR_OPMD NO_OS_BIT(6)
174#define W5500_PHYCFGR_OPMDC NO_OS_GENMASK(5, 3)
175#define W5500_PHYCFGR_DPX NO_OS_BIT(2)
176#define W5500_PHYCFGR_SPD NO_OS_BIT(1)
177#define W5500_PHYCFGR_LNK NO_OS_BIT(0)
180#define W5500_PHYCFGR_OPMDC_10BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 0)
182#define W5500_PHYCFGR_OPMDC_10BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 1)
184#define W5500_PHYCFGR_OPMDC_100BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 2)
186#define W5500_PHYCFGR_OPMDC_100BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 3)
188#define W5500_PHYCFGR_OPMDC_100BT_HD_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 4)
190#define W5500_PHYCFGR_OPMDC_POWER_DOWN no_os_field_prep(W5500_PHYCFGR_OPMDC, 6)
192#define W5500_PHYCFGR_OPMDC_ALL_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 7)
196#define W5500_SOCK_BUF_SIZE_0K 0x00
197#define W5500_SOCK_BUF_SIZE_1K 0x01
198#define W5500_SOCK_BUF_SIZE_2K 0x02
199#define W5500_SOCK_BUF_SIZE_4K 0x04
200#define W5500_SOCK_BUF_SIZE_8K 0x08
201#define W5500_SOCK_BUF_SIZE_16K 0x10
204#define W5500_MAX_SOCK_NUMBER 7
239 uint16_t addr,
const uint8_t *data, uint16_t len);
243 uint16_t addr, uint8_t *data, uint16_t len);
247 uint16_t addr, uint16_t *value);
278 uint8_t retry_count);
323 void *buf, uint16_t len,
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128
struct w5500_socket sockets[W5500_MAX_SOCK_NUMBER+1]
Definition w5500.h:225
struct no_os_spi_desc * spi
Definition w5500.h:221
uint8_t retry_count
Definition w5500.h:224
uint8_t mac_addr[6]
Definition w5500.h:222
struct no_os_gpio_desc * gpio_reset
Definition w5500.h:219
uint16_t retry_time
Definition w5500.h:223
struct no_os_gpio_desc * gpio_int
Definition w5500.h:220
const struct no_os_spi_init_param * spi_init
Definition w5500.h:231
uint16_t retry_time
Definition w5500.h:233
uint8_t mac_addr[6]
Definition w5500.h:232
uint8_t retry_count
Definition w5500.h:234
const struct no_os_gpio_init_param * gpio_reset
Definition w5500.h:229
const struct no_os_gpio_init_param * gpio_int
Definition w5500.h:230
uint8_t port[2]
Definition w5500.h:208
uint8_t ip[4]
Definition w5500.h:207
uint8_t rx_buf_size
Definition w5500.h:215
uint8_t tx_buf_size
Definition w5500.h:214
uint8_t protocol
Definition w5500.h:212
uint16_t mss
Definition w5500.h:213
int w5500_set_gateway(struct w5500_dev *dev, const uint8_t gateway[4])
Set gateway address.
Definition w5500.c:197
int w5500_socket_command_write(struct w5500_dev *dev, uint8_t sock_id, uint8_t val)
Write a command to a socket's command register.
Definition w5500.c:374
int w5500_get_ip(struct w5500_dev *dev, uint8_t ip[4])
Get IP address.
Definition w5500.c:223
int w5500_reg_read(struct w5500_dev *dev, uint8_t block, uint16_t addr, uint8_t *data, uint16_t len)
Read data from a W5500 register.
Definition w5500.c:84
int w5500_tcp_config(struct w5500_dev *dev, uint16_t retry_time, uint8_t retry_count)
Configure W5500 TCP parameters (RTR and RCR)
Definition w5500.c:285
int w5500_set_ip(struct w5500_dev *dev, const uint8_t ip[4])
Set IP address.
Definition w5500.c:171
int w5500_socket_sendto(struct w5500_dev *dev, uint8_t sock_id, const void *buf, uint16_t len, struct w5500_socket_address *to)
Send data to a specific destination (UDP)
Definition w5500.c:759
int w5500_get_mac(struct w5500_dev *dev, uint8_t mac[6])
Get MAC address.
Definition w5500.c:210
int w5500_reset(struct w5500_dev *dev)
Reset the W5500 chip using hardware or software method.
Definition w5500.c:970
int w5500_reg_write(struct w5500_dev *dev, uint8_t block, uint16_t addr, const uint8_t *data, uint16_t len)
Write data to a W5500 register.
Definition w5500.c:52
int w5500_socket_listen(struct w5500_dev *dev, uint8_t sock_id)
Set socket to listen mode (TCP server)
Definition w5500.c:945
int w5500_socket_bind(struct w5500_dev *dev, uint8_t sock_id, uint16_t port)
Bind a socket to a specific port (server mode)
Definition w5500.c:924
int w5500_set_mac(struct w5500_dev *dev, const uint8_t mac[6])
Set MAC address.
Definition w5500.c:158
int w5500_get_gateway(struct w5500_dev *dev, uint8_t gateway[4])
Get gateway address.
Definition w5500.c:249
int w5500_socket_read_status(struct w5500_dev *dev, uint8_t sock_id, uint8_t *status)
Read status of a socket.
Definition w5500.c:359
int w5500_get_subnet(struct w5500_dev *dev, uint8_t subnet[4])
Get subnet mask.
Definition w5500.c:236
int w5500_socket_send(struct w5500_dev *dev, uint8_t sock_id, const void *buf, uint16_t len)
Send data through a socket.
Definition w5500.c:587
int w5500_socket_recv(struct w5500_dev *dev, uint8_t sock_id, void *buf, uint16_t len)
Receive data from a socket.
Definition w5500.c:673
int w5500_socket_init(struct w5500_dev *dev, uint8_t sock_id)
Initialize a socket.
Definition w5500.c:422
int w5500_init(struct w5500_dev **device, struct w5500_init_param *init_param)
Initialize the device.
Definition w5500.c:1048
int w5500_socket_clear_interrupt(struct w5500_dev *dev, uint8_t sock_id, uint8_t flags)
Clear specific socket interrupt flags.
Definition w5500.c:391
int w5500_socket_connect(struct w5500_dev *dev, uint8_t sock_id, struct w5500_socket_address *addr)
Connect to a remote host (TCP client mode)
Definition w5500.c:520
#define W5500_MAX_SOCK_NUMBER
Definition w5500.h:204
int w5500_socket_open(struct w5500_dev *dev, uint8_t sock_id, uint8_t protocol, uint8_t buff_size)
Open a socket with specified protocol.
Definition w5500.c:467
int w5500_socket_recvfrom(struct w5500_dev *dev, uint8_t sock_id, void *buf, uint16_t len, struct w5500_socket_address *from)
Receive data from a socket with source address information (UDP)
Definition w5500.c:839
int w5500_read_16bit_reg(struct w5500_dev *dev, uint8_t block, uint16_t addr, uint16_t *value)
Read a 16-bit register reliably by reading until consecutive values match.
Definition w5500.c:120
int w5500_remove(struct w5500_dev *dev)
Free a device descriptor and release resources.
Definition w5500.c:1103
int w5500_socket_close(struct w5500_dev *dev, uint8_t sock_id)
Close a socket.
Definition w5500.c:503
int w5500_setup(struct w5500_dev *dev)
Setup the W5500 chip with basic configuration.
Definition w5500.c:1021
int w5500_set_subnet(struct w5500_dev *dev, const uint8_t subnet[4])
Set subnet mask.
Definition w5500.c:184
int w5500_check_link_status(struct w5500_dev *dev)
Check the Ethernet link status.
Definition w5500.c:261
int w5500_socket_disconnect(struct w5500_dev *dev, uint8_t sock_id)
Disconnect a TCP connection.
Definition w5500.c:558