I’d like to share STM32RS485DMA, a low-level RS485 transport library for STM32-based Arduino boards, built on UART + DMA for deterministic timing and very low CPU usage.
The library is working and validated on Arduino Opta (STM32H7) and is published in both the Arduino Library Manager and PlatformIO.
I’m now looking for owners of other STM32 Arduino boards who would be willing to help validate or extend board support, in particular:
- Portenta H7
GIGA R1
Machine Control
Other STM32-based Arduino boards
What help involves:
-No Arduino core changes or API work are required — the core library is already stable.
Contributions are limited to:
-Verifying the UART instance used for RS485
-Checking DMA stream / channel mapping
-Performing a basic TX/RX test on real hardware
Even partial confirmation (e.g. UART instance only) is useful.
To keep things simple, the repository includes a short CONTRIBUTING.md that documents exactly what needs to be checked when adding or validating a new board.
Repository
https://github.com/NitrofMtl/STM32RS485DMA
There is also a related discussion on the STM32duino GitHub repository for visibility and coordination:
STM32duino GitHub Discussion https://github.com/orgs/stm32duino/discussions/2903
If you own one of the boards above and are interested in helping, feel free to reply here or open an issue / PR on GitHub.
Optional: deeper testing (Modbus)
For contributors who want to stress-test the transport layer, there is also STM32Modbus, a fork of ArduinoModbus adapted to use STM32RS485DMA.
This is entirely optional and not required for board validation, but it provides a higher-level, real-world workload for RS485 (timeouts, turn-around, continuous traffic).
https://github.com/NitrofMtl/STM32Modbus
Thanks!