Dshot, testing a new digital parallel ESC throttle signal
as some might have seen in the kiss24A thread, we are testing a new digital ESC throttle signal
i use the STM32's DMA (direct memory access) controller to let the PWM timers send a 16-bit digital signal to the ESC. on the ESC side (kiss24A) the signal gets also read using DMA. like this there is almost no extra MCU power needed on the FC or the ESC.
the protocol we use ATM. sends a 11-bit throttle value (2048 steps) and a 4-bit CRC to verify its correctness. there is also one bit used to request the telemetry from one ESC.
here a oscilloscope pic of how it lookes:
the signal is sent individually on each PWM pin. it uses 600k bit rate and takes 26,7ÁS for one transmission like this a theoretical max loop time of 33khz would bepossible (as there need to be a space between) but im almost sure we will never need that
advantages compared to the most used analog signals like PWM as also oneshot125 or 42 are:
- no signal jitter.. if the FC sends 1375 the ESC will receive 1375
- high resolution (2048steps)
- no oscillator drift (nomore calibrateing ESC's)
- more robust against spikes
- safer as every singnal has a CRC (cyclic redundancy check)
- maybe later some goodies like having the ESC's beep with the buzzer signal or things like that
another good thing is that a change from PWM or oneshot PWM to this will only require new software (at last for KISSFC+KISS24A users). as the same wires and pins are used.
i can't really tell if it will improve the flight feeling or not.. a good working oneshot125 is quite accurate and fast too. so the "real world"
improvement might be more things like that it dont drifts and will be saver..
i did all this in cooperation with borisb (betaflight) they have it working (14.10.16)(https://github.com/betaflight/betaflight/pull/1282)
Update: some more info to Dshot can be found in the folowing links
http://kiss.flyduino.net/dshot-new-d...ocol-for-kiss/ (for the KISS24A and the KISSFC)
some blog posts:
more technical infos from blckmn, he worked since the start on the betaflight Dshot support:
also if you like to try it:
be aware that it is not much tested! and we might change the protocoll untill the final release so there is no guarantee that the ESC FW will work with later versions of the FC's Dshot version.
i attached a GUI as we currently often change things during dev. the attached version will work with the Dshot FC FW.
the ESC FW can only be flashed onto the KISSESC bootloader using the GUI or my little standalone chrome app(kiss24A FW version 1.02 or later)
also just try it on your own risk!
of course every report will help
quadmovr successful flown it
i will update this post when we have news .
Update, and clean up from previous updates
T10 is now close to how it should be (the T10 ESC FW has no functional changes to T91 just the settings and beep is new).
the working GUI for the KISS FC T10 FW is still the attached T8 GUI
what do we have ATM (28.10.2016)
KISS24A ESC's (FW T10):
- PWM, Oneshot125, Oneshot42 and Dshot autodetect
- Dshot bitrate autodetect (100-1200khz)
- version T91 was tested succesfully (before we had some motor stops) (T10 is similar from the Dshot reading side)
- it now also accepts some settings and answers requests over Dshot:
request area is 1-47
the kiss24A uses 1-13 from it
1-5: beep (1= low freq. 5 = high freq.)
6: ESC info request (FW Version and SN sent over the tlm wire)
7: rotate in one direction
8: rotate in the other direction
9: 3d mode off
10: 3d mode on (3d mode dont workes with Dshot ATM)
11: ESC settings request (saved settings over the TLM wire) (planed but not there yet)
12: save Settings
if a setting or request value is sent, the motor must be standing still and the telemetry bit must also be 1.
critical things like rotation direction change, 3d mode on/off and save and reset, must be sent 10x in a row, and only take effect after save and reset.
- does Dshot150, Dshot300 and Dshot600 for the first four motor outputs
- the ESC version reading workes now with Dshot(T10)
- the FC can make the ESC's beep
also is working on the support for more targets..
(betaflight Dshot wiki https://github.com/betaflight/betafl...%20and%20Dshot)
workes now also with Dshot on the most BB2 ESC's
BLheli test Hex files: https://github.com/bitdump/BLHeli/tr...eli_S%20SiLabs
overall does all of this needs much more testing to find problems that might remain. at this point i want to thank all testers for risking their quads just to help developing this faster
but still, be very carefull when using these test versions.. this thread exists because things are not save for now.. only use it if you like to try new things and know that it might damage your stuff..
Update T10.4 and T10.7xx(FC FW only).
T10.4 seems to be stable from the Dshot side
T10.7xx is the same Dshot code as T10.4, but its filters are improved to work better with some quads.
for now the filters in 10.7xx dont seem to have any disadvantages so i would suggest to go with it
just for all that might cry now: why not using CAN BUS?
1. because the most low cost MCU's mostly used on ESC's dont have can
2. every ESC will need to have one additional tranceiver IC
3. to come to the same speed you would need to have CAN working at 2.4Mbit (4x600k).. eaven faster as you will have to send adresses
4. CAN is a serial network where you need ID's on every ESC
Last edited by juuuut; Dec 16, 2016 at 02:31 AM.
i cant tell if blheli will, or is able to support it...