Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
Stepper Controller Interface

Stepper Controller Interface . More...

Topics

 Trinamic Stepper Controller Interface
 Trinamic Stepper Controller Interface .
 

Macros

#define MICRO_STEP_RES_INDEX(res)
 Macro to calculate the index of the microstep resolution.
 

Enumerations

enum  stepper_micro_step_resolution {
  STEPPER_MICRO_STEP_1 = 1 , STEPPER_MICRO_STEP_2 = 2 , STEPPER_MICRO_STEP_4 = 4 , STEPPER_MICRO_STEP_8 = 8 ,
  STEPPER_MICRO_STEP_16 = 16 , STEPPER_MICRO_STEP_32 = 32 , STEPPER_MICRO_STEP_64 = 64 , STEPPER_MICRO_STEP_128 = 128 ,
  STEPPER_MICRO_STEP_256 = 256
}
 Stepper Motor microstep resolution options. More...
 
enum  stepper_direction { STEPPER_DIRECTION_NEGATIVE = 0 , STEPPER_DIRECTION_POSITIVE = 1 }
 Stepper Motor direction options. More...
 
enum  stepper_run_mode { STEPPER_RUN_MODE_HOLD = 0 , STEPPER_RUN_MODE_POSITION = 1 , STEPPER_RUN_MODE_VELOCITY = 2 }
 Stepper Motor run mode options. More...
 
enum  stepper_event { STEPPER_EVENT_STEPS_COMPLETED = 0 , STEPPER_EVENT_STALL_DETECTED = 1 , STEPPER_EVENT_LEFT_END_STOP_DETECTED = 2 , STEPPER_EVENT_RIGHT_END_STOP_DETECTED = 3 }
 Stepper Events. More...
 

Functions

int stepper_enable (const struct device *dev, const bool enable)
 Enable or disable motor controller.
 
int stepper_move_by (const struct device *dev, int32_t micro_steps)
 Set the microsteps to be moved from the current position i.e.
 
int stepper_set_microstep_interval (const struct device *dev, uint64_t microstep_interval_ns)
 Set the time interval between steps in microseconds.
 
int stepper_set_micro_step_res (const struct device *dev, enum stepper_micro_step_resolution resolution)
 Set the microstep resolution in stepper motor controller.
 
int stepper_get_micro_step_res (const struct device *dev, enum stepper_micro_step_resolution *resolution)
 Get the microstep resolution in stepper motor controller.
 
int stepper_set_reference_position (const struct device *dev, int32_t value)
 Set the reference position of the stepper.
 
int stepper_get_actual_position (const struct device *dev, int32_t *value)
 Get the actual a.k.a reference position of the stepper.
 
int stepper_move_to (const struct device *dev, int32_t micro_steps)
 Set the absolute target position of the stepper.
 
int stepper_is_moving (const struct device *dev, bool *is_moving)
 Check if the stepper motor is currently moving.
 
int stepper_run (const struct device *dev, enum stepper_direction direction)
 Run the stepper with a given step interval in a given direction.
 
int stepper_set_event_callback (const struct device *dev, stepper_event_callback_t callback, void *user_data)
 Set the callback function to be called when a stepper event occurs.
 

Detailed Description

Stepper Controller Interface .

Macro Definition Documentation

◆ MICRO_STEP_RES_INDEX

#define MICRO_STEP_RES_INDEX ( res)

#include <zephyr/drivers/stepper.h>

Value:
LOG2(res)
#define LOG2(x)
Compute log2(x)
Definition util.h:703

Macro to calculate the index of the microstep resolution.

Parameters
resMicrostep resolution

Enumeration Type Documentation

◆ stepper_direction

#include <zephyr/drivers/stepper.h>

Stepper Motor direction options.

Enumerator
STEPPER_DIRECTION_NEGATIVE 

Negative direction.

STEPPER_DIRECTION_POSITIVE 

Positive direction.

◆ stepper_event

#include <zephyr/drivers/stepper.h>

Stepper Events.

Enumerator
STEPPER_EVENT_STEPS_COMPLETED 

Steps set using move_by or move_to have been executed.

STEPPER_EVENT_STALL_DETECTED 

Stall detected.

STEPPER_EVENT_LEFT_END_STOP_DETECTED 

Left end switch status changes to pressed.

STEPPER_EVENT_RIGHT_END_STOP_DETECTED 

Right end switch status changes to pressed.

◆ stepper_micro_step_resolution

#include <zephyr/drivers/stepper.h>

Stepper Motor microstep resolution options.

Enumerator
STEPPER_MICRO_STEP_1 

Full step resolution.

STEPPER_MICRO_STEP_2 

2 microsteps per full step

STEPPER_MICRO_STEP_4 

4 microsteps per full step

STEPPER_MICRO_STEP_8 

8 microsteps per full step

STEPPER_MICRO_STEP_16 

16 microsteps per full step

STEPPER_MICRO_STEP_32 

32 microsteps per full step

STEPPER_MICRO_STEP_64 

64 microsteps per full step

