STM32H7 UART & Modbus TCP to simulator i,e, modbus tcp or serial port emulator poll

Job ID: 40105351

Budget: $30 – $250 CAD

I need concise, reliable firmware for an STM32H732ZG that turns the board into a communication bridge. The micro will expose a Modbus-TCP server over its Ethernet interface while simultaneously talking to a local device over UART. Registers read or written by a Modbus-TCP client (I will test with a standard simulator such as Modbus Poll) must be mirrored to, and from, the UART side in real time.

Core requirements
• Initialise all clocks, GPIO, Ethernet (RMII) and UART on the STM32H732ZG, preferably through STM32CubeIDE so I receive the .ioc file alongside the generated code.
• Implement a lightweight, non-blocking Modbus-TCP stack that can handle the usual function codes for reading/writing holding and input registers.
• Provide a simple framing protocol on UART (ASCII or binary, your choice—keep it documented) so that register values can be transferred without loss or ambiguity.
• Keep interrupt load low; DMA usage on both Ethernet and UART is welcome.
• Code must compile with the latest STM32CubeH7 HAL (LL drivers are fine if you prefer). No RTOS is necessary unless you feel FreeRTOS will simplify the networking layer—either way, document the choice.

Acceptance criteria
– Connecting a PC running Modbus Poll to the board over Ethernet and reading/writing a small test block (e.g., 20 holding registers) produces consistent results on every request.
– UART traffic captured on a terminal reflects those register changes immediately, and vice-versa.
– No hard faults or memory leaks after one hour of continuous polling at 10 ms intervals.

Deliverables
• Complete project folder with source, headers, CubeMX .ioc, and any third-party libraries used.
• Short README explaining build steps, pin assignments, and how to modify baud rate or register maps.

Once the firmware passes the acceptance tests, I will confirm and close the project.