I’ve been working on implementing DShot150 on an Nucleof4 development board using HAL drivers with DMA, driven via a timer. I followed the DShot using HAL drivers implementation and even extracted the relevant code directly into main.c, removing any dependency on external libraries and blheli_s esc
However, I’m still observing an unexpected 20 microsecond delay between frames. When I connect the timer output (configured for PWM via DMA) to the ESC’s motor signal input, I can feel distinct slow pulses in the motor's three-phase wires coming from the ESC and the motor pins for a second when i remove the signal to the esc.
I’ve read that DShot requires a minimum of 2 microseconds between frames, but other sources mention that an idle period of 2 bits (which is 13.3 µs at DShot150 since 1 bit = ~6.67 µs) is sufficient by setting the timer's CCR to 0 during the idle period.
So, my questions are:
Has anyone else felt a distinct slow pulses in the motor's three-phase wires coming from the ESC what kind of conclusion i can come from this to proceed further to run the motor continuously.
What is the officially recommended or widely accepted inter-frame delay for DShot150 frames? Is it 2 µs, or is the 2-bit idle (13.3 µs) the correct approach?
Is bare-metal programming the only reliable way to implement DShot on STM32? I’m open to moving away from HAL if necessary, but looking for others' experiences or guidance.
Any help or insights would be much appreciated!