STEPPER_MICRO_STEP_128 

128 microsteps per full step

STEPPER_MICRO_STEP_256 

256 microsteps per full step

◆ stepper_run_mode

#include <zephyr/drivers/stepper.h>

Stepper Motor run mode options.

Enumerator
STEPPER_RUN_MODE_HOLD 

Hold Mode.

STEPPER_RUN_MODE_POSITION 

Position Mode.

STEPPER_RUN_MODE_VELOCITY 

Velocity Mode.

Function Documentation

◆ stepper_enable()

int stepper_enable ( const struct device * dev,
const bool enable )

#include <zephyr/drivers/stepper.h>

Enable or disable motor controller.

Parameters
devpointer to the stepper motor controller instance
enableInput enable or disable motor controller
Return values
-EIOError during Enabling
0Success

◆ stepper_get_actual_position()

int stepper_get_actual_position ( const struct device * dev,
int32_t * value )

#include <zephyr/drivers/stepper.h>

Get the actual a.k.a reference position of the stepper.

Parameters
devpointer to the stepper motor controller instance
valueThe actual position to get in microsteps
Return values
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_get_micro_step_res()

int stepper_get_micro_step_res ( const struct device * dev,
enum stepper_micro_step_resolution * resolution )

#include <zephyr/drivers/stepper.h>

Get the microstep resolution in stepper motor controller.

Parameters
devpointer to the stepper motor controller instance
resolutionmicrostep resolution
Return values
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_is_moving()

int stepper_is_moving ( const struct device * dev,
bool * is_moving )

#include <zephyr/drivers/stepper.h>

Check if the stepper motor is currently moving.

Parameters
devpointer to the stepper motor controller instance
is_movingPointer to a boolean to store the moving status of the stepper motor
Return values
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_move_by()

int stepper_move_by ( const struct device * dev,
int32_t micro_steps )

#include <zephyr/drivers/stepper.h>

Set the microsteps to be moved from the current position i.e.

relative movement

The motor will move by the given number of microsteps from the current position. This function is non-blocking.

Parameters
devpointer to the stepper motor controller instance
micro_stepstarget microsteps to be moved from the current position
Return values
-ECANCELEDIf the stepper is disabled
-EIOGeneral input / output error
0Success

◆ stepper_move_to()

int stepper_move_to ( const struct device * dev,
int32_t micro_steps )

#include <zephyr/drivers/stepper.h>

Set the absolute target position of the stepper.

The motor will move to the given microsteps position from the reference position. This function is non-blocking.

Parameters
devpointer to the stepper motor controller instance
micro_stepstarget position to set in microsteps
Return values
-ECANCELEDIf the stepper is disabled
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_run()

int stepper_run ( const struct device * dev,
enum stepper_direction direction )

#include <zephyr/drivers/stepper.h>

Run the stepper with a given step interval in a given direction.

The motor shall be set into motion and run continuously until stalled or stopped using some other command, for instance, motor_enable(false). This function is non-blocking.

Parameters
devpointer to the stepper motor controller instance
directionThe direction to set
Return values
-ECANCELEDIf the stepper is disabled
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_set_event_callback()

int stepper_set_event_callback ( const struct device * dev,
stepper_event_callback_t callback,
void * user_data )

#include <zephyr/drivers/stepper.h>

Set the callback function to be called when a stepper event occurs.

Parameters
devpointer to the stepper motor controller instance
callbackCallback function to be called when a stepper event occurs passing NULL will disable the callback
user_dataUser data to be passed to the callback function
Return values
-ENOSYSIf not implemented by device driver
0Success

◆ stepper_set_micro_step_res()

int stepper_set_micro_step_res ( const struct device * dev,
enum stepper_micro_step_resolution resolution )

#include <zephyr/drivers/stepper.h>

Set the microstep resolution in stepper motor controller.

Parameters
devpointer to the stepper motor controller instance
resolutionmicrostep resolution
Return values
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
-ENOTSUPIf the requested resolution is not supported
0Success

◆ stepper_set_microstep_interval()

int stepper_set_microstep_interval ( const struct device * dev,
uint64_t microstep_interval_ns )

#include <zephyr/drivers/stepper.h>

Set the time interval between steps in microseconds.

For controllers such as DRV8825 where you toggle the STEP Pin, the pulse_length would have to be calculated based on this parameter in the driver.

Note
Setting step interval does not set the motor into motion, a combination of set_microstep_interval and move is required to set the motor into motion.
Parameters
devpointer to the stepper motor controller instance
microstep_interval_nstime interval between steps in microseconds
Return values
-EIOGeneral input / output error
-EINVALIf the requested step interval is not supported
0Success

◆ stepper_set_reference_position()

int stepper_set_reference_position ( const struct device * dev,
int32_t value )

#include <zephyr/drivers/stepper.h>

Set the reference position of the stepper.

Parameters
devPointer to the stepper motor controller instance.
valueThe reference position to set in micro-steps.
Return values
-EIOGeneral input / output error
-ENOSYSIf not implemented by device driver
0Success