STM32H563ZIT6 cannot receive RS485 at high baud rates (e.g. 12 Mbaud)
TX works but RX interrupt not triggered
Hello,
I am currently using a custom board based on STM32H563ZIT6. My goal is to establish communication over RS485 between the STM32 and a PC (using Hterm). The system is designed to receive a command and send a response.
Communication Details:
- Interface: RS485 (half-duplex)
- PC Tool: Hterm
- Converter: USB COM 485 PLUS 4
- Packet size: Very small (typically 4 bytes)
- Transmission interval: ≥ 300 ms
Current Situation:
- Communication works perfectly between 115200 and 2,000,000 baud
- I am trying to increase the baud rate up to 12 Mbaud
Problem:
At 12 Mbaud:
- STM32 → PC communication works correctly
(I can see transmitted data on Hterm) - PC → STM32 communication does NOT work
- STM32 does not receive any data
- RX interrupt is not triggered at all
- It behaves as if no data is arriving
Additional Notes:
- I have checked the termination resistor, and it seems correct
- The data sent from PC is valid (verified from Hterm)
- UART baud rate is configured up to 12.5 Mbaud in CubeMX
- The issue only appears at very high baud rates
What I Suspect:
- Possible limitation of RS485 converter at high baud rates
- UART sampling/timing issues at 12 Mbaud
- Interrupt-based reception may not be sufficient at such speeds
- Hardware limitations (signal integrity, cable, etc.)
Questions:
- Is it realistic to achieve 12 Mbaud over RS485 in this setup?
- Could this be a limitation of the USB-RS485 converter?
- Are there any specific STM32 UART settings required for such high speeds?
- Should DMA be used instead of interrupt for reliable reception?
- Are there known limitations for STM32H5 series UART at these speeds?
Any insights or similar experiences would be very helpful.
Thanks in advance!
