Skip to content

How Does mikroSDK Unify W5500 and W6100 Behind One SPI Ethernet API?

mikroSDK 2.20.2 adds shared Ethernet APIs for W5500 and W6100, using MACRAW drivers and host-side ARP, ping, DHCP and HTTP examples.

Benjamin

Published November 09, 2026

Original author: MikroElektronika · SerbiaOriginal source (new tab)

How Does mikroSDK Unify W5500 and W6100 Behind One SPI Ethernet API?

Components

Hardware components

WIZnet parts

Project description

One Application Interface, Several Ethernet Controllers

mikroSDK 2.20.2 gives W5500 and W6100 a common software interface for Ethernet packet transfer. MikroElektronika, the embedded development-tool company based in Belgrade, Serbia, announced the release on November 3, 2026. The new middleware lets an application initialize a controller, send and receive packets, check the cable link and configure addresses through shared functions.

The release notes state, “Added a new SPI Ethernet library to mikroSDK.” The implementation includes five controller families: ENC28J60, LAN8651, LAN9250, W5500 and W6100. GitHub published the release artifact on October 29; the announcement and changelog identify November 3 as the release date.

The same mikroSDK application calls a common Ethernet API and selects one of five controller drivers

Authored technical diagram: shared software calls connect to one selected controller driver.

An application programming interface, or API, defines the calls a program makes to another software layer. mikroSDK uses that boundary to keep ordinary packet operations separate from each controller's register layout. A developer can study one application flow while choosing the driver and board configuration for the hardware in use.

Separate the Application, Bus and Controller

The transport core forwards shared operations to a selected driver. For example, eth_transport_send() calls the driver's packet transmitter, while eth_transport_receive() calls its packet reader. The application passes an Ethernet transport object rather than accessing W5500 or W6100 registers directly.

The source divides networking into three reusable areas. middleware/ethernet/core contains the transport interface, middleware/ethernet/spi binds that interface to the microcontroller's Serial Peripheral Interface, and middleware/ethernet/net provides packet helpers. Each controller implementation sits in components/ethernet and supplies its own register access, initialization and link handling.

Software areaResponsibilityPractical effect
Transport coreCommon initialization and packet operationsApplication uses the same entry points
SPI bindingTransfers headers and data on the SPI busMCU peripheral handling stays in one layer
Controller driverImplements the selected chip's register operationsW5500 and W6100 details stay separate
Network helpersBuilds and handles selected protocol packetsShared protocol code runs on the host MCU

The separation also makes the source easier to navigate. A missing physical link leads toward the selected driver's link function; an incorrect SPI transaction leads toward the bus binding. Protocol behavior belongs in the helpers or application rather than being scattered across every driver.

What W5500 and W6100 Do in This Implementation

Both the W5500 driver and the W6100 driver open socket 0 in MACRAW mode. MACRAW exposes Ethernet frames to the microcontroller, including the addressing and protocol information carried inside those frames. The drivers move frame data between the controller's buffers and MCU memory over SPI.

The MCU runs protocol helpers while W5500 or W6100 carries raw Ethernet frames between SPI and the LAN

Authored architecture diagram: protocol processing stays on the MCU in this driver path.

The WIZnet controller supplies the Ethernet connection and frame transport. The MCU handles the supplied Address Resolution Protocol helpers, Internet Control Message Protocol ping replies and basic Transmission Control Protocol frame handling. ARP finds the local Ethernet address associated with an IP address; ICMP provides the request and reply used by a normal ping.

WIZnet role: W5500 and W6100 carry Ethernet frames over SPI. The shared mikroSDK helpers and example application process the network protocols on the MCU.

The W6100 chip also supports hardware IPv4/IPv6 networking, but the reviewed example dispatches ARP and IPv4 frames. Selecting W6100 therefore preserves the example's IPv4 behavior. Developers wanting an IPv6 application need an implementation that explicitly provides that protocol path.

Select the Driver Before Building

The validation example selects its controller through SPI_ETH_CHIP. Set that choice to W5500 or W6100 and map the appropriate mikroBUS socket for the board. The tagged example currently selects LAN9250, so copying the project without checking this setting does not select a WIZnet device.

