Steppers
The stepper driver API provides a set of functions for controlling and configuring stepper drivers.
Configure Stepper Driver
Configure micro-stepping resolution using
stepper_set_micro_step_res()
andstepper_get_micro_step_res()
.Configure reference position in microsteps using
stepper_set_reference_position()
andstepper_get_actual_position()
.Set step interval in nanoseconds between steps using
stepper_set_microstep_interval()
Enable the stepper driver using
stepper_enable()
.Disable the stepper driver using
stepper_disable()
.
Control Stepper
Move by +/- micro-steps also known as relative movement using
stepper_move_by()
.Move to a specific position also known as absolute movement using
stepper_move_to()
.Run continuously with a constant step interval in a specific direction until a stop is detected using
stepper_run()
.Check if the stepper is moving using
stepper_is_moving()
.Register an event callback using
stepper_set_event_callback()
.
Device Tree
In the context of stepper controllers device tree provides the initial hardware configuration for stepper drivers on a per device level. Each device must specify a device tree binding in Zephyr, and ideally, a set of hardware configuration options for things such as current settings, ramp parameters and furthermore. These can then be used in a boards devicetree to configure a stepper driver to its initial state.
See examples in:
Discord
Zephyr has a stepper discord channel for stepper related discussions, which is open to all.
Stepper API Test Suite
The stepper API test suite provides a set of tests that can be used to verify the functionality of stepper drivers.
# From the root of the zephyr repository
west build -b <board> --extra-dtc-overlay <path/to/board.overlay> tests/drivers/stepper/stepper_api
west flash
Sample Output
Below is a snippet of the test output for the tmc50xx stepper driver. Since
stepper_set_microstep_interval()
is not implemented by the driver the corresponding tests
have been skipped.
===================================================================
TESTSUITE stepper succeeded
------ TESTSUITE SUMMARY START ------
SUITE PASS - 100.00% [stepper]: pass = 4, fail = 0, skip = 2, total = 6 duration = 0.069 seconds
- PASS - [stepper.test_actual_position] duration = 0.016 seconds
- PASS - [stepper.test_get_micro_step_res] duration = 0.013 seconds
- SKIP - [stepper.test_set_micro_step_interval_invalid_zero] duration = 0.007 seconds
- PASS - [stepper.test_set_micro_step_res_incorrect] duration = 0.010 seconds
- PASS - [stepper.test_stop] duration = 0.016 seconds
- SKIP - [stepper.test_target_position_w_fixed_step_interval] duration = 0.007 seconds
------ TESTSUITE SUMMARY END ------
===================================================================
PROJECT EXECUTION SUCCESSFUL
API Reference
A common set of functions which should be implemented by all stepper drivers.