![]() |
no-OS
|
Header file W5500 Driver. More...
Classes | |
| struct | w5500_socket_address |
| struct | w5500_socket |
| struct | w5500_dev |
| struct | w5500_init_param |
Macros | |
| #define | W5500_CHIP_VERSION 0x04 |
| #define | W5500_BYTE_HIGH(value) |
| #define | W5500_BYTE_LOW(value) |
| #define | W5500_BSB_MASK NO_OS_GENMASK(7, 3) /* Block Select Bits */ |
| #define | W5500_RWB_MASK NO_OS_BIT(2) /* Read/Write Bit */ |
| #define | W5500_OM_MASK NO_OS_GENMASK(1, 0) /* Operation Mode Bits */ |
| #define | W5500_BSB(block) |
| #define | W5500_RWB_READ 0x00 |
| #define | W5500_RWB_WRITE NO_OS_BIT(2) |
| #define | W5500_OM_VDM 0x00 /* Variable Data Length Mode */ |
| #define | W5500_OM_FDM_1 0x01 /* Fixed Data Length Mode 1 byte */ |
| #define | W5500_OM_FDM_2 0x02 /* Fixed Data Length Mode 2 bytes */ |
| #define | W5500_OM_FDM_4 0x03 /* Fixed Data Length Mode 4 bytes */ |
| #define | W5500_COMMON_REG 0x00 /* Common Register Block */ |
| #define | W5500_SOCKET_REG_BLOCK(n) |
| #define | W5500_SOCKET_TX_BUF_BLOCK(n) |
| #define | W5500_SOCKET_RX_BUF_BLOCK(n) |
| #define | W5500_MR 0x0000 /* Mode Register */ |
| #define | W5500_GAR 0x0001 /* Gateway Address Register (4 bytes) */ |
| #define | W5500_SUBR 0x0005 /* Subnet Mask Register (4 bytes) */ |
| #define | W5500_SHAR 0x0009 /* Source Hardware Address Register (6 bytes) */ |
| #define | W5500_SIPR 0x000F /* Source IP Address Register (4 bytes) */ |
| #define | W5500_INTLEVEL 0x0013 /* Interrupt Low Level Timer Register (2 bytes) */ |
| #define | W5500_IR 0x0015 /* Interrupt Register */ |
| #define | W5500_IMR 0x0016 /* Interrupt Mask Register */ |
| #define | W5500_SIR 0x0017 /* Socket Interrupt Register */ |
| #define | W5500_SIMR 0x0018 /* Socket Interrupt Mask Register */ |
| #define | W5500_RTR 0x0019 /* Retry Time Register (2 bytes) */ |
| #define | W5500_RCR 0x001B /* Retry Count Register */ |
| #define | W5500_PTIMER 0x001C /* PPP LCP Request Timer Register */ |
| #define | W5500_PMAGIC 0x001D /* PPP LCP Magic Number Register */ |
| #define | W5500_PHAR 0x001E /* PPP Destination MAC Register (6 bytes) */ |
| #define | W5500_PSID 0x0024 /* PPP Session ID Register (2 bytes) */ |
| #define | W5500_PMRU 0x0026 /* PPP Maximum Segment Size (2 bytes) */ |
| #define | W5500_UIPR 0x0028 /* Unreachable IP Address Register (4 bytes) */ |
| #define | W5500_UPORTR 0x002C /* Unreachable Port Register (2 bytes) */ |
| #define | W5500_PHYCFGR 0x002E /* PHY Configuration Register */ |
| #define | W5500_VERSIONR 0x0039 /* Chip Version Register */ |
| #define | W5500_MR_RST NO_OS_BIT(7) /* Reset */ |
| #define | W5500_MR_WOL NO_OS_BIT(5) /* Wake on LAN */ |
| #define | W5500_MR_PB NO_OS_BIT(4) /* Ping Block */ |
| #define | W5500_MR_PPPOE NO_OS_BIT(3) /* PPPoE Mode */ |
| #define | W5500_MR_FARP NO_OS_BIT(1) /* Force ARP */ |
| #define | W5500_Sn_MR 0x0000 /* Socket n Mode Register */ |
| #define | W5500_Sn_CR 0x0001 /* Socket n Command Register */ |
| #define | W5500_Sn_IR 0x0002 /* Socket n Interrupt Register */ |
| #define | W5500_Sn_SR 0x0003 /* Socket n Status Register */ |
| #define | W5500_Sn_PORT 0x0004 /* Socket n Source Port Register (2 bytes) */ |
| #define | W5500_Sn_DHAR 0x0006 /* Socket n Destination Hardware Address Register (6 bytes) */ |
| #define | W5500_Sn_DIPR 0x000C /* Socket n Destination IP Address Register (4 bytes) */ |
| #define | W5500_Sn_DPORT 0x0010 /* Socket n Destination Port Register (2 bytes) */ |
| #define | W5500_Sn_MSSR 0x0012 /* Socket n Maximum Segment Size Register (2 bytes) */ |
| #define | W5500_Sn_TOS 0x0015 /* Socket n Type of Service Register */ |
| #define | W5500_Sn_TTL 0x0016 /* Socket n Time to Live Register */ |
| #define | W5500_Sn_RXBUF_SIZE 0x001E /* Socket n RX Buffer Size Register */ |
| #define | W5500_Sn_TXBUF_SIZE 0x001F /* Socket n TX Buffer Size Register */ |
| #define | W5500_Sn_TX_FSR 0x0020 /* Socket n TX Free Size Register (2 bytes) */ |
| #define | W5500_Sn_TX_RD 0x0022 /* Socket n TX Read Pointer Register (2 bytes) */ |
| #define | W5500_Sn_TX_WR 0x0024 /* Socket n TX Write Pointer Register (2 bytes) */ |
| #define | W5500_Sn_RX_RSR 0x0026 /* Socket n RX Received Size Register (2 bytes) */ |
| #define | W5500_Sn_RX_RD 0x0028 /* Socket n RX Read Pointer Register (2 bytes) */ |
| #define | W5500_Sn_RX_WR 0x002A /* Socket n RX Write Pointer Register (2 bytes) */ |
| #define | W5500_Sn_IMR 0x002C /* Socket n Interrupt Mask Register */ |
| #define | W5500_Sn_FRAG 0x002D /* Socket n Fragment Offset in IP Header (2 bytes) */ |
| #define | W5500_Sn_KPALVTR 0x002F /* Socket n Keep Alive Timer Register */ |
| #define | W5500_Sn_MR_CLOSE 0x00 /* Closed */ |
| #define | W5500_Sn_MR_TCP 0x01 /* TCP */ |
| #define | W5500_Sn_MR_UDP 0x02 /* UDP */ |
| #define | W5500_Sn_MR_MACRAW 0x04 /* MAC Raw mode */ |
| #define | W5500_Sn_MR_NDMC NO_OS_BIT(5) /* No Delayed ACK */ |
| #define | W5500_Sn_MR_MULTI NO_OS_BIT(7) /* Multicasting */ |
| #define | W5500_Sn_MR_BCASTB NO_OS_BIT(6) /* Broadcast Blocking */ |
| #define | W5500_Sn_MR_UCASTB NO_OS_BIT(4) /* Unicast Blocking (UDP mode) */ |
| #define | W5500_Sn_MR_MIP6B NO_OS_BIT(4) /* IPv6 Blocking (MACRAW mode) */ |
| #define | W5500_Sn_CR_OPEN 0x01 /* Initialize and open socket */ |
| #define | W5500_Sn_CR_LISTEN 0x02 /* Wait connection request in TCP mode (Server mode) */ |
| #define | W5500_Sn_CR_CONNECT 0x04 /* Send connection request in TCP mode (Client mode) */ |
| #define | W5500_Sn_CR_DISCON 0x08 /* Send closing request in TCP mode */ |
| #define | W5500_Sn_CR_CLOSE 0x10 /* Close socket */ |
| #define | W5500_Sn_CR_SEND 0x20 /* Send data */ |
| #define | W5500_Sn_CR_SEND_MAC 0x21 /* Send data with MAC address (UDP mode) */ |
| #define | W5500_Sn_CR_SEND_KEEP 0x22 /* Send keep-alive packet (TCP mode) */ |
| #define | W5500_Sn_CR_RECV 0x40 /* Receive data */ |
| #define | W5500_Sn_SR_CLOSED 0x00 /* Socket is closed */ |
| #define | W5500_Sn_SR_INIT 0x13 /* Socket is initialized */ |
| #define | W5500_Sn_SR_LISTEN 0x14 /* Socket is in listen state */ |
| #define | W5500_Sn_SR_ESTABLISHED 0x17 /* Connection is established */ |
| #define | W5500_Sn_SR_CLOSE_WAIT 0x1C /* Closing state */ |
| #define | W5500_Sn_SR_UDP 0x22 /* Socket is in UDP mode */ |
| #define | W5500_Sn_SR_MACRAW 0x42 /* Socket is in MACRAW mode */ |
| #define | W5500_Sn_SR_SYNSENT 0x15 /* SYN packet sent (TCP client) */ |
| #define | W5500_Sn_SR_SYNRECV 0x16 /* SYN packet received (TCP server) */ |
| #define | W5500_Sn_SR_FIN_WAIT 0x18 /* Socket closing (FIN sent) */ |
| #define | W5500_Sn_SR_CLOSING 0x1A /* Socket closing (FIN exchanged) */ |
| #define | W5500_Sn_SR_TIME_WAIT 0x1B /* Socket closing (2MSL timer active) */ |
| #define | W5500_Sn_SR_LAST_ACK 0x1D /* Socket closing (Last ACK) */ |
| #define | W5500_Sn_IR_SEND_OK NO_OS_BIT(4) /* Send operation completed */ |
| #define | W5500_Sn_IR_TIMEOUT NO_OS_BIT(3) /* Timeout occurred */ |
| #define | W5500_Sn_IR_RECV NO_OS_BIT(2) /* Data received */ |
| #define | W5500_Sn_IR_DISCON NO_OS_BIT(1) /* Connection termination requested/completed */ |
| #define | W5500_Sn_IR_CON NO_OS_BIT(0) /* Connection established */ |
| #define | W5500_IR_CONFLICT NO_OS_BIT(7) /* IP address conflict */ |
| #define | W5500_IR_UNREACH NO_OS_BIT(6) /* Destination unreachable */ |
| #define | W5500_IR_PPPOE NO_OS_BIT(5) /* PPPoE connection closed */ |
| #define | W5500_IR_MP NO_OS_BIT(4) /* Magic packet received */ |
| #define | W5500_PHYCFGR_RST NO_OS_BIT(7) /* PHY Reset */ |
| #define | W5500_PHYCFGR_OPMD NO_OS_BIT(6) /* Operation Mode Select */ |
| #define | W5500_PHYCFGR_OPMDC NO_OS_GENMASK(5, 3) /* Operation Mode Configuration */ |
| #define | W5500_PHYCFGR_DPX NO_OS_BIT(2) /* Duplex Status (1=Full, 0=Half) */ |
| #define | W5500_PHYCFGR_SPD NO_OS_BIT(1) /* Speed Status (1=100Mbps, 0=10Mbps) */ |
| #define | W5500_PHYCFGR_LNK NO_OS_BIT(0) /* Link Status (1=Up, 0=Down) */ |
| #define | W5500_PHYCFGR_OPMDC_10BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 0) |
| #define | W5500_PHYCFGR_OPMDC_10BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 1) |
| #define | W5500_PHYCFGR_OPMDC_100BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 2) |
| #define | W5500_PHYCFGR_OPMDC_100BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 3) |
| #define | W5500_PHYCFGR_OPMDC_100BT_HD_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 4) |
| #define | W5500_PHYCFGR_OPMDC_POWER_DOWN no_os_field_prep(W5500_PHYCFGR_OPMDC, 6) |
| #define | W5500_PHYCFGR_OPMDC_ALL_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 7) |
| #define | W5500_SOCK_BUF_SIZE_0K 0x00 /* 0KB buffer size */ |
| #define | W5500_SOCK_BUF_SIZE_1K 0x01 /* 1KB buffer size */ |
| #define | W5500_SOCK_BUF_SIZE_2K 0x02 /* 2KB buffer size (default) */ |
| #define | W5500_SOCK_BUF_SIZE_4K 0x04 /* 4KB buffer size */ |
| #define | W5500_SOCK_BUF_SIZE_8K 0x08 /* 8KB buffer size */ |
| #define | W5500_SOCK_BUF_SIZE_16K 0x10 /* 16KB buffer size */ |
| #define | W5500_MAX_SOCK_NUMBER 7 /* 8 sockets (0-7) */ |
Functions | |
| 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. | |
| 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. | |
| 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. | |
| int | w5500_set_mac (struct w5500_dev *dev, const uint8_t mac[6]) |
| Set MAC address. | |
| int | w5500_set_ip (struct w5500_dev *dev, const uint8_t ip[4]) |
| Set IP address. | |
| int | w5500_set_subnet (struct w5500_dev *dev, const uint8_t subnet[4]) |
| Set subnet mask. | |
| int | w5500_set_gateway (struct w5500_dev *dev, const uint8_t gateway[4]) |
| Set gateway address. | |
| int | w5500_get_mac (struct w5500_dev *dev, uint8_t mac[6]) |
| Get MAC address. | |
| int | w5500_get_ip (struct w5500_dev *dev, uint8_t ip[4]) |
| Get IP address. | |
| int | w5500_get_subnet (struct w5500_dev *dev, uint8_t subnet[4]) |
| Get subnet mask. | |
| int | w5500_get_gateway (struct w5500_dev *dev, uint8_t gateway[4]) |
| Get gateway address. | |
| int | w5500_check_link_status (struct w5500_dev *dev) |
| Check the Ethernet link status. | |
| int | w5500_tcp_config (struct w5500_dev *dev, uint16_t retry_time, uint8_t retry_count) |
| Configure W5500 TCP parameters (RTR and RCR) | |
| int | w5500_socket_read_status (struct w5500_dev *dev, uint8_t sock_id, uint8_t *status) |
| Read status of a socket. | |
| 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. | |
| int | w5500_socket_clear_interrupt (struct w5500_dev *dev, uint8_t sock_id, uint8_t flags) |
| Clear specific socket interrupt flags. | |
| int | w5500_socket_init (struct w5500_dev *dev, uint8_t sock_id) |
| Initialize a socket. | |
| 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. | |
| int | w5500_socket_close (struct w5500_dev *dev, uint8_t sock_id) |
| Close a socket. | |
| 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) | |
| int | w5500_socket_disconnect (struct w5500_dev *dev, uint8_t sock_id) |
| Disconnect a TCP connection. | |
| int | w5500_socket_send (struct w5500_dev *dev, uint8_t sock_id, const void *buf, uint16_t len) |
| Send data through a socket. | |
| int | w5500_socket_recv (struct w5500_dev *dev, uint8_t sock_id, void *buf, uint16_t len) |
| Receive data from a socket. | |
| 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) | |
| 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) | |
| int | w5500_socket_bind (struct w5500_dev *dev, uint8_t sock_id, uint16_t port) |
| Bind a socket to a specific port (server mode) | |
| int | w5500_socket_listen (struct w5500_dev *dev, uint8_t sock_id) |
| Set socket to listen mode (TCP server) | |
| int | w5500_reset (struct w5500_dev *dev) |
| Reset the W5500 chip using hardware or software method. | |
| int | w5500_setup (struct w5500_dev *dev) |
| Setup the W5500 chip with basic configuration. | |
| int | w5500_init (struct w5500_dev **device, struct w5500_init_param *init_param) |
| Initialize the device. | |
| int | w5500_remove (struct w5500_dev *dev) |
| Free a device descriptor and release resources. | |
Header file W5500 Driver.
Copyright 2025(c) Analog Devices, Inc.
SPDX-License-Identifier: BSD-3-Clause
| #define W5500_BSB | ( | block | ) |
| #define W5500_BSB_MASK NO_OS_GENMASK(7, 3) /* Block Select Bits */ |
| #define W5500_BYTE_HIGH | ( | value | ) |
| #define W5500_BYTE_LOW | ( | value | ) |
| #define W5500_CHIP_VERSION 0x04 |
| #define W5500_COMMON_REG 0x00 /* Common Register Block */ |
| #define W5500_GAR 0x0001 /* Gateway Address Register (4 bytes) */ |
| #define W5500_IMR 0x0016 /* Interrupt Mask Register */ |
| #define W5500_INTLEVEL 0x0013 /* Interrupt Low Level Timer Register (2 bytes) */ |
| #define W5500_IR 0x0015 /* Interrupt Register */ |
| #define W5500_IR_CONFLICT NO_OS_BIT(7) /* IP address conflict */ |
| #define W5500_IR_MP NO_OS_BIT(4) /* Magic packet received */ |
| #define W5500_IR_PPPOE NO_OS_BIT(5) /* PPPoE connection closed */ |
| #define W5500_IR_UNREACH NO_OS_BIT(6) /* Destination unreachable */ |
| #define W5500_MAX_SOCK_NUMBER 7 /* 8 sockets (0-7) */ |
| #define W5500_MR 0x0000 /* Mode Register */ |
| #define W5500_MR_FARP NO_OS_BIT(1) /* Force ARP */ |
| #define W5500_MR_PB NO_OS_BIT(4) /* Ping Block */ |
| #define W5500_MR_PPPOE NO_OS_BIT(3) /* PPPoE Mode */ |
| #define W5500_MR_RST NO_OS_BIT(7) /* Reset */ |
| #define W5500_MR_WOL NO_OS_BIT(5) /* Wake on LAN */ |
| #define W5500_OM_FDM_1 0x01 /* Fixed Data Length Mode 1 byte */ |
| #define W5500_OM_FDM_2 0x02 /* Fixed Data Length Mode 2 bytes */ |
| #define W5500_OM_FDM_4 0x03 /* Fixed Data Length Mode 4 bytes */ |
| #define W5500_OM_MASK NO_OS_GENMASK(1, 0) /* Operation Mode Bits */ |
| #define W5500_OM_VDM 0x00 /* Variable Data Length Mode */ |
| #define W5500_PHAR 0x001E /* PPP Destination MAC Register (6 bytes) */ |
| #define W5500_PHYCFGR 0x002E /* PHY Configuration Register */ |
| #define W5500_PHYCFGR_DPX NO_OS_BIT(2) /* Duplex Status (1=Full, 0=Half) */ |
| #define W5500_PHYCFGR_LNK NO_OS_BIT(0) /* Link Status (1=Up, 0=Down) */ |
| #define W5500_PHYCFGR_OPMD NO_OS_BIT(6) /* Operation Mode Select */ |
| #define W5500_PHYCFGR_OPMDC NO_OS_GENMASK(5, 3) /* Operation Mode Configuration */ |
| #define W5500_PHYCFGR_OPMDC_100BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 3) |
| #define W5500_PHYCFGR_OPMDC_100BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 2) |
| #define W5500_PHYCFGR_OPMDC_100BT_HD_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 4) |
| #define W5500_PHYCFGR_OPMDC_10BT_FD no_os_field_prep(W5500_PHYCFGR_OPMDC, 1) |
| #define W5500_PHYCFGR_OPMDC_10BT_HD no_os_field_prep(W5500_PHYCFGR_OPMDC, 0) |
| #define W5500_PHYCFGR_OPMDC_ALL_AN no_os_field_prep(W5500_PHYCFGR_OPMDC, 7) |
| #define W5500_PHYCFGR_OPMDC_POWER_DOWN no_os_field_prep(W5500_PHYCFGR_OPMDC, 6) |
| #define W5500_PHYCFGR_RST NO_OS_BIT(7) /* PHY Reset */ |
| #define W5500_PHYCFGR_SPD NO_OS_BIT(1) /* Speed Status (1=100Mbps, 0=10Mbps) */ |
| #define W5500_PMAGIC 0x001D /* PPP LCP Magic Number Register */ |
| #define W5500_PMRU 0x0026 /* PPP Maximum Segment Size (2 bytes) */ |
| #define W5500_PSID 0x0024 /* PPP Session ID Register (2 bytes) */ |
| #define W5500_PTIMER 0x001C /* PPP LCP Request Timer Register */ |
| #define W5500_RCR 0x001B /* Retry Count Register */ |
| #define W5500_RTR 0x0019 /* Retry Time Register (2 bytes) */ |
| #define W5500_RWB_MASK NO_OS_BIT(2) /* Read/Write Bit */ |
| #define W5500_RWB_READ 0x00 |
| #define W5500_RWB_WRITE NO_OS_BIT(2) |
| #define W5500_SHAR 0x0009 /* Source Hardware Address Register (6 bytes) */ |
| #define W5500_SIMR 0x0018 /* Socket Interrupt Mask Register */ |
| #define W5500_SIPR 0x000F /* Source IP Address Register (4 bytes) */ |
| #define W5500_SIR 0x0017 /* Socket Interrupt Register */ |
| #define W5500_Sn_CR 0x0001 /* Socket n Command Register */ |
| #define W5500_Sn_CR_CLOSE 0x10 /* Close socket */ |
| #define W5500_Sn_CR_CONNECT 0x04 /* Send connection request in TCP mode (Client mode) */ |
| #define W5500_Sn_CR_DISCON 0x08 /* Send closing request in TCP mode */ |
| #define W5500_Sn_CR_LISTEN 0x02 /* Wait connection request in TCP mode (Server mode) */ |
| #define W5500_Sn_CR_OPEN 0x01 /* Initialize and open socket */ |
| #define W5500_Sn_CR_RECV 0x40 /* Receive data */ |
| #define W5500_Sn_CR_SEND 0x20 /* Send data */ |
| #define W5500_Sn_CR_SEND_KEEP 0x22 /* Send keep-alive packet (TCP mode) */ |
| #define W5500_Sn_CR_SEND_MAC 0x21 /* Send data with MAC address (UDP mode) */ |
| #define W5500_Sn_DHAR 0x0006 /* Socket n Destination Hardware Address Register (6 bytes) */ |
| #define W5500_Sn_DIPR 0x000C /* Socket n Destination IP Address Register (4 bytes) */ |
| #define W5500_Sn_DPORT 0x0010 /* Socket n Destination Port Register (2 bytes) */ |
| #define W5500_Sn_FRAG 0x002D /* Socket n Fragment Offset in IP Header (2 bytes) */ |
| #define W5500_Sn_IMR 0x002C /* Socket n Interrupt Mask Register */ |
| #define W5500_Sn_IR 0x0002 /* Socket n Interrupt Register */ |
| #define W5500_Sn_IR_CON NO_OS_BIT(0) /* Connection established */ |
| #define W5500_Sn_IR_DISCON NO_OS_BIT(1) /* Connection termination requested/completed */ |
| #define W5500_Sn_IR_RECV NO_OS_BIT(2) /* Data received */ |
| #define W5500_Sn_IR_SEND_OK NO_OS_BIT(4) /* Send operation completed */ |
| #define W5500_Sn_IR_TIMEOUT NO_OS_BIT(3) /* Timeout occurred */ |
| #define W5500_Sn_KPALVTR 0x002F /* Socket n Keep Alive Timer Register */ |
| #define W5500_Sn_MR 0x0000 /* Socket n Mode Register */ |
| #define W5500_Sn_MR_BCASTB NO_OS_BIT(6) /* Broadcast Blocking */ |
| #define W5500_Sn_MR_CLOSE 0x00 /* Closed */ |
| #define W5500_Sn_MR_MACRAW 0x04 /* MAC Raw mode */ |
| #define W5500_Sn_MR_MIP6B NO_OS_BIT(4) /* IPv6 Blocking (MACRAW mode) */ |
| #define W5500_Sn_MR_MULTI NO_OS_BIT(7) /* Multicasting */ |
| #define W5500_Sn_MR_NDMC NO_OS_BIT(5) /* No Delayed ACK */ |
| #define W5500_Sn_MR_TCP 0x01 /* TCP */ |
| #define W5500_Sn_MR_UCASTB NO_OS_BIT(4) /* Unicast Blocking (UDP mode) */ |
| #define W5500_Sn_MR_UDP 0x02 /* UDP */ |
| #define W5500_Sn_MSSR 0x0012 /* Socket n Maximum Segment Size Register (2 bytes) */ |
| #define W5500_Sn_PORT 0x0004 /* Socket n Source Port Register (2 bytes) */ |
| #define W5500_Sn_RX_RD 0x0028 /* Socket n RX Read Pointer Register (2 bytes) */ |
| #define W5500_Sn_RX_RSR 0x0026 /* Socket n RX Received Size Register (2 bytes) */ |
| #define W5500_Sn_RX_WR 0x002A /* Socket n RX Write Pointer Register (2 bytes) */ |
| #define W5500_Sn_RXBUF_SIZE 0x001E /* Socket n RX Buffer Size Register */ |
| #define W5500_Sn_SR 0x0003 /* Socket n Status Register */ |
| #define W5500_Sn_SR_CLOSE_WAIT 0x1C /* Closing state */ |
| #define W5500_Sn_SR_CLOSED 0x00 /* Socket is closed */ |
| #define W5500_Sn_SR_CLOSING 0x1A /* Socket closing (FIN exchanged) */ |
| #define W5500_Sn_SR_ESTABLISHED 0x17 /* Connection is established */ |
| #define W5500_Sn_SR_FIN_WAIT 0x18 /* Socket closing (FIN sent) */ |
| #define W5500_Sn_SR_INIT 0x13 /* Socket is initialized */ |
| #define W5500_Sn_SR_LAST_ACK 0x1D /* Socket closing (Last ACK) */ |
| #define W5500_Sn_SR_LISTEN 0x14 /* Socket is in listen state */ |
| #define W5500_Sn_SR_MACRAW 0x42 /* Socket is in MACRAW mode */ |
| #define W5500_Sn_SR_SYNRECV 0x16 /* SYN packet received (TCP server) */ |
| #define W5500_Sn_SR_SYNSENT 0x15 /* SYN packet sent (TCP client) */ |
| #define W5500_Sn_SR_TIME_WAIT 0x1B /* Socket closing (2MSL timer active) */ |
| #define W5500_Sn_SR_UDP 0x22 /* Socket is in UDP mode */ |
| #define W5500_Sn_TOS 0x0015 /* Socket n Type of Service Register */ |
| #define W5500_Sn_TTL 0x0016 /* Socket n Time to Live Register */ |
| #define W5500_Sn_TX_FSR 0x0020 /* Socket n TX Free Size Register (2 bytes) */ |
| #define W5500_Sn_TX_RD 0x0022 /* Socket n TX Read Pointer Register (2 bytes) */ |
| #define W5500_Sn_TX_WR 0x0024 /* Socket n TX Write Pointer Register (2 bytes) */ |
| #define W5500_Sn_TXBUF_SIZE 0x001F /* Socket n TX Buffer Size Register */ |
| #define W5500_SOCK_BUF_SIZE_0K 0x00 /* 0KB buffer size */ |
| #define W5500_SOCK_BUF_SIZE_16K 0x10 /* 16KB buffer size */ |
| #define W5500_SOCK_BUF_SIZE_1K 0x01 /* 1KB buffer size */ |
| #define W5500_SOCK_BUF_SIZE_2K 0x02 /* 2KB buffer size (default) */ |
| #define W5500_SOCK_BUF_SIZE_4K 0x04 /* 4KB buffer size */ |
| #define W5500_SOCK_BUF_SIZE_8K 0x08 /* 8KB buffer size */ |
| #define W5500_SOCKET_REG_BLOCK | ( | n | ) |
| #define W5500_SOCKET_RX_BUF_BLOCK | ( | n | ) |
| #define W5500_SOCKET_TX_BUF_BLOCK | ( | n | ) |
| #define W5500_SUBR 0x0005 /* Subnet Mask Register (4 bytes) */ |
| #define W5500_UIPR 0x0028 /* Unreachable IP Address Register (4 bytes) */ |
| #define W5500_UPORTR 0x002C /* Unreachable Port Register (2 bytes) */ |
| #define W5500_VERSIONR 0x0039 /* Chip Version Register */ |
| int w5500_check_link_status | ( | struct w5500_dev * | dev | ) |
Check the Ethernet link status.
Check the Ethernet link status
| dev | - The device descriptor |
| int w5500_get_gateway | ( | struct w5500_dev * | dev, |
| uint8_t | gateway[4] ) |
Get gateway address.
Get gateway address
| dev | - The device descriptor |
| gateway | - Buffer to store the 4-byte gateway address |
| int w5500_get_ip | ( | struct w5500_dev * | dev, |
| uint8_t | ip[4] ) |
Get IP address.
Get IP address
| dev | - The device descriptor |
| ip | - Buffer to store the 4-byte IP address |
| int w5500_get_mac | ( | struct w5500_dev * | dev, |
| uint8_t | mac[6] ) |
Get MAC address.
Get MAC address
| dev | - The device descriptor |
| mac | - Buffer to store the 6-byte MAC address |
| int w5500_get_subnet | ( | struct w5500_dev * | dev, |
| uint8_t | subnet[4] ) |
Get subnet mask.
Get subnet mask
| dev | - The device descriptor |
| subnet | - Buffer to store the 4-byte subnet mask |
| int w5500_init | ( | struct w5500_dev ** | device, |
| struct w5500_init_param * | init_param ) |
Initialize the device.
Initialize the device
| device | - Pointer to the device descriptor to be initialized |
| init_param | - The device's initialization parameters |
| 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.
Read a 16-bit register reliably by reading until consecutive values match
| dev | - The device descriptor |
| block | - The block select bits (common registers, socket registers, etc.) |
| addr | - The register address |
| value | - Pointer to store the 16-bit value |
| 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.
Read data from a W5500 register
| dev | - The device descriptor |
| block | - The block select bits (common registers, socket registers, etc.) |
| addr | - The register address |
| data | - The buffer to store read data |
| len | - The data length to read |
| 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.
Write data to a W5500 register
| dev | - The device descriptor |
| block | - The block select bits (common registers, socket registers, etc.) |
| addr | - The register address |
| data | - The data buffer to write |
| len | - The data length |
| int w5500_remove | ( | struct w5500_dev * | dev | ) |
Free a device descriptor and release resources.
Free a device descriptor and release resources
| dev | - The device descriptor to be removed |
| int w5500_reset | ( | struct w5500_dev * | dev | ) |
Reset the W5500 chip using hardware or software method.
Reset the W5500 chip using hardware or software method
| dev | - The device descriptor |
| int w5500_set_gateway | ( | struct w5500_dev * | dev, |
| const uint8_t | gateway[4] ) |
Set gateway address.
Set gateway address
| dev | - The device descriptor |
| gateway | - 4-byte gateway address array |
| int w5500_set_ip | ( | struct w5500_dev * | dev, |
| const uint8_t | ip[4] ) |
Set IP address.
Set IP address
| dev | - The device descriptor |
| ip | - 4-byte IP address array |
| int w5500_set_mac | ( | struct w5500_dev * | dev, |
| const uint8_t | mac[6] ) |
Set MAC address.
Set MAC address
| dev | - The device descriptor |
| mac | - 6-byte MAC address array |
| int w5500_set_subnet | ( | struct w5500_dev * | dev, |
| const uint8_t | subnet[4] ) |
Set subnet mask.
Set subnet mask
| dev | - The device descriptor |
| subnet | - 4-byte subnet mask array |
| int w5500_setup | ( | struct w5500_dev * | dev | ) |
Setup the W5500 chip with basic configuration.
Setup the W5500 chip with basic configuration
| dev | - The device descriptor |
| int w5500_socket_bind | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id, | ||
| uint16_t | port ) |
Bind a socket to a specific port (server mode)
Bind a socket to a specific port (server mode)
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| port | - Local port number |
| int w5500_socket_clear_interrupt | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id, | ||
| uint8_t | flags ) |
Clear specific socket interrupt flags.
Clear specific socket interrupt flags
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| flags | - Interrupt flags to clear |
| int w5500_socket_close | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id ) |
Close a socket.
Close a socket
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| 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.
Write a command to a socket's command register
| dev | - The device descriptor |
| sock_id | - Socket number (0-7) |
| val | - Command value to write |
| 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)
Connect to a remote host (TCP client mode)
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| addr | - Socket address structure containing remote IP and port |
| int w5500_socket_disconnect | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id ) |
Disconnect a TCP connection.
Disconnect a TCP connection
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| int w5500_socket_init | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id ) |
Initialize a socket.
Initialize a socket
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| int w5500_socket_listen | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id ) |
Set socket to listen mode (TCP server)
Set socket to listen mode (TCP server)
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| 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.
Open a socket with specified protocol
| dev | - The device descriptor |
| sock_id | - Socket ID to use (0-7) |
| protocol | - W5500 mode register protocol |
| buff_size | - Buffer size (1, 2, 4, 8, 16 KB) |
| int w5500_socket_read_status | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id, | ||
| uint8_t * | status ) |
Read status of a socket.
Read status of a socket
| dev | - The device descriptor |
| sock_id | - Socket number (0-7) |
| status | - Variable to store status |
| int w5500_socket_recv | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id, | ||
| void * | buf, | ||
| uint16_t | len ) |
Receive data from a socket.
Receive data from a socket
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| buf | - Buffer to store received data |
| len | - Maximum length to receive |
| 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)
Receive data from a socket with source address information (UDP)
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| buf | - Buffer to store received data |
| len | - Maximum length to receive |
| from | - Structure to store source address information |
| int w5500_socket_send | ( | struct w5500_dev * | dev, |
| uint8_t | sock_id, | ||
| const void * | buf, | ||
| uint16_t | len ) |
Send data through a socket.
Send data through a socket
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| buf | - Data buffer to send |
| len | - Data length |
| 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)
Send data to a specific destination (UDP)
| dev | - Device descriptor |
| sock_id | - Socket number (0-7) |
| buf | - Data buffer to send |
| len | - Data length |
| to | - Destination address (IP and port) |
| int w5500_tcp_config | ( | struct w5500_dev * | dev, |
| uint16_t | retry_time, | ||
| uint8_t | retry_count ) |
Configure W5500 TCP parameters (RTR and RCR)
Configure W5500 TCP parameters (RTR and RCR)
| dev | - The device descriptor |
| retry_time | - Retry timeout value in 100μs units (default: 2000 = 200ms) |
| retry_count | - Maximum retry count (default: 8) |