The chip selector chooses one driver target, and CMake links that target alongside the shared Ethernet layers

Authored build diagram: the application links the selected controller rather than every driver.

The CMake configuration reads the selector from main.c and links only the matching controller target. Its comment explains the reason: mikroC reserves RAM for every linked driver, which can exceed the memory available on small MCUs. Shared API support for five controllers does not require putting all five drivers into one application.

The example defines a local MAC address and enables the Dynamic Host Configuration Protocol client by default. DHCP requests an IP address from the local network. A failed request falls back to the configured static address, 172.20.22.200. Adjust the example's address settings for the test network and use a distinct local MAC address for each device.

Follow the Test from Cable Link to Browser

The test checks the physical link, attempts address acquisition, then repeatedly receives Ethernet frames. ARP requests and IPv4 packets take separate processing paths. An HTTP request arriving on TCP port 80 causes the example to return a small HTML response identifying the selected chip.

Four validation steps progress from link detection through IP addressing and ping to an HTTP response

Authored test guide: physical link, addressing, ping and an HTTP response.

The test README defines success as answering ARP and ping requests and serving the HTML page to a browser or curl on the same network. The board's USB UART terminal reports its address. The README also recommends normal Run mode because debugger delays can make the TCP handshake time out.

The public implementation pull request records results for several MCU/compiler combinations, including both successful and problematic cases. Those reports help identify configurations to investigate. The linked reports are contributor tests for their listed configurations.

Where the Library Fits

The release provides a concrete starting point for understanding controller abstraction and bringing up a wired connection in the mikroSDK environment. The packet API, chip-specific drivers and small HTTP example can be examined separately. A product application still needs to choose its target board, network services and error-handling requirements; the compact validation responder is a starting example.

Reuse also depends on the repository's license terms. The published text specifies a commercial NECTO licensing route and an alternative for non-commercial projects under LGPL version 3. Review those terms when selecting the library for a project.

For the existing physical module, the earlier ETH WIZ Click introduction explains the W5500 board. To compare another framework's integration, ESPHome support for W6100 and W6300 shows a separate configuration and platform path. The mikroSDK release adds its own shared packet interface and validation application to that wider software ecosystem.

FAQ

Q. What changed in mikroSDK 2.20.2? The release introduces common SPI Ethernet middleware and drivers for five controller families, including W5500 and W6100.

Q. Does this implementation use WIZnet hardware TCP/IP sockets? The reviewed W5500 and W6100 drivers use socket 0 in MACRAW mode. Protocol helpers and the HTTP example execute on the MCU.

Q. Does choosing W6100 make the example IPv6-capable? The reviewed example processes ARP and IPv4 frames. W6100 hardware support alone does not add an IPv6 application path.

Q. What must be changed before testing a W5500 board? Select W5500 through SPI_ETH_CHIP, map the board's mikroBUS connection and configure suitable network addresses. The build links the selected driver.

Q. How can the connection be checked? Follow the repository's link, address, ping and HTTP tests on the same local network. Run normally rather than pausing through the TCP handshake in a debugger.

Documents

  • mikroSDK 2.20.2 release

    Release artifact and November 3 release notes.

  • W5500 MACRAW controller driver

    Tagged implementation opens socket 0 in MACRAW mode.

  • W6100 MACRAW controller driver

    Tagged W6100 frame send/receive and link handling.

  • Common Ethernet transport

    Shared calls delegate to controller callbacks.

  • Host network protocol helpers

    ARP, ICMP, TCP, UDP and DHCP packet helpers.

  • SPI Ethernet validation application

    Controller selection, DHCP, packet dispatch and HTTP example.

  • Driver selection and build targets

    Links only the controller selected in main.c.

  • Validation procedure

    ARP, ping and HTTP acceptance steps; Run-mode guidance.

  • Implementation and reported compiler tests

    Contributor test matrix, including configuration-specific failures.

  • SPI Ethernet support tracking

    Owner-maintained controller and hardware support tracker.

  • mikroSDK license

    Published commercial and non-commercial licensing routes.

  • MIKROE organization profile

    Original organization identifies its role and Belgrade, Serbia location.

  • W6100 official documentation

    Chip capabilities for comparison with the selected driver mode.

Comments

Similar projects you might like

Comments