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)
 

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 micro step 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 micro_steps to be moved from the current position i.e.
 
int stepper_set_max_velocity (const struct device *dev, uint32_t micro_steps_per_second)
 Set the target velocity to be reached by the motor.
 
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, uint32_t velocity)
 Run the stepper with a given velocity 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

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 or set_target_position 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 micro step resolution options.

Enumerator
STEPPER_MICRO_STEP_1 

Full step resolution.

STEPPER_MICRO_STEP_2 

2 micro steps per full step

STEPPER_MICRO_STEP_4 

4 micro steps per full step

STEPPER_MICRO_STEP_8 

8 micro steps per full step

STEPPER_MICRO_STEP_16 

16 micro steps per full step

STEPPER_MICRO_STEP_32 

32 micro steps per full step

STEPPER_MICRO_STEP_64 

64 micro steps per full step

STEPPER_MICRO_STEP_128 

128 micro steps per full step

STEPPER_MICRO_STEP_256 

256 micro steps 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 micro_steps
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 micro_steps to be moved from the current position i.e.

relative movement

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

Parameters
devpointer to the stepper motor controller instance
micro_stepstarget micro_steps to be moved from the current position
Return values
-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 micro_steps position from the reference position. This function is non-blocking.

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

◆ stepper_run()

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

#include <zephyr/drivers/stepper.h>

Run the stepper with a given velocity in a given direction.

If velocity > 0, motor shall be set into motion and run incessantly until and unless 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
velocityThe velocity to set in microsteps per second
  • > 0: Run the stepper with the given velocity in a given direction
  • 0: Stop the stepper
Return values
-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_max_velocity()

int stepper_set_max_velocity ( const struct device * dev,
uint32_t micro_steps_per_second )

#include <zephyr/drivers/stepper.h>

Set the target velocity to be reached by the motor.

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. For controllers where velocity can be set, this parameter corresponds to max_velocity

Note
Setting max velocity does not set the motor into motion, a combination of set_max_velocity and move is required to set the motor into motion.
Parameters
devpointer to the stepper motor controller instance
micro_steps_per_secondspeed in micro_steps per second
Return values
-EIOGeneral input / output error
-EINVALIf the requested velocity is not supported
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_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