| .. _stepper_api: |
| |
| Steppers |
| ######## |
| |
| The stepper driver API provides a set of functions for controlling and configuring stepper drivers. |
| |
| Configure Stepper Driver |
| ======================== |
| |
| - Configure **micro-stepping resolution** using :c:func:`stepper_set_micro_step_res` |
| and :c:func:`stepper_get_micro_step_res`. |
| - Configure **reference position** in microsteps using :c:func:`stepper_set_reference_position` |
| and :c:func:`stepper_get_actual_position`. |
| - Set **step interval** in nanoseconds between steps using :c:func:`stepper_set_microstep_interval` |
| - **Enable** the stepper driver using :c:func:`stepper_enable`. |
| - **Disable** the stepper driver using :c:func:`stepper_disable`. |
| |
| Control Stepper |
| =============== |
| |
| - **Move by** +/- micro-steps also known as **relative movement** using :c:func:`stepper_move_by`. |
| - **Move to** a specific position also known as **absolute movement** using :c:func:`stepper_move_to`. |
| - Run continuously with a **constant step interval** in a specific direction until |
| a stop is detected using :c:func:`stepper_run`. |
| - **Stop** the stepper using :c:func:`stepper_stop`. |
| - Check if the stepper is **moving** using :c:func:`stepper_is_moving`. |
| - Register an **event callback** using :c:func:`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: |
| |
| - :dtcompatible:`zephyr,h-bridge-stepper` |
| - :dtcompatible:`adi,tmc50xx` |
| |
| Discord |
| ======= |
| |
| Zephyr has a `stepper discord`_ channel for stepper related discussions, which |
| is open to all. |
| |
| .. _stepper-api-reference: |
| |
| 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. |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: tests/drivers/stepper/stepper_api |
| :board: <board> |
| :west-args: --extra-dtc-overlay <path/to/board.overlay> |
| :goals: build flash |
| |
| Sample Output |
| ============= |
| |
| Below is a snippet of the test output for the tmc50xx stepper driver. Since |
| :c:func:`stepper_set_microstep_interval` is not implemented by the driver the corresponding tests |
| have been skipped. |
| |
| .. code-block:: console |
| |
| =================================================================== |
| 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. |
| |
| .. doxygengroup:: stepper_interface |
| |
| Stepper controller specific APIs |
| ******************************** |
| |
| Trinamic |
| ======== |
| |
| .. doxygengroup:: trinamic_stepper_interface |
| |
| .. _stepper discord: |
| https://discord.com/channels/720317445772017664/1278263869982375946 |