10#define __DRV_DSHOT_H__
13#define TIMER_CLOCK 108000000
15#define MHZ_TO_HZ(x) ((x) * 1000000)
17#define DSHOT600_HZ MHZ_TO_HZ(108)
18#define DSHOT300_HZ MHZ_TO_HZ(54)
19#define DSHOT150_HZ MHZ_TO_HZ(27)
22#define MOTOR_BIT_1 120
23#define MOTOR_BITLENGTH 180
25#define DSHOT_FRAME_SIZE 16
26#define DSHOT_DMA_BUFFER_SIZE 18
28#define DSHOT_MIN_THROTTLE 48
29#define DSHOT_MAX_THROTTLE 2047
30#define DSHOT_RANGE (DSHOT_MAX_THROTTLE - DSHOT_MIN_THROTTLE)
32#define DSHOT_ARM_COUNT 1500
33#define DSHOT_SETTINGS_COUNT 10
bool dshot_telemetry
Definition: drv_dshot.c:19
void dshotInit(dshot_type_e dshot_type)
Initializes the low level registers to set up the timer with PWM DMA.
Definition: drv_dshot.c:39
void dshotWait(uint16_t wait_counts)
Waits for a certain amount of dshot commands.
Definition: drv_dshot.c:276
dshot_type_e
Definition: drv_dshot.h:37
@ DSHOT150
Definition: drv_dshot.h:38
@ DSHOT600
Definition: drv_dshot.h:40
@ DSHOT300
Definition: drv_dshot.h:39
dshotCommands_e
Definition: drv_dshot.h:44
@ DSHOT_CMD_SPIN_DIRECTION_REVERSED
Definition: drv_dshot.h:59
@ DSHOT_CMD_SILENT_MODE_ON_OFF
Definition: drv_dshot.h:69
@ DSHOT_CMD_SAVE_SETTINGS
Definition: drv_dshot.h:57
@ DSHOT_CMD_AUDIO_STREAM_MODE_ON_OFF
Definition: drv_dshot.h:68
@ DSHOT_CMD_LED2_ON
Definition: drv_dshot.h:62
@ DSHOT_CMD_LED3_ON
Definition: drv_dshot.h:63
@ DSHOT_CMD_BEACON1
Definition: drv_dshot.h:46
@ DSHOT_CMD_BEACON5
Definition: drv_dshot.h:50
@ DSHOT_CMD_SETTINGS_REQUEST
Definition: drv_dshot.h:56
@ DSHOT_CMD_LED1_OFF
Definition: drv_dshot.h:65
@ DSHOT_CMD_BEACON4
Definition: drv_dshot.h:49
@ DSHOT_CMD_LED0_OFF
Definition: drv_dshot.h:64
@ DSHOT_CMD_SPIN_DIRECTION_NORMAL
Definition: drv_dshot.h:58
@ DSHOT_CMD_SPIN_DIRECTION_1
Definition: drv_dshot.h:52
@ DSHOT_CMD_SPIN_DIRECTION_2
Definition: drv_dshot.h:53
@ DSHOT_CMD_3D_MODE_OFF
Definition: drv_dshot.h:54
@ DSHOT_CMD_MOTOR_STOP
Definition: drv_dshot.h:45
@ DSHOT_CMD_LED1_ON
Definition: drv_dshot.h:61
@ DSHOT_CMD_BEACON3
Definition: drv_dshot.h:48
@ DSHOT_CMD_BEACON2
Definition: drv_dshot.h:47
@ DSHOT_CMD_LED3_OFF
Definition: drv_dshot.h:67
@ DSHOT_CMD_LED0_ON
Definition: drv_dshot.h:60
@ DSHOT_CMD_LED2_OFF
Definition: drv_dshot.h:66
@ DSHOT_CMD_ESC_INFO
Definition: drv_dshot.h:51
@ DSHOT_CMD_MAX
Definition: drv_dshot.h:70
@ DSHOT_CMD_3D_MODE_ON
Definition: drv_dshot.h:55
void dshotWrite(uint16_t *motor_value)
Writes to the DMA buffer and starts the DMA stream.
Definition: drv_dshot.c:261
volatile uint16_t dshot_command_count
Definition: drv_dshot.c:17
uint16_t motor_value[MOTOR_COUNT]
Definition: motors.c:14