Expansion SW library to control a bipolar stepper motor using X-NUCLEO-IHM05A1 expansion board based on L6208.

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_IHM05A1 TAU_ROTATING_PLATFORM_IHM05A1 Amaldi_13_Exercise_IHM05A1 Amaldi_13_Exercise_IHM05A1motore ... more

Fork of X-NUCLEO-IHM05A1 by ST Expansion SW Team

Motor Control Library

Library to handle the X-NUCLEO-IHM05A1 Motor Control Expansion Board based on the L6208 component.

It features the:

  • Read and write of device parameters
  • Configuration of GPIOs and IRQs (for enabling, direction, current decay and microstepping)
  • Control of position, speed, acceleration and deceleration
  • Command locking until the device completes movement
  • Handling of overcurrent and thermal alarms (flag interrupt handling)

The API allows to easily:

  • perform various positioning, moves and stops
  • get/set or monitor the motor positions
  • set home position and mark another position
  • get/set minimum and maximum speed
  • get current speed
  • get/set acceleration and deceleration
  • get/set the step mode (up to 1/16)

Board configuration

/media/uploads/nucleosam/mbed-x-nucleo-ihm05a1.png

Platform compatibility

Compatible platforms have been tested with the configurations provided by the HelloWorld_IHM05A1 example.

