Library to handle the X-NUCLEO-IHM06A1 Motor Control Expansion Board based on the STSPIN220 component.

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_IHM06A1

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

Motor Control Library

Library to handle the X-NUCLEO-IHM06A1 Motor Control Expansion Board based on the STSPIN220 component.

It features the:

  • Read and write of the device parameters; GPIO, PWM and IRQ configuration; microstepping, direction position, speed, acceleration, deceleration and torque controls
  • Automatic full-step switch management; high impedance or hold stop mode selection; enable and standby management
  • Fault interrupts handling (over current, short-circuit and over temperature)
  • Command locking until the device completes movement

The API allows to easily:

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

Platform compatibility

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

Committer:
nucleosam
Date:
Thu May 26 15:44:53 2016 +0000
Revision:
0:0ccd34c56c66
Child:
3:a132aa6d66e4
Initial version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucleosam 0:0ccd34c56c66 1 /******************************************************//**
nucleosam 0:0ccd34c56c66 2 * @file stspin220.h
nucleosam 0:0ccd34c56c66 3 * @author IPC Rennes
nucleosam 0:0ccd34c56c66 4 * @version V1.1.0
nucleosam 0:0ccd34c56c66 5 * @date May 26th, 2016
nucleosam 0:0ccd34c56c66 6 * @brief Header for STSPIN220 driver (fully integrated microstepping motor driver)
nucleosam 0:0ccd34c56c66 7 * @note (C) COPYRIGHT 2016 STMicroelectronics
nucleosam 0:0ccd34c56c66 8 ******************************************************************************
nucleosam 0:0ccd34c56c66 9 * @attention
nucleosam 0:0ccd34c56c66 10 *
nucleosam 0:0ccd34c56c66 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
nucleosam 0:0ccd34c56c66 12 *
nucleosam 0:0ccd34c56c66 13 * Redistribution and use in source and binary forms, with or without modification,
nucleosam 0:0ccd34c56c66 14 * are permitted provided that the following conditions are met:
nucleosam 0:0ccd34c56c66 15 * 1. Redistributions of source code must retain the above copyright notice,
nucleosam 0:0ccd34c56c66 16 * this list of conditions and the following disclaimer.
nucleosam 0:0ccd34c56c66 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
nucleosam 0:0ccd34c56c66 18 * this list of conditions and the following disclaimer in the documentation
nucleosam 0:0ccd34c56c66 19 * and/or other materials provided with the distribution.
nucleosam 0:0ccd34c56c66 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
nucleosam 0:0ccd34c56c66 21 * may be used to endorse or promote products derived from this software
nucleosam 0:0ccd34c56c66 22 * without specific prior written permission.
nucleosam 0:0ccd34c56c66 23 *
nucleosam 0:0ccd34c56c66 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
nucleosam 0:0ccd34c56c66 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
nucleosam 0:0ccd34c56c66 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
nucleosam 0:0ccd34c56c66 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
nucleosam 0:0ccd34c56c66 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
nucleosam 0:0ccd34c56c66 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
nucleosam 0:0ccd34c56c66 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
nucleosam 0:0ccd34c56c66 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
nucleosam 0:0ccd34c56c66 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
nucleosam 0:0ccd34c56c66 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nucleosam 0:0ccd34c56c66 34 *
nucleosam 0:0ccd34c56c66 35 ******************************************************************************
nucleosam 0:0ccd34c56c66 36 */
nucleosam 0:0ccd34c56c66 37
nucleosam 0:0ccd34c56c66 38 /* Define to prevent recursive inclusion -------------------------------------*/
nucleosam 0:0ccd34c56c66 39 #ifndef __STSPIN220_H
nucleosam 0:0ccd34c56c66 40 #define __STSPIN220_H
nucleosam 0:0ccd34c56c66 41
nucleosam 0:0ccd34c56c66 42 #ifdef __cplusplus
nucleosam 0:0ccd34c56c66 43 extern "C" {
nucleosam 0:0ccd34c56c66 44 #endif
nucleosam 0:0ccd34c56c66 45
nucleosam 0:0ccd34c56c66 46 /* Includes ------------------------------------------------------------------*/
nucleosam 0:0ccd34c56c66 47 #include "stspin220_target_config.h"
nucleosam 0:0ccd34c56c66 48 #include "motor.h"
nucleosam 0:0ccd34c56c66 49
nucleosam 0:0ccd34c56c66 50 /* Definitions ---------------------------------------------------------------*/
nucleosam 0:0ccd34c56c66 51
nucleosam 0:0ccd34c56c66 52 /** @addtogroup Components
nucleosam 0:0ccd34c56c66 53 * @{
nucleosam 0:0ccd34c56c66 54 */
nucleosam 0:0ccd34c56c66 55
nucleosam 0:0ccd34c56c66 56 /** @defgroup STSPIN220
nucleosam 0:0ccd34c56c66 57 * @{
nucleosam 0:0ccd34c56c66 58 */
nucleosam 0:0ccd34c56c66 59
nucleosam 0:0ccd34c56c66 60 /** @defgroup Stspin220_Exported_Constants Stspin220 Exported Constants
nucleosam 0:0ccd34c56c66 61 * @{
nucleosam 0:0ccd34c56c66 62 */
nucleosam 0:0ccd34c56c66 63 /// Current FW major version
nucleosam 0:0ccd34c56c66 64 #define STSPIN220_FW_MAJOR_VERSION (uint8_t)(1)
nucleosam 0:0ccd34c56c66 65 /// Current FW minor version
nucleosam 0:0ccd34c56c66 66 #define STSPIN220_FW_MINOR_VERSION (uint8_t)(1)
nucleosam 0:0ccd34c56c66 67 /// Current FW patch version
nucleosam 0:0ccd34c56c66 68 #define STSPIN220_FW_PATCH_VERSION (uint8_t)(0)
nucleosam 0:0ccd34c56c66 69 /// Current FW version
nucleosam 0:0ccd34c56c66 70 #define STSPIN220_FW_VERSION (uint32_t)((STSPIN220_FW_MAJOR_VERSION<<16)|\
nucleosam 0:0ccd34c56c66 71 (STSPIN220_FW_MINOR_VERSION<<8)|\
nucleosam 0:0ccd34c56c66 72 (STSPIN220_FW_PATCH_VERSION))
nucleosam 0:0ccd34c56c66 73
nucleosam 0:0ccd34c56c66 74 /// Max position
nucleosam 0:0ccd34c56c66 75 #define STSPIN220_MAX_POSITION (0x7FFFFFFF)
nucleosam 0:0ccd34c56c66 76
nucleosam 0:0ccd34c56c66 77 /// Min position
nucleosam 0:0ccd34c56c66 78 #define STSPIN220_MIN_POSITION (0x80000000)
nucleosam 0:0ccd34c56c66 79
nucleosam 0:0ccd34c56c66 80 /// Position range
nucleosam 0:0ccd34c56c66 81 #define STSPIN220_POSITION_RANGE ((uint32_t)(STSPIN220_MAX_POSITION -\
nucleosam 0:0ccd34c56c66 82 STSPIN220_MIN_POSITION))
nucleosam 0:0ccd34c56c66 83 /// STSPIN220 error base number
nucleosam 0:0ccd34c56c66 84 #define STSPIN220_ERROR_BASE (0xA000)
nucleosam 0:0ccd34c56c66 85
nucleosam 0:0ccd34c56c66 86 /// run bit mask
nucleosam 0:0ccd34c56c66 87 #define STSPIN220_RUN_BIT_MASK (0x01)
nucleosam 0:0ccd34c56c66 88
nucleosam 0:0ccd34c56c66 89 /// move bit mask
nucleosam 0:0ccd34c56c66 90 #define STSPIN220_MOVE_BIT_MASK (0x02)
nucleosam 0:0ccd34c56c66 91
nucleosam 0:0ccd34c56c66 92 /// soft stop bit mask
nucleosam 0:0ccd34c56c66 93 #define STSPIN220_SOFT_STOP_BIT_MASK (0x04)
nucleosam 0:0ccd34c56c66 94
nucleosam 0:0ccd34c56c66 95 /// direction change bit mask
nucleosam 0:0ccd34c56c66 96 #define STSPIN220_DIR_CHANGE_BIT_MASK (0x08)
nucleosam 0:0ccd34c56c66 97
nucleosam 0:0ccd34c56c66 98 /// Maximum frequency of the step clock frequency in Hz
nucleosam 0:0ccd34c56c66 99 #define STSPIN220_MAX_STCK_FREQ (10000)
nucleosam 0:0ccd34c56c66 100
nucleosam 0:0ccd34c56c66 101 /// Minimum frequency of the step clock frequency in Hz
nucleosam 0:0ccd34c56c66 102 #define STSPIN220_MIN_STCK_FREQ (8)
nucleosam 0:0ccd34c56c66 103
nucleosam 0:0ccd34c56c66 104 /// Minimum duration of standby
nucleosam 0:0ccd34c56c66 105 #define STANDBY_MIN_DURATION (1)
nucleosam 0:0ccd34c56c66 106
nucleosam 0:0ccd34c56c66 107 /// Dead time after standby exit
nucleosam 0:0ccd34c56c66 108 #define AFTER_STANDBY_EXIT_DEAD_TIME (1)
nucleosam 0:0ccd34c56c66 109
nucleosam 0:0ccd34c56c66 110 /// Reset delay to select step mode
nucleosam 0:0ccd34c56c66 111 #define SELECT_STEP_MODE_DELAY (1)
nucleosam 0:0ccd34c56c66 112
nucleosam 0:0ccd34c56c66 113 /// PWM REF and bridges disable delay
nucleosam 0:0ccd34c56c66 114 #define DISABLE_DELAY (1)
nucleosam 0:0ccd34c56c66 115
nucleosam 0:0ccd34c56c66 116 /// Microstepping sequencer maximum value
nucleosam 0:0ccd34c56c66 117 #define SEQUENCER_MAX_VALUE (uint16_t)(0x3FF)
nucleosam 0:0ccd34c56c66 118
nucleosam 0:0ccd34c56c66 119 /// MCU wait time after power bridges are enabled
nucleosam 0:0ccd34c56c66 120 #define BRIDGE_TURN_ON_DELAY (10)
nucleosam 0:0ccd34c56c66 121
nucleosam 0:0ccd34c56c66 122 /// RC Filtering delay on the PWM
nucleosam 0:0ccd34c56c66 123 #define PWM_FILTER_TIME_CONSTANT (5)
nucleosam 0:0ccd34c56c66 124 /**
nucleosam 0:0ccd34c56c66 125 * @}
nucleosam 0:0ccd34c56c66 126 */
nucleosam 0:0ccd34c56c66 127
nucleosam 0:0ccd34c56c66 128 /* Types ---------------------------------------------------------------------*/
nucleosam 0:0ccd34c56c66 129
nucleosam 0:0ccd34c56c66 130 /** @defgroup Stspin220_Exported_Types Stspin220 Exported Types
nucleosam 0:0ccd34c56c66 131 * @{
nucleosam 0:0ccd34c56c66 132 */
nucleosam 0:0ccd34c56c66 133
nucleosam 0:0ccd34c56c66 134 /** @defgroup Error_Types Error Types
nucleosam 0:0ccd34c56c66 135 * @{
nucleosam 0:0ccd34c56c66 136 */
nucleosam 0:0ccd34c56c66 137 /// Errors
nucleosam 0:0ccd34c56c66 138 typedef enum {
nucleosam 0:0ccd34c56c66 139 STSPIN220_ERROR_SET_HOME = STSPIN220_ERROR_BASE, /// Error while setting home position
nucleosam 0:0ccd34c56c66 140 STSPIN220_ERROR_SET_MAX_SPEED = STSPIN220_ERROR_BASE + 1, /// Error while setting max speed
nucleosam 0:0ccd34c56c66 141 STSPIN220_ERROR_SET_MIN_SPEED = STSPIN220_ERROR_BASE + 2, /// Error while setting min speed
nucleosam 0:0ccd34c56c66 142 STSPIN220_ERROR_SET_ACCELERATION = STSPIN220_ERROR_BASE + 3, /// Error while setting acceleration
nucleosam 0:0ccd34c56c66 143 STSPIN220_ERROR_SET_DECELERATION = STSPIN220_ERROR_BASE + 4, /// Error while setting decelaration
nucleosam 0:0ccd34c56c66 144 STSPIN220_ERROR_MCU_OSC_CONFIG = STSPIN220_ERROR_BASE + 5, /// Error while configuring mcu oscillator
nucleosam 0:0ccd34c56c66 145 STSPIN220_ERROR_MCU_CLOCK_CONFIG = STSPIN220_ERROR_BASE + 6, /// Error while configuring mcu clock
nucleosam 0:0ccd34c56c66 146 STSPIN220_ERROR_POSITION = STSPIN220_ERROR_BASE + 7, /// Unexpected current position (wrong number of steps)
nucleosam 0:0ccd34c56c66 147 STSPIN220_ERROR_SPEED = STSPIN220_ERROR_BASE + 8, /// Unexpected current speed
nucleosam 0:0ccd34c56c66 148 STSPIN220_ERROR_INIT = STSPIN220_ERROR_BASE + 9, /// Unexpected number of devices or unexpected value for predefined parameter
nucleosam 0:0ccd34c56c66 149 STSPIN220_ERROR_SET_DIRECTION = STSPIN220_ERROR_BASE + 10, /// Error while setting direction
nucleosam 0:0ccd34c56c66 150 STSPIN220_ERROR_SET_STEP_MODE = STSPIN220_ERROR_BASE + 11, /// Attempt to set an unsupported step mode
nucleosam 0:0ccd34c56c66 151 STSPIN220_ERROR_APPLY_SPEED = STSPIN220_ERROR_BASE + 12, /// Error while applying speed
nucleosam 0:0ccd34c56c66 152 STSPIN220_ERROR_SET_TORQUE = STSPIN220_ERROR_BASE + 13, /// Error while setting torque
nucleosam 0:0ccd34c56c66 153 STSPIN220_ERROR_STEP_CLOCK = STSPIN220_ERROR_BASE + 14 /// Error related to step clock
nucleosam 0:0ccd34c56c66 154 }errorTypes_t;
nucleosam 0:0ccd34c56c66 155 /**
nucleosam 0:0ccd34c56c66 156 * @}
nucleosam 0:0ccd34c56c66 157 */
nucleosam 0:0ccd34c56c66 158
nucleosam 0:0ccd34c56c66 159 /** @defgroup Device_Commands Device Commands
nucleosam 0:0ccd34c56c66 160 * @{
nucleosam 0:0ccd34c56c66 161 */
nucleosam 0:0ccd34c56c66 162 /// Device commands
nucleosam 0:0ccd34c56c66 163 typedef enum {
nucleosam 0:0ccd34c56c66 164 NO_CMD = 0x00,
nucleosam 0:0ccd34c56c66 165 RUN_CMD = (STSPIN220_RUN_BIT_MASK),
nucleosam 0:0ccd34c56c66 166 MOVE_CMD = (STSPIN220_MOVE_BIT_MASK),
nucleosam 0:0ccd34c56c66 167 } deviceCommand_t;
nucleosam 0:0ccd34c56c66 168 /**
nucleosam 0:0ccd34c56c66 169 * @}
nucleosam 0:0ccd34c56c66 170 */
nucleosam 0:0ccd34c56c66 171
nucleosam 0:0ccd34c56c66 172 /** @defgroup Device_Parameters Device Parameters
nucleosam 0:0ccd34c56c66 173 * @{
nucleosam 0:0ccd34c56c66 174 */
nucleosam 0:0ccd34c56c66 175 /// Device Parameters Structure Type
nucleosam 0:0ccd34c56c66 176 typedef struct {
nucleosam 0:0ccd34c56c66 177 /// accumulator used to store speed increase smaller than 1 pps
nucleosam 0:0ccd34c56c66 178 volatile uint32_t accu;
nucleosam 0:0ccd34c56c66 179 /// Position in microstep according to current step mode
nucleosam 0:0ccd34c56c66 180 volatile int32_t currentPosition;
nucleosam 0:0ccd34c56c66 181 /// Position of sequencer
nucleosam 0:0ccd34c56c66 182 volatile int16_t sequencerPosition;
nucleosam 0:0ccd34c56c66 183 /// mark position in microstep (motor position control mode)
nucleosam 0:0ccd34c56c66 184 volatile int32_t markPosition;
nucleosam 0:0ccd34c56c66 185 /// position in microstep at the end of the accelerating phase
nucleosam 0:0ccd34c56c66 186 volatile uint32_t endAccPos;
nucleosam 0:0ccd34c56c66 187 /// nb of in microstep performed from the beggining of the goto or the move command
nucleosam 0:0ccd34c56c66 188 volatile uint32_t relativePos;
nucleosam 0:0ccd34c56c66 189 /// position in microstep step at the start of the decelerating phase
nucleosam 0:0ccd34c56c66 190 volatile uint32_t startDecPos;
nucleosam 0:0ccd34c56c66 191 /// nb of microstep steps to perform for the goto or move commands
nucleosam 0:0ccd34c56c66 192 uint32_t stepsToTake;
nucleosam 0:0ccd34c56c66 193
nucleosam 0:0ccd34c56c66 194 /// constant speed phase torque value (%)
nucleosam 0:0ccd34c56c66 195 volatile uint8_t runTorque;
nucleosam 0:0ccd34c56c66 196 /// acceleration phase torque value (%)
nucleosam 0:0ccd34c56c66 197 volatile uint8_t accelTorque;
nucleosam 0:0ccd34c56c66 198 /// deceleration phase torque value (%)
nucleosam 0:0ccd34c56c66 199 volatile uint8_t decelTorque;
nucleosam 0:0ccd34c56c66 200 /// holding phase torque value (%)
nucleosam 0:0ccd34c56c66 201 volatile uint8_t holdTorque;
nucleosam 0:0ccd34c56c66 202 /// current selected torque value
nucleosam 0:0ccd34c56c66 203 volatile uint8_t currentTorque;
nucleosam 0:0ccd34c56c66 204 /// torque update
nucleosam 0:0ccd34c56c66 205 volatile bool updateTorque;
nucleosam 0:0ccd34c56c66 206 /// PWM frequency used to generate REF voltage
nucleosam 0:0ccd34c56c66 207 volatile uint32_t refPwmFreq;
nucleosam 0:0ccd34c56c66 208 /// torque boost enable
nucleosam 0:0ccd34c56c66 209 volatile bool torqueBoostEnable;
nucleosam 0:0ccd34c56c66 210 /// torque boost speed threshold
nucleosam 0:0ccd34c56c66 211 volatile uint16_t torqueBoostSpeedThreshold;
nucleosam 0:0ccd34c56c66 212
nucleosam 0:0ccd34c56c66 213 /// acceleration in pps^2
nucleosam 0:0ccd34c56c66 214 volatile uint16_t acceleration;
nucleosam 0:0ccd34c56c66 215 /// deceleration in pps^2
nucleosam 0:0ccd34c56c66 216 volatile uint16_t deceleration;
nucleosam 0:0ccd34c56c66 217 /// max speed in pps (speed use for goto or move command)
nucleosam 0:0ccd34c56c66 218 volatile uint16_t maxSpeed;
nucleosam 0:0ccd34c56c66 219 /// min speed in pps
nucleosam 0:0ccd34c56c66 220 volatile uint16_t minSpeed;
nucleosam 0:0ccd34c56c66 221 /// current speed in pps
nucleosam 0:0ccd34c56c66 222 volatile uint16_t speed;
nucleosam 0:0ccd34c56c66 223
nucleosam 0:0ccd34c56c66 224 /// command under execution
nucleosam 0:0ccd34c56c66 225 volatile deviceCommand_t commandExecuted;
nucleosam 0:0ccd34c56c66 226 /// FORWARD or BACKWARD direction
nucleosam 0:0ccd34c56c66 227 volatile motorDir_t direction;
nucleosam 0:0ccd34c56c66 228 /// current state of the device
nucleosam 0:0ccd34c56c66 229 volatile motorState_t motionState;
nucleosam 0:0ccd34c56c66 230 /// current step mode
nucleosam 0:0ccd34c56c66 231 volatile motorStepMode_t stepMode;
nucleosam 0:0ccd34c56c66 232 /// latched step mode
nucleosam 0:0ccd34c56c66 233 motorStepMode_t stepModeLatched;
nucleosam 0:0ccd34c56c66 234 /// current stop mode
nucleosam 0:0ccd34c56c66 235 motorStopMode_t stopMode;
nucleosam 0:0ccd34c56c66 236
nucleosam 0:0ccd34c56c66 237 }deviceParams_t;
nucleosam 0:0ccd34c56c66 238 /**
nucleosam 0:0ccd34c56c66 239 * @}
nucleosam 0:0ccd34c56c66 240 */
nucleosam 0:0ccd34c56c66 241
nucleosam 0:0ccd34c56c66 242 /// Motor driver initialization structure definition
nucleosam 0:0ccd34c56c66 243 typedef struct
nucleosam 0:0ccd34c56c66 244 {
nucleosam 0:0ccd34c56c66 245 /// acceleration in pps^2
nucleosam 0:0ccd34c56c66 246 uint16_t acceleration;
nucleosam 0:0ccd34c56c66 247 /// deceleration in pps^2
nucleosam 0:0ccd34c56c66 248 uint16_t deceleration;
nucleosam 0:0ccd34c56c66 249 /// max speed in pps (speed use for goto or move command)
nucleosam 0:0ccd34c56c66 250 uint16_t maxSpeed;
nucleosam 0:0ccd34c56c66 251 /// min speed in pps
nucleosam 0:0ccd34c56c66 252 uint16_t minSpeed;
nucleosam 0:0ccd34c56c66 253 /// acceleration phase torque value (%)
nucleosam 0:0ccd34c56c66 254 uint8_t accelTorque;
nucleosam 0:0ccd34c56c66 255 /// deceleration phase torque value (%)
nucleosam 0:0ccd34c56c66 256 uint8_t decelTorque;
nucleosam 0:0ccd34c56c66 257 /// constant speed phase torque value (%)
nucleosam 0:0ccd34c56c66 258 uint8_t runTorque;
nucleosam 0:0ccd34c56c66 259 /// holding phase torque value (%)
nucleosam 0:0ccd34c56c66 260 uint8_t holdTorque;
nucleosam 0:0ccd34c56c66 261 /// torque boost enable
nucleosam 0:0ccd34c56c66 262 bool torqueBoostEnable;
nucleosam 0:0ccd34c56c66 263 /// torque boost speed threshold
nucleosam 0:0ccd34c56c66 264 uint16_t torqueBoostSpeedThreshold;
nucleosam 0:0ccd34c56c66 265 /// step mode
nucleosam 0:0ccd34c56c66 266 motorStepMode_t stepMode;
nucleosam 0:0ccd34c56c66 267 /// stop mode
nucleosam 0:0ccd34c56c66 268 motorStopMode_t stopMode;
nucleosam 0:0ccd34c56c66 269 /// PWM frequency used to generate REF voltage
nucleosam 0:0ccd34c56c66 270 uint32_t vrefPwmFreq;
nucleosam 0:0ccd34c56c66 271 } Stspin220_Init_t;
nucleosam 0:0ccd34c56c66 272 /**
nucleosam 0:0ccd34c56c66 273 * @}
nucleosam 0:0ccd34c56c66 274 */
nucleosam 0:0ccd34c56c66 275
nucleosam 0:0ccd34c56c66 276 /**
nucleosam 0:0ccd34c56c66 277 * @}
nucleosam 0:0ccd34c56c66 278 */
nucleosam 0:0ccd34c56c66 279
nucleosam 0:0ccd34c56c66 280 /* Functions --------------------------------------------------------*/
nucleosam 0:0ccd34c56c66 281
nucleosam 0:0ccd34c56c66 282 /** @defgroup MotorControl_Board_Linked_Functions MotorControl Board Linked Functions
nucleosam 0:0ccd34c56c66 283 * @{
nucleosam 0:0ccd34c56c66 284 */
nucleosam 0:0ccd34c56c66 285 ///Delay of the requested number of milliseconds
nucleosam 0:0ccd34c56c66 286 extern void Stspin220_Board_Delay(uint32_t delay);
nucleosam 0:0ccd34c56c66 287 ///Enable Irq
nucleosam 0:0ccd34c56c66 288 extern void Stspin220_Board_EnableIrq(void);
nucleosam 0:0ccd34c56c66 289 ///Disable Irq
nucleosam 0:0ccd34c56c66 290 extern void Stspin220_Board_DisableIrq(void);
nucleosam 0:0ccd34c56c66 291 ///Setting the Stck Timeout delay and attaching a callback function to it
nucleosam 0:0ccd34c56c66 292 extern void Stspin220_Board_TimStckSetFreq(uint16_t newFreq);
nucleosam 0:0ccd34c56c66 293 ///Initialises the step clock pin level
nucleosam 0:0ccd34c56c66 294 extern void Stspin220_Board_TimStckInit(void);
nucleosam 0:0ccd34c56c66 295 ///Stopping the Timeout
nucleosam 0:0ccd34c56c66 296 extern uint8_t Stspin220_Board_TimStckStop(volatile uint8_t *pToggleOdd);
nucleosam 0:0ccd34c56c66 297 ///Set the duty cycle of the PwmOut used for the REF
nucleosam 0:0ccd34c56c66 298 extern void Stspin220_Board_PwmRefSetDutyCycle(uint8_t dutyCycle);
nucleosam 0:0ccd34c56c66 299 ///Set the frequency of the PwmOut used for the REF
nucleosam 0:0ccd34c56c66 300 extern void Stspin220_Board_PwmRefSetFreq(uint32_t newFreq);
nucleosam 0:0ccd34c56c66 301 ///Start the reference voltage pwm
nucleosam 0:0ccd34c56c66 302 extern void Stspin220_Board_PwmRefStart(void);
nucleosam 0:0ccd34c56c66 303 ///Reset the STSPIN220 reset pin
nucleosam 0:0ccd34c56c66 304 extern void Stspin220_Board_ReleaseReset(void);
nucleosam 0:0ccd34c56c66 305 ///Set the STSPIN220 reset pin
nucleosam 0:0ccd34c56c66 306 extern void Stspin220_Board_Reset(void);
nucleosam 0:0ccd34c56c66 307 ///Set direction GPIO
nucleosam 0:0ccd34c56c66 308 extern void Stspin220_Board_SetDirectionGpio(uint8_t gpioState);
nucleosam 0:0ccd34c56c66 309 ///Reset the STCK\MODE3 pin
nucleosam 0:0ccd34c56c66 310 extern void Stspin220_Board_StckMode3_Reset(void);
nucleosam 0:0ccd34c56c66 311 ///Set the STCK\MODE3 pin
nucleosam 0:0ccd34c56c66 312 extern void Stspin220_Board_StckMode3_Set(void);
nucleosam 0:0ccd34c56c66 313 ///Enable the power bridges (leave the output bridges HiZ)
nucleosam 0:0ccd34c56c66 314 extern void Stspin220_Board_Enable(void);
nucleosam 0:0ccd34c56c66 315 ///Disable the power bridges (leave the output bridges HiZ)
nucleosam 0:0ccd34c56c66 316 extern void Stspin220_Board_Disable(void);
nucleosam 0:0ccd34c56c66 317 ///Select the STSPIN220 mode1, mode2, mode3 and mode4 pins levels
nucleosam 0:0ccd34c56c66 318 extern bool Stspin220_Board_SetModePins(uint8_t modePin1Level,\
nucleosam 0:0ccd34c56c66 319 uint8_t modePin2Level,\
nucleosam 0:0ccd34c56c66 320 uint8_t modePin3Level,\
nucleosam 0:0ccd34c56c66 321 uint8_t modePin4Level);
nucleosam 0:0ccd34c56c66 322 ///Select Full Step mode
nucleosam 0:0ccd34c56c66 323 extern void Stspin220_Board_SetFullStep(void);
nucleosam 0:0ccd34c56c66 324 ///Unselect Full Step mode
nucleosam 0:0ccd34c56c66 325 extern void Stspin220_Board_UnsetFullStep(void);
nucleosam 0:0ccd34c56c66 326 /**
nucleosam 0:0ccd34c56c66 327 * @}
nucleosam 0:0ccd34c56c66 328 */
nucleosam 0:0ccd34c56c66 329
nucleosam 0:0ccd34c56c66 330 /**
nucleosam 0:0ccd34c56c66 331 * @}
nucleosam 0:0ccd34c56c66 332 */
nucleosam 0:0ccd34c56c66 333
nucleosam 0:0ccd34c56c66 334 /**
nucleosam 0:0ccd34c56c66 335 * @}
nucleosam 0:0ccd34c56c66 336 */
nucleosam 0:0ccd34c56c66 337
nucleosam 0:0ccd34c56c66 338 #ifdef __cplusplus
nucleosam 0:0ccd34c56c66 339 }
nucleosam 0:0ccd34c56c66 340 #endif
nucleosam 0:0ccd34c56c66 341
nucleosam 0:0ccd34c56c66 342 #endif /* #ifndef __STSPIN220_H */
nucleosam 0:0ccd34c56c66 343
nucleosam 0:0ccd34c56c66 344 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/