2026-01-27 9:16 PM
Hello
I am currently developing a quadruped robot using a NUCLEO-H753ZI. My setup involves a mix of Dynamixel AX-12+ (UART3, 1Mbps, Protocol 1.0) and MX-series motors (UART6, 2Mbps, Protocol 2.0) using an SN74LS241N transceiver.
The Problem:
UART3 (AX-12): Works perfectly at 1Mbps. This confirms my basic transceiver logic and wiring are functional.
UART6 (MX-Series): No response at all. I’ve tried downgrading the MX motors to 1Mbps and using Protocol 1.0 to match the AX-12, but still nothing.
Technical Context & MPU Setup: To provide more context, I have implemented an MPU configuration primarily to handle IMU sensor data via DMA. I wanted to ensure cache coherency for the IMU data buffers.
However, I am now concerned that this MPU/Cache setup might be interfering with my UART6 communication. Since the MX motors on UART6 require much higher timing precision (especially at 2Mbps), I suspect the D-Cache or MPU regions might be causing issues with the UART TX buffers, even though I'm currently using Polling (HAL_UART_Transmit).
What I’ve tried so far:
Baud Rate: Tested MX-series at both 2Mbps and 1Mbps.
Timing: Added a wait loop for UART_FLAG_TC before toggling the Direction Pin (PC8).
MPU: Configured specific memory regions as Non-Cacheable/Shared to avoid stale data.
My Questions:
Is there a known reason why UART3 would work fine while UART6 fails under the same MPU/Cache logic on the H7?
Could the Bus Matrix or Domain differences (D1 vs D2) between UART3 and UART6 be playing a role here?
Does my MPU_Config() (see attached main.c) look appropriate for a system handling both high-speed IMU DMA and UART RS485?
I’ve attached my main.c (including MPU_Config), usart.c, and the DXL driver. I would really appreciate any insights or pointers on H7-specific UART pitfalls.
Thank you in advance!
2026-01-27 9:31 PM
I'm adding the Clock Configuration screenshot that I missed in the original post