Committer:
nucleosam
Date:
Fri Apr 08 15:30:36 2016 +0000
Revision:
0:52a66fac0f64
Initial version with empty files in l6208 folder.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucleosam 0:52a66fac0f64 1 /**
nucleosam 0:52a66fac0f64 2 ******************************************************************************
nucleosam 0:52a66fac0f64 3 * @file motor.h
nucleosam 0:52a66fac0f64 4 * @author IPC Rennes
nucleosam 0:52a66fac0f64 5 * @version V1.5.0
nucleosam 0:52a66fac0f64 6 * @date January 25, 2016
nucleosam 0:52a66fac0f64 7 * @brief This file contains all the functions prototypes for motor drivers.
nucleosam 0:52a66fac0f64 8 ******************************************************************************
nucleosam 0:52a66fac0f64 9 * @attention
nucleosam 0:52a66fac0f64 10 *
nucleosam 0:52a66fac0f64 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
nucleosam 0:52a66fac0f64 12 *
nucleosam 0:52a66fac0f64 13 * Redistribution and use in source and binary forms, with or without modification,
nucleosam 0:52a66fac0f64 14 * are permitted provided that the following conditions are met:
nucleosam 0:52a66fac0f64 15 * 1. Redistributions of source code must retain the above copyright notice,
nucleosam 0:52a66fac0f64 16 * this list of conditions and the following disclaimer.
nucleosam 0:52a66fac0f64 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
nucleosam 0:52a66fac0f64 18 * this list of conditions and the following disclaimer in the documentation
nucleosam 0:52a66fac0f64 19 * and/or other materials provided with the distribution.
nucleosam 0:52a66fac0f64 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
nucleosam 0:52a66fac0f64 21 * may be used to endorse or promote products derived from this software
nucleosam 0:52a66fac0f64 22 * without specific prior written permission.
nucleosam 0:52a66fac0f64 23 *
nucleosam 0:52a66fac0f64 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
nucleosam 0:52a66fac0f64 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
nucleosam 0:52a66fac0f64 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
nucleosam 0:52a66fac0f64 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
nucleosam 0:52a66fac0f64 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
nucleosam 0:52a66fac0f64 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
nucleosam 0:52a66fac0f64 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
nucleosam 0:52a66fac0f64 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
nucleosam 0:52a66fac0f64 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nucleosam 0:52a66fac0f64 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nucleosam 0:52a66fac0f64 34 *
nucleosam 0:52a66fac0f64 35 ******************************************************************************
nucleosam 0:52a66fac0f64 36 */
nucleosam 0:52a66fac0f64 37
nucleosam 0:52a66fac0f64 38 /* Define to prevent recursive inclusion -------------------------------------*/
nucleosam 0:52a66fac0f64 39 #ifndef __MOTOR_H
nucleosam 0:52a66fac0f64 40 #define __MOTOR_H
nucleosam 0:52a66fac0f64 41
nucleosam 0:52a66fac0f64 42 #ifdef __cplusplus
nucleosam 0:52a66fac0f64 43 extern "C" {
nucleosam 0:52a66fac0f64 44 #endif
nucleosam 0:52a66fac0f64 45
nucleosam 0:52a66fac0f64 46 /* Includes ------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 47 #include <stdint.h>
nucleosam 0:52a66fac0f64 48 #include "component.h"
nucleosam 0:52a66fac0f64 49
nucleosam 0:52a66fac0f64 50 /* Definitions ---------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 51 /// boolean for false condition
nucleosam 0:52a66fac0f64 52 #ifndef FALSE
nucleosam 0:52a66fac0f64 53 #define FALSE (0)
nucleosam 0:52a66fac0f64 54 #endif
nucleosam 0:52a66fac0f64 55 /// boolean for true condition
nucleosam 0:52a66fac0f64 56 #ifndef TRUE
nucleosam 0:52a66fac0f64 57 #define TRUE (1)
nucleosam 0:52a66fac0f64 58 #endif
nucleosam 0:52a66fac0f64 59
nucleosam 0:52a66fac0f64 60 /* Types ---------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 61 /** @addtogroup BSP
nucleosam 0:52a66fac0f64 62 * @{
nucleosam 0:52a66fac0f64 63 */
nucleosam 0:52a66fac0f64 64
nucleosam 0:52a66fac0f64 65 /** @addtogroup Components
nucleosam 0:52a66fac0f64 66 * @{
nucleosam 0:52a66fac0f64 67 */
nucleosam 0:52a66fac0f64 68
nucleosam 0:52a66fac0f64 69 /** @defgroup Motor Motor
nucleosam 0:52a66fac0f64 70 * @{
nucleosam 0:52a66fac0f64 71 */
nucleosam 0:52a66fac0f64 72
nucleosam 0:52a66fac0f64 73 /** @defgroup Motor_Exported_Types Motor Exported Types
nucleosam 0:52a66fac0f64 74 * @{
nucleosam 0:52a66fac0f64 75 */
nucleosam 0:52a66fac0f64 76
nucleosam 0:52a66fac0f64 77 /** @defgroup Device_Direction_Options Device Direction Options
nucleosam 0:52a66fac0f64 78 * @{
nucleosam 0:52a66fac0f64 79 */
nucleosam 0:52a66fac0f64 80 /// Direction options
nucleosam 0:52a66fac0f64 81 typedef enum {
nucleosam 0:52a66fac0f64 82 BACKWARD = 0,
nucleosam 0:52a66fac0f64 83 FORWARD = 1,
nucleosam 0:52a66fac0f64 84 UNKNOW_DIR = ((uint8_t)0xFF)
nucleosam 0:52a66fac0f64 85 } motorDir_t;
nucleosam 0:52a66fac0f64 86 /**
nucleosam 0:52a66fac0f64 87 * @}
nucleosam 0:52a66fac0f64 88 */
nucleosam 0:52a66fac0f64 89
nucleosam 0:52a66fac0f64 90 /** @defgroup Device_Action_Options Device Action Options
nucleosam 0:52a66fac0f64 91 * @{
nucleosam 0:52a66fac0f64 92 */
nucleosam 0:52a66fac0f64 93 /// Action options
nucleosam 0:52a66fac0f64 94 typedef enum {
nucleosam 0:52a66fac0f64 95 ACTION_RESET = ((uint8_t)0x00),
nucleosam 0:52a66fac0f64 96 ACTION_COPY = ((uint8_t)0x08)
nucleosam 0:52a66fac0f64 97 } motorAction_t;
nucleosam 0:52a66fac0f64 98 /**
nucleosam 0:52a66fac0f64 99 * @}
nucleosam 0:52a66fac0f64 100 */
nucleosam 0:52a66fac0f64 101
nucleosam 0:52a66fac0f64 102 /** @defgroup Device_States Device States
nucleosam 0:52a66fac0f64 103 * @{
nucleosam 0:52a66fac0f64 104 */
nucleosam 0:52a66fac0f64 105 /// Device states
nucleosam 0:52a66fac0f64 106 typedef enum {
nucleosam 0:52a66fac0f64 107 ACCELERATING = 0,
nucleosam 0:52a66fac0f64 108 DECELERATINGTOSTOP = 1,
nucleosam 0:52a66fac0f64 109 DECELERATING = 2,
nucleosam 0:52a66fac0f64 110 STEADY = 3,
nucleosam 0:52a66fac0f64 111 INDEX_ACCEL = 4,
nucleosam 0:52a66fac0f64 112 INDEX_RUN = 5,
nucleosam 0:52a66fac0f64 113 INDEX_DECEL = 6,
nucleosam 0:52a66fac0f64 114 INDEX_DWELL = 7,
nucleosam 0:52a66fac0f64 115 INACTIVE = 8,
nucleosam 0:52a66fac0f64 116 STANDBY = 9,
nucleosam 0:52a66fac0f64 117 STANDBYTOINACTIVE = 10
nucleosam 0:52a66fac0f64 118 } motorState_t;
nucleosam 0:52a66fac0f64 119 /**
nucleosam 0:52a66fac0f64 120 * @}
nucleosam 0:52a66fac0f64 121 */
nucleosam 0:52a66fac0f64 122
nucleosam 0:52a66fac0f64 123 /** @defgroup Device_Step_mode Device Step mode
nucleosam 0:52a66fac0f64 124 * @{
nucleosam 0:52a66fac0f64 125 */
nucleosam 0:52a66fac0f64 126 /// Stepping options
nucleosam 0:52a66fac0f64 127 typedef enum {
nucleosam 0:52a66fac0f64 128 STEP_MODE_FULL = ((uint8_t)0x00),
nucleosam 0:52a66fac0f64 129 STEP_MODE_HALF = ((uint8_t)0x01),
nucleosam 0:52a66fac0f64 130 STEP_MODE_1_4 = ((uint8_t)0x02),
nucleosam 0:52a66fac0f64 131 STEP_MODE_1_8 = ((uint8_t)0x03),
nucleosam 0:52a66fac0f64 132 STEP_MODE_1_16 = ((uint8_t)0x04),
nucleosam 0:52a66fac0f64 133 STEP_MODE_1_32 = ((uint8_t)0x05),
nucleosam 0:52a66fac0f64 134 STEP_MODE_1_64 = ((uint8_t)0x06),
nucleosam 0:52a66fac0f64 135 STEP_MODE_1_128 = ((uint8_t)0x07),
nucleosam 0:52a66fac0f64 136 STEP_MODE_1_256 = ((uint8_t)0x08),
nucleosam 0:52a66fac0f64 137 STEP_MODE_UNKNOW = ((uint8_t)0xFE),
nucleosam 0:52a66fac0f64 138 STEP_MODE_WAVE = ((uint8_t)0xFF)
nucleosam 0:52a66fac0f64 139 } motorStepMode_t;
nucleosam 0:52a66fac0f64 140
nucleosam 0:52a66fac0f64 141 /**
nucleosam 0:52a66fac0f64 142 * @}
nucleosam 0:52a66fac0f64 143 */
nucleosam 0:52a66fac0f64 144
nucleosam 0:52a66fac0f64 145 /** @defgroup Decay_mode Decay mode
nucleosam 0:52a66fac0f64 146 * @{
nucleosam 0:52a66fac0f64 147 */
nucleosam 0:52a66fac0f64 148 /// Decay Mode
nucleosam 0:52a66fac0f64 149 typedef enum {
nucleosam 0:52a66fac0f64 150 SLOW_DECAY = 0,
nucleosam 0:52a66fac0f64 151 FAST_DECAY = 1,
nucleosam 0:52a66fac0f64 152 UNKNOW_DECAY = ((uint8_t)0xFF)
nucleosam 0:52a66fac0f64 153 } motorDecayMode_t;
nucleosam 0:52a66fac0f64 154 /**
nucleosam 0:52a66fac0f64 155 * @}
nucleosam 0:52a66fac0f64 156 */
nucleosam 0:52a66fac0f64 157
nucleosam 0:52a66fac0f64 158 /** @defgroup Stop_mode Stop mode
nucleosam 0:52a66fac0f64 159 * @{
nucleosam 0:52a66fac0f64 160 */
nucleosam 0:52a66fac0f64 161 /// Stop mode
nucleosam 0:52a66fac0f64 162 typedef enum
nucleosam 0:52a66fac0f64 163 {
nucleosam 0:52a66fac0f64 164 HOLD_MODE = 0,
nucleosam 0:52a66fac0f64 165 HIZ_MODE = 1,
nucleosam 0:52a66fac0f64 166 STANDBY_MODE = 2,
nucleosam 0:52a66fac0f64 167 UNKNOW_STOP_MODE = ((uint8_t)0xFF)
nucleosam 0:52a66fac0f64 168 } motorStopMode_t;
nucleosam 0:52a66fac0f64 169 /**
nucleosam 0:52a66fac0f64 170 * @}
nucleosam 0:52a66fac0f64 171 */
nucleosam 0:52a66fac0f64 172
nucleosam 0:52a66fac0f64 173 /** @defgroup Torque_mode Torque mode
nucleosam 0:52a66fac0f64 174 * @{
nucleosam 0:52a66fac0f64 175 */
nucleosam 0:52a66fac0f64 176 /// Torque mode
nucleosam 0:52a66fac0f64 177 typedef enum
nucleosam 0:52a66fac0f64 178 {
nucleosam 0:52a66fac0f64 179 ACC_TORQUE = 0,
nucleosam 0:52a66fac0f64 180 DEC_TORQUE = 1,
nucleosam 0:52a66fac0f64 181 RUN_TORQUE = 2,
nucleosam 0:52a66fac0f64 182 HOLD_TORQUE = 3,
nucleosam 0:52a66fac0f64 183 CURRENT_TORQUE = 4,
nucleosam 0:52a66fac0f64 184 UNKNOW_TORQUE = ((uint8_t)0xFF)
nucleosam 0:52a66fac0f64 185 } motorTorqueMode_t;
nucleosam 0:52a66fac0f64 186 /**
nucleosam 0:52a66fac0f64 187 * @}
nucleosam 0:52a66fac0f64 188 */
nucleosam 0:52a66fac0f64 189
nucleosam 0:52a66fac0f64 190 /** @defgroup Dual_Full_Bridge_Configuration Dual Full Bridge Configuration
nucleosam 0:52a66fac0f64 191 * @{
nucleosam 0:52a66fac0f64 192 */
nucleosam 0:52a66fac0f64 193 ///Dual full bridge configurations for brush DC motors
nucleosam 0:52a66fac0f64 194 typedef enum {
nucleosam 0:52a66fac0f64 195 PARALLELING_NONE___1_BIDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 0,
nucleosam 0:52a66fac0f64 196 PARALLELING_NONE___1_BIDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 1,
nucleosam 0:52a66fac0f64 197 PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 2,
nucleosam 0:52a66fac0f64 198 PARALLELING_NONE___2_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 3,
nucleosam 0:52a66fac0f64 199 PARALLELING_IN1A_IN2A__1_UNDIR_MOTOR_BRIDGE_A__1_BIDIR_MOTOR_BRIDGE_B = 4,
nucleosam 0:52a66fac0f64 200 PARALLELING_IN1A_IN2A__1_UNDIR_MOTOR_BRIDGE_A__2_UNDIR_MOTOR_BRIDGE_B = 5,
nucleosam 0:52a66fac0f64 201 PARALLELING_IN1B_IN2B__1_BIDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 6,
nucleosam 0:52a66fac0f64 202 PARALLELING_IN1B_IN2B__2_UNDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 7,
nucleosam 0:52a66fac0f64 203 PARALLELING_IN1A_IN2A__IN1B_IN2B__1_UNDIR_MOTOR_BRIDGE_A__1_UNDIR_MOTOR_BRIDGE_B = 8,
nucleosam 0:52a66fac0f64 204 PARALLELING_IN1A_IN2A__IN1B_IN2B__1_BIDIR_MOTOR = 9,
nucleosam 0:52a66fac0f64 205 PARALLELING_IN1A_IN1B__IN2A_IN2B__1_UNDIR_MOTOR_BRIDGE_1A__1_UNDIR_MOTOR_BRIDGE_2A = 10,
nucleosam 0:52a66fac0f64 206 PARALLELING_IN1A_IN1B__IN2A_IN2B__1_BIDIR_MOTOR = 11,
nucleosam 0:52a66fac0f64 207 PARALLELING_ALL_WITH_IN1A___1_UNDIR_MOTOR = 12,
nucleosam 0:52a66fac0f64 208 PARALLELING_END_ENUM = 13
nucleosam 0:52a66fac0f64 209 } dualFullBridgeConfig_t;
nucleosam 0:52a66fac0f64 210 /**
nucleosam 0:52a66fac0f64 211 * @}
nucleosam 0:52a66fac0f64 212 */
nucleosam 0:52a66fac0f64 213
nucleosam 0:52a66fac0f64 214 /** @defgroup Motor_Driver_Structure Motor Driver Structure
nucleosam 0:52a66fac0f64 215 * @{
nucleosam 0:52a66fac0f64 216 */
nucleosam 0:52a66fac0f64 217 /**
nucleosam 0:52a66fac0f64 218 * @brief MOTOR driver virtual table structure definition.
nucleosam 0:52a66fac0f64 219 */
nucleosam 0:52a66fac0f64 220 typedef struct
nucleosam 0:52a66fac0f64 221 {
nucleosam 0:52a66fac0f64 222 /* ACTION ----------------------------------------------------------------*
nucleosam 0:52a66fac0f64 223 * Declare here the component's generic functions. *
nucleosam 0:52a66fac0f64 224 * Tag this group of functions with the " Generic " C-style comment. *
nucleosam 0:52a66fac0f64 225 * A component's interface has to define at least the two generic *
nucleosam 0:52a66fac0f64 226 * functions provided here below within the "Example" section, as the *
nucleosam 0:52a66fac0f64 227 * first and second functions of its Virtual Table. They have to be *
nucleosam 0:52a66fac0f64 228 * specified exactly in the given way. *
nucleosam 0:52a66fac0f64 229 * *
nucleosam 0:52a66fac0f64 230 * Example: *
nucleosam 0:52a66fac0f64 231 * Status_t (*Init) (void *handle, void *init); *
nucleosam 0:52a66fac0f64 232 * Status_t (*ReadID) (void *handle, uint8_t *id); *
nucleosam 0:52a66fac0f64 233 *------------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 234 /* Generic */
nucleosam 0:52a66fac0f64 235 Status_t (*Init)(void *handle, void *init);
nucleosam 0:52a66fac0f64 236 Status_t (*ReadID)(void *handle, uint8_t *id);
nucleosam 0:52a66fac0f64 237 /* ACTION ----------------------------------------------------------------*
nucleosam 0:52a66fac0f64 238 * Declare here the component's interrupts related functions. *
nucleosam 0:52a66fac0f64 239 * Tag this group of functions with the " Interrupts " C-style comment. *
nucleosam 0:52a66fac0f64 240 * Do not specify any function if not required. *
nucleosam 0:52a66fac0f64 241 * *
nucleosam 0:52a66fac0f64 242 * Example: *
nucleosam 0:52a66fac0f64 243 * void (*ConfigIT) (void *handle, int a); *
nucleosam 0:52a66fac0f64 244 *------------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 245 /* Interrupts */
nucleosam 0:52a66fac0f64 246 /// Function pointer to AttachErrorHandler
nucleosam 0:52a66fac0f64 247 void (*AttachErrorHandler)(void *handle, void (*callback)(void *handle, uint16_t error));
nucleosam 0:52a66fac0f64 248 /// Function pointer to AttachFlagInterrupt
nucleosam 0:52a66fac0f64 249 void (*AttachFlagInterrupt)(void *handle, void (*callback)(void *handle));
nucleosam 0:52a66fac0f64 250 /// Function pointer to AttachBusyInterrupt
nucleosam 0:52a66fac0f64 251 void (*AttachBusyInterrupt)(void *handle, void (*callback)(void *handle));
nucleosam 0:52a66fac0f64 252 /// Function pointer to FlagInterruptHandler
nucleosam 0:52a66fac0f64 253 void (*FlagInterruptHandler)(void *handle);
nucleosam 0:52a66fac0f64 254 /* ACTION ----------------------------------------------------------------*
nucleosam 0:52a66fac0f64 255 * Declare here the component's specific functions. *
nucleosam 0:52a66fac0f64 256 * Tag this group of functions with the " Specific " C-style comment. *
nucleosam 0:52a66fac0f64 257 * Do not specify any function if not required. *
nucleosam 0:52a66fac0f64 258 * *
nucleosam 0:52a66fac0f64 259 * Example: *
nucleosam 0:52a66fac0f64 260 * Status_t (*GetValue) (void *handle, float *f); *
nucleosam 0:52a66fac0f64 261 *------------------------------------------------------------------------*/
nucleosam 0:52a66fac0f64 262 /* Specific */
nucleosam 0:52a66fac0f64 263 /// Function pointer to GetAcceleration
nucleosam 0:52a66fac0f64 264 uint16_t (*GetAcceleration)(void *handle);
nucleosam 0:52a66fac0f64 265 /// Function pointer to GetCurrentSpeed
nucleosam 0:52a66fac0f64 266 uint16_t (*GetCurrentSpeed)(void *handle);
nucleosam 0:52a66fac0f64 267 /// Function pointer to GetDeceleration
nucleosam 0:52a66fac0f64 268 uint16_t (*GetDeceleration)(void *handle);
nucleosam 0:52a66fac0f64 269 /// Function pointer to GetDeviceState
nucleosam 0:52a66fac0f64 270 motorState_t(*GetDeviceState)(void *handle);
nucleosam 0:52a66fac0f64 271 /// Function pointer to GetFwVersion
nucleosam 0:52a66fac0f64 272 uint8_t (*GetFwVersion)(void *handle);
nucleosam 0:52a66fac0f64 273 /// Function pointer to GetMark
nucleosam 0:52a66fac0f64 274 int32_t (*GetMark)(void *handle);
nucleosam 0:52a66fac0f64 275 /// Function pointer to GetMaxSpeed
nucleosam 0:52a66fac0f64 276 uint16_t (*GetMaxSpeed)(void *handle);
nucleosam 0:52a66fac0f64 277 /// Function pointer to GetMinSpeed
nucleosam 0:52a66fac0f64 278 uint16_t (*GetMinSpeed)(void *handle);
nucleosam 0:52a66fac0f64 279 /// Function pointer to GetPosition
nucleosam 0:52a66fac0f64 280 int32_t (*GetPosition)(void *handle);
nucleosam 0:52a66fac0f64 281 /// Function pointer to GoHome
nucleosam 0:52a66fac0f64 282 void (*GoHome)(void *handle);
nucleosam 0:52a66fac0f64 283 /// Function pointer to GoMark
nucleosam 0:52a66fac0f64 284 void (*GoMark)(void *handle);
nucleosam 0:52a66fac0f64 285 /// Function pointer to GoTo
nucleosam 0:52a66fac0f64 286 void (*GoTo)(void *handle, int32_t targetPosition);
nucleosam 0:52a66fac0f64 287 /// Function pointer to HardStop
nucleosam 0:52a66fac0f64 288 void (*HardStop)(void *handle);
nucleosam 0:52a66fac0f64 289 /// Function pointer to Move
nucleosam 0:52a66fac0f64 290 void (*Move)(void *handle, motorDir_t direction, uint32_t stepCount);
nucleosam 0:52a66fac0f64 291 /// Function pointer to ResetAllDevices
nucleosam 0:52a66fac0f64 292 //void (*ResetAllDevices)(void *handle);
nucleosam 0:52a66fac0f64 293 /// Function pointer to Run
nucleosam 0:52a66fac0f64 294 void (*Run)(void *handle, motorDir_t direction);
nucleosam 0:52a66fac0f64 295 /// Function pointer to SetAcceleration
nucleosam 0:52a66fac0f64 296 bool (*SetAcceleration)(void *handle, uint16_t newAcc);
nucleosam 0:52a66fac0f64 297 /// Function pointer to SetDeceleration
nucleosam 0:52a66fac0f64 298 bool (*SetDeceleration)(void *handle, uint16_t newDec);
nucleosam 0:52a66fac0f64 299 /// Function pointer to SetHome
nucleosam 0:52a66fac0f64 300 void (*SetHome)(void *handle);
nucleosam 0:52a66fac0f64 301 /// Function pointer to SetMark
nucleosam 0:52a66fac0f64 302 void (*SetMark)(void *handle);
nucleosam 0:52a66fac0f64 303 /// Function pointer to SetMaxSpeed
nucleosam 0:52a66fac0f64 304 bool (*SetMaxSpeed)(void *handle, uint16_t newMaxSpeed);
nucleosam 0:52a66fac0f64 305 /// Function pointer to SetMinSpeed
nucleosam 0:52a66fac0f64 306 bool (*SetMinSpeed)(void *handle, uint16_t newMinSpeed);
nucleosam 0:52a66fac0f64 307 /// Function pointer to SoftStop
nucleosam 0:52a66fac0f64 308 bool (*SoftStop)(void *handle);
nucleosam 0:52a66fac0f64 309 /// Function pointer to StepClockHandler
nucleosam 0:52a66fac0f64 310 void (*StepClockHandler)(void *handle);
nucleosam 0:52a66fac0f64 311 /// Function pointer to WaitWhileActive
nucleosam 0:52a66fac0f64 312 void (*WaitWhileActive)(void *handle);
nucleosam 0:52a66fac0f64 313 /// Function pointer to CmdDisable
nucleosam 0:52a66fac0f64 314 void (*CmdDisable)(void *handle);
nucleosam 0:52a66fac0f64 315 /// Function pointer to CmdEnable
nucleosam 0:52a66fac0f64 316 void (*CmdEnable)(void *handle);
nucleosam 0:52a66fac0f64 317 /// Function pointer to CmdGetParam
nucleosam 0:52a66fac0f64 318 uint32_t (*CmdGetParam)(void *handle, uint32_t param);
nucleosam 0:52a66fac0f64 319 /// Function pointer to CmdGetStatus
nucleosam 0:52a66fac0f64 320 uint16_t (*CmdGetStatus)(void *handle);
nucleosam 0:52a66fac0f64 321 /// Function pointer to CmdNop
nucleosam 0:52a66fac0f64 322 void (*CmdNop)(void *handle);
nucleosam 0:52a66fac0f64 323 /// Function pointer to CmdSetParam
nucleosam 0:52a66fac0f64 324 void (*CmdSetParam)(void *handle, uint32_t param, uint32_t value);
nucleosam 0:52a66fac0f64 325 /// Function pointer to ReadStatusRegister
nucleosam 0:52a66fac0f64 326 uint16_t (*ReadStatusRegister)(void *handle);
nucleosam 0:52a66fac0f64 327 /// Function pointer to ReleaseReset
nucleosam 0:52a66fac0f64 328 void (*ReleaseReset)(void *handle);
nucleosam 0:52a66fac0f64 329 /// Function pointer to Reset
nucleosam 0:52a66fac0f64 330 void (*Reset)(void *handle);
nucleosam 0:52a66fac0f64 331 /// Function pointer to SelectStepMode
nucleosam 0:52a66fac0f64 332 void (*SelectStepMode)(void *handle, motorStepMode_t);
nucleosam 0:52a66fac0f64 333 /// Function pointer to SetDirection
nucleosam 0:52a66fac0f64 334 void (*SetDirection)(void *handle, motorDir_t direction);
nucleosam 0:52a66fac0f64 335 /// Function pointer to CmdGoToDir
nucleosam 0:52a66fac0f64 336 void (*CmdGoToDir)(void *handle, motorDir_t direction, int32_t targetPosition);
nucleosam 0:52a66fac0f64 337 /// Function pointer to CheckBusyHw
nucleosam 0:52a66fac0f64 338 uint8_t (*CheckBusyHw)(void *handle);
nucleosam 0:52a66fac0f64 339 /// Function pointer to CheckStatusHw
nucleosam 0:52a66fac0f64 340 uint8_t (*CheckStatusHw)(void *handle);
nucleosam 0:52a66fac0f64 341 /// Function pointer to CmdGoUntil
nucleosam 0:52a66fac0f64 342 void (*CmdGoUntil)(void *handle, motorAction_t action, motorDir_t direction, uint32_t targetPosition);
nucleosam 0:52a66fac0f64 343 /// Function pointer to CmdHardHiZ
nucleosam 0:52a66fac0f64 344 void (*CmdHardHiZ)(void *handle);
nucleosam 0:52a66fac0f64 345 /// Function pointer to CmdReleaseSw
nucleosam 0:52a66fac0f64 346 void (*CmdReleaseSw)(void *handle, motorAction_t action, motorDir_t direction);
nucleosam 0:52a66fac0f64 347 /// Function pointer to CmdResetDevice
nucleosam 0:52a66fac0f64 348 void (*CmdResetDevice)(void *handle);
nucleosam 0:52a66fac0f64 349 /// Function pointer to CmdResetPos
nucleosam 0:52a66fac0f64 350 void (*CmdResetPos)(void *handle);
nucleosam 0:52a66fac0f64 351 /// Function pointer to CmdRun
nucleosam 0:52a66fac0f64 352 void (*CmdRun)(void *handle, motorDir_t direction, uint32_t targetPosition);
nucleosam 0:52a66fac0f64 353 /// Function pointer to CmdSoftHiZ
nucleosam 0:52a66fac0f64 354 void (*CmdSoftHiZ)(void *handle);
nucleosam 0:52a66fac0f64 355 /// Function pointer to CmdStepClock
nucleosam 0:52a66fac0f64 356 void (*CmdStepClock)(void *handle, motorDir_t direction);
nucleosam 0:52a66fac0f64 357 /// Function pointer to FetchAndClearAllStatus
nucleosam 0:52a66fac0f64 358 void (*FetchAndClearAllStatus)(void *handle);
nucleosam 0:52a66fac0f64 359 /// Function pointer to GetFetchedStatus
nucleosam 0:52a66fac0f64 360 uint16_t (*GetFetchedStatus)(void *handle);
nucleosam 0:52a66fac0f64 361 /// Function pointer to GetNbDevices
nucleosam 0:52a66fac0f64 362 uint8_t (*GetNbDevices)(void *handle);
nucleosam 0:52a66fac0f64 363 /// Function pointer to IsDeviceBusy
nucleosam 0:52a66fac0f64 364 bool (*IsDeviceBusy)(void *handle);
nucleosam 0:52a66fac0f64 365 /// Function pointer to SendQueuedCommands
nucleosam 0:52a66fac0f64 366 void (*SendQueuedCommands)(void *handle);
nucleosam 0:52a66fac0f64 367 /// Function pointer to QueueCommands
nucleosam 0:52a66fac0f64 368 void (*QueueCommands)(void *handle, uint8_t command, int32_t value);
nucleosam 0:52a66fac0f64 369 /// Function pointer to WaitForAllDevicesNotBusy
nucleosam 0:52a66fac0f64 370 void (*WaitForAllDevicesNotBusy)(void *handle);
nucleosam 0:52a66fac0f64 371 /// Function pointer to ErrorHandler
nucleosam 0:52a66fac0f64 372 void (*ErrorHandler)(void *handle, uint16_t error);
nucleosam 0:52a66fac0f64 373 /// Function pointer to BusyInterruptHandler
nucleosam 0:52a66fac0f64 374 void (*BusyInterruptHandler)(void *handle);
nucleosam 0:52a66fac0f64 375 /// Function pointer to CmdSoftStop
nucleosam 0:52a66fac0f64 376 void (*CmdSoftStop)(void *handle);
nucleosam 0:52a66fac0f64 377 /// Function pointer to StartStepClock
nucleosam 0:52a66fac0f64 378 void (*StartStepClock)(void *handle, uint16_t newFreq);
nucleosam 0:52a66fac0f64 379 /// Function pointer to StopStepClock
nucleosam 0:52a66fac0f64 380 void (*StopStepClock)(void *handle);
nucleosam 0:52a66fac0f64 381 /// Function pointer to SetDualFullBridgeConfig
nucleosam 0:52a66fac0f64 382 void (*SetDualFullBridgeConfig)(void *handle, uint8_t config);
nucleosam 0:52a66fac0f64 383 /// Function pointer to GetBridgeInputPwmFreq
nucleosam 0:52a66fac0f64 384 uint32_t (*GetBridgeInputPwmFreq)(void *handle);
nucleosam 0:52a66fac0f64 385 /// Function pointer to SetBridgeInputPwmFreq
nucleosam 0:52a66fac0f64 386 void (*SetBridgeInputPwmFreq)(void *handle, uint32_t newFreq);
nucleosam 0:52a66fac0f64 387 /// Function pointer to SetStopMode
nucleosam 0:52a66fac0f64 388 void (*SetStopMode)(void *handle, motorStopMode_t stopMode);
nucleosam 0:52a66fac0f64 389 /// Function pointer to GetStopMode
nucleosam 0:52a66fac0f64 390 motorStopMode_t (*GetStopMode)(void *handle);
nucleosam 0:52a66fac0f64 391 /// Function pointer to SetDecayMode
nucleosam 0:52a66fac0f64 392 void (*SetDecayMode)(void *handle, motorDecayMode_t decayMode);
nucleosam 0:52a66fac0f64 393 /// Function pointer to GetDecayMode
nucleosam 0:52a66fac0f64 394 motorDecayMode_t (*GetDecayMode)(void *handle);
nucleosam 0:52a66fac0f64 395 /// Function pointer to GetStepMode
nucleosam 0:52a66fac0f64 396 motorStepMode_t (*GetStepMode)(void *handle);
nucleosam 0:52a66fac0f64 397 /// Function pointer to GetDirection
nucleosam 0:52a66fac0f64 398 motorDir_t (*GetDirection)(void *handle);
nucleosam 0:52a66fac0f64 399 /// Function pointer to ExitDeviceFromReset
nucleosam 0:52a66fac0f64 400 void (*ExitDeviceFromReset)(void *handle);
nucleosam 0:52a66fac0f64 401 /// Function pointer to SetTorque
nucleosam 0:52a66fac0f64 402 void (*SetTorque)(void *handle, motorTorqueMode_t torqueMode, uint8_t torqueValue);
nucleosam 0:52a66fac0f64 403 /// Function pointer to GetTorque
nucleosam 0:52a66fac0f64 404 uint8_t (*GetTorque)(void *handle, motorTorqueMode_t torqueMode);
nucleosam 0:52a66fac0f64 405 /// Function pointer to SetVRefFreq
nucleosam 0:52a66fac0f64 406 void (*SetRefFreq)(void *handle, uint32_t newFreq);
nucleosam 0:52a66fac0f64 407 /// Function pointer to GetVRefFreq
nucleosam 0:52a66fac0f64 408 uint32_t (*GetRefFreq)(void *handle);
nucleosam 0:52a66fac0f64 409 /// Function pointer to SetVRefDc
nucleosam 0:52a66fac0f64 410 void (*SetRefDc)(void *handle, uint8_t newDc);
nucleosam 0:52a66fac0f64 411 /// Function pointer to GetVRefDc
nucleosam 0:52a66fac0f64 412 uint8_t (*GetRefDc)(void *handle);
nucleosam 0:52a66fac0f64 413 /// Function pointer to SetNbDevices
nucleosam 0:52a66fac0f64 414 bool (*SetNbDevices)(void *handle, uint8_t nbDevices);
nucleosam 0:52a66fac0f64 415 /// Function pointer to set a parameter
nucleosam 0:52a66fac0f64 416 bool (*SetAnalogValue)(void *handle, uint32_t param, float value);
nucleosam 0:52a66fac0f64 417 /// Function pointer to get a parameter
nucleosam 0:52a66fac0f64 418 float (*GetAnalogValue)(void *handle, uint32_t param);
nucleosam 0:52a66fac0f64 419 } MOTOR_VTable_t;
nucleosam 0:52a66fac0f64 420 /**
nucleosam 0:52a66fac0f64 421 * @}
nucleosam 0:52a66fac0f64 422 */
nucleosam 0:52a66fac0f64 423
nucleosam 0:52a66fac0f64 424 /**
nucleosam 0:52a66fac0f64 425 * @}
nucleosam 0:52a66fac0f64 426 */
nucleosam 0:52a66fac0f64 427
nucleosam 0:52a66fac0f64 428 /**
nucleosam 0:52a66fac0f64 429 * @}
nucleosam 0:52a66fac0f64 430 */
nucleosam 0:52a66fac0f64 431
nucleosam 0:52a66fac0f64 432 /**
nucleosam 0:52a66fac0f64 433 * @}
nucleosam 0:52a66fac0f64 434 */
nucleosam 0:52a66fac0f64 435
nucleosam 0:52a66fac0f64 436 /**
nucleosam 0:52a66fac0f64 437 * @}
nucleosam 0:52a66fac0f64 438 */
nucleosam 0:52a66fac0f64 439
nucleosam 0:52a66fac0f64 440 #ifdef __cplusplus
nucleosam 0:52a66fac0f64 441 }
nucleosam 0:52a66fac0f64 442 #endif
nucleosam 0:52a66fac0f64 443
nucleosam 0:52a66fac0f64 444 #endif /* __MOTOR_H */
nucleosam 0:52a66fac0f64 445
nucleosam 0:52a66fac0f64 446 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/