Wiznet makers

matthew

Published July 29, 2025 ©

89 UCC

9 WCC

31 VAR

0 Contests

0 Followers

0 Following

Original Link

Remora NucleoF446RE w/ W5500 Ethernet interface fork

Open-source Remora firmware ported to STM32 Nucleo-F446RE with WIZnet W5500 Ethernet. Step-gen, digital I/O & HW PWM verified for LinuxCNC over TCP/IP.

COMPONENTS
PROJECT DESCRIPTION

Project Overview:
This port brings the Remora real-time motion-control firmware to the STM32 Nucleo-F446RE and WIZnet W5500 Ethernet chip. By replacing USB with deterministic TCP/IP, a LinuxCNC PC can drive motors over a single Ethernet cable, reducing noise and simplifying wiring.

Key Features:
• Verified modules — step-generation, digital I/O and hardware PWM confirmed on F446RE.  
• Single-file pin re-mapping — edit “platformio.ini” to change W5500 CS/RST or UART pins.  
• Fully open-source (GPL-3.0) — easy to adapt for custom boards.

Hardware Setup – Default W5500 Pin-map:
SCK → PA5
MISO → PA6
MOSI → PA7
RST → PB5 (configurable)
CS  → PB6 (configurable)
Note: The SPI interrupt line is not used in this firmware.

Software Implementation (code snippet):
   #include <Ethernet/W5500.h>
   void netInit() {
       W5500.begin(PB6 /*CS*/, PB5 /*RST*/);
   }

Build & Flash:
   pio run -e nucleo_f446re
   pio run -e nucleo_f446re -t upload

Network Architecture:
LinuxCNC PC → (Ethernet Switch) → W5500 @ 100 Mbps → Remora core → Step/Dir drivers  
Note: the MCU waits for an Ethernet link before finishing boot.

Known Limitations & Roadmap:
- Software-PWM, encoder and analog-input modules are not yet ported.
- Support for the larger Nucleo-F446ZE (144-pin) is in progress.
- Performance metrics (max step rate, CPU load) await formal measurement.

Lessons Learned:
Using W5500’s hardware TCP/IP stack off-loads networking from the MCU, keeping real-time jitter low even while LinuxCNC streams motion commands.

Future Improvements:
- Implement analog inputs and quadrature encoder capture.
- Add web-based config upload to replace the current TFTP script.

DOCUMENTS
- Name: Main Application Code | Link: GitHub repo | Comment: Firmware & PlatformIO project
- Name: Example LinuxCNC Config | Link: LinuxCNC_Configs/NucleoHat | Comment: 3-axis demo
- Name: Nucleo Hat PCB (optional) | Link: https://github.com/ben-jacobson/RemoraNucleoHatPCB | Comment: Break-out board design

Documents
Comments Write