2026-01-27 5:16 AM
Hello ST Community,
I am working on a commercial vending machine controller and would like to get feedback from ST engineers and experienced STM32 designers regarding a system architecture change.
Our current system uses a single MCU, but we are now hitting hard peripheral limits, mainly:
Timer availability (stepper + DC motor control)
GPIO interrupt count
GPIO pin availability
Increasing real-time jitter when multiple loads are active
This is not a software optimization issue anymore; it is a resource saturation issue.
Because of this, we are planning to move from a single-MCU architecture to a multi-MCU system.
Master MCU: STM32H563ZIT6
Handles:
All sensors (ADC / digital)
Control logic & state machine
Recipe execution
Safety checks
UI communication
No direct motor timing generation
Slave MCUs (2x):
Dedicated load-handling controllers
One for stepper motors
One for DC motors / PWM-based loads
Slaves perform only deterministic actuation
No sensors, no business logic
Inter-MCU Communication:
Considering CAN (FDCAN) as primary bus
RS485 as an alternative / secondary option
I have attached a block-level architecture diagram for reference.
| ADC | 1 | 12 channels |
| I2C | I2C1, I2C2, I2C3 | 3 |
| TIM | TIM1, TIM2, TIM3, TIM4, TIM5, TIM8 | 6 |
| UART / USART | USART1, USART2, USART3, UART5, UART7, UART8, UART9, UART12 | 8 |
| DAC | DAC1 | 1 |
| GPIO Interrupts | – | 14 |
| GPIO Inputs | – | 20 |
| GPIO Outputs | – | 5 |
| CAN | FDCAN1 | 1 |
Even with this split, the master MCU is still heavily utilized, which is why motor timing is fully offloaded to slave MCUs.
Is this master + load-slave MCU split the correct long-term approach for vending machine / appliance-class products?
From an STM32 architectural perspective, are there recommended design patterns for timer- and interrupt-heavy motor systems?
CAN vs RS485 for multi-MCU control:
CAN seems preferable for arbitration and fault handling
Any STM32H5-specific considerations?
Are there common pitfalls (boot sequence, synchronization, fault recovery, debugging) that should be addressed early?
From a product lifetime standpoint (8–10 years), does this architecture look robust and maintainable?
I would appreciate feedback from:
ST application engineers
Developers with multi-MCU STM32 designs
Anyone with experience in CAN-based industrial / appliance systems
Thank you in advance for your insights.
Best regards,
Prathapraj S,
Boatload Minds Pvt Ltd.
@stm32h5,can,motor-control,system-architecture,multi-mcu
2026-02-26 3:14 AM - edited 2026-02-26 5:22 AM
Hello and sorry for the late reply,
Not possible to answer all of your questions and propose an exhaustive answer. But my proposal why don't you scale up the STM32 by using a more performant MCU such as STM32H7. STM32H7 dual core (Ex: STM32H745) can be a good candidate for your application. It can reach up to 480MHz of system clock in LDO mode at VOS0.
And the partitioning of your application will be as the following:
CM7 is controlling the motors / Graphics if available
CM4 is managing the sensors and external communication: FDCAN, USARTs, RS485 etc ..
Please refer to the application note AN5557 "STM32H745/755 and STM32H747/757 lines dual-core architecture" / especially the section 4. Application partitioning examples.
The figure from that application note:
Hope that I've provided an idea on how to proceed.
Good luck.