ST Expansion SW Team / X_NUCLEO_IHM14A1

Dependencies:   ST_INTERFACES

Dependents:   HelloWorld_IHM14A1

Fork of X_NUCLEO_IHM14A1 by Davide Aliprandi

Committer:
Davidroid
Date:
Fri Apr 27 17:02:08 2018 +0000
Revision:
1:bc265521eb00
Child:
2:4fd08b67958c
Populate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 1:bc265521eb00 1 /******************************************************//**
Davidroid 1:bc265521eb00 2 * @file STSPIN820_def.h
Davidroid 1:bc265521eb00 3 * @author STM
Davidroid 1:bc265521eb00 4 * @version V1.0.0
Davidroid 1:bc265521eb00 5 * @date August 7th, 2017
Davidroid 1:bc265521eb00 6 * @brief Header for STSPIN820 driver (fully integrated microstepping motor driver)
Davidroid 1:bc265521eb00 7 * @note (C) COPYRIGHT 2017 STMicroelectronics
Davidroid 1:bc265521eb00 8 ******************************************************************************
Davidroid 1:bc265521eb00 9 * @attention
Davidroid 1:bc265521eb00 10 *
Davidroid 1:bc265521eb00 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
Davidroid 1:bc265521eb00 12 *
Davidroid 1:bc265521eb00 13 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 1:bc265521eb00 14 * are permitted provided that the following conditions are met:
Davidroid 1:bc265521eb00 15 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 1:bc265521eb00 16 * this list of conditions and the following disclaimer.
Davidroid 1:bc265521eb00 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 1:bc265521eb00 18 * this list of conditions and the following disclaimer in the documentation
Davidroid 1:bc265521eb00 19 * and/or other materials provided with the distribution.
Davidroid 1:bc265521eb00 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 1:bc265521eb00 21 * may be used to endorse or promote products derived from this software
Davidroid 1:bc265521eb00 22 * without specific prior written permission.
Davidroid 1:bc265521eb00 23 *
Davidroid 1:bc265521eb00 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 1:bc265521eb00 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 1:bc265521eb00 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 1:bc265521eb00 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 1:bc265521eb00 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 1:bc265521eb00 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 1:bc265521eb00 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 1:bc265521eb00 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 1:bc265521eb00 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 1:bc265521eb00 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 1:bc265521eb00 34 *
Davidroid 1:bc265521eb00 35 ******************************************************************************
Davidroid 1:bc265521eb00 36 */
Davidroid 1:bc265521eb00 37
Davidroid 1:bc265521eb00 38
Davidroid 1:bc265521eb00 39 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 1:bc265521eb00 40
Davidroid 1:bc265521eb00 41 #ifndef __STSPIN820_H
Davidroid 1:bc265521eb00 42 #define __STSPIN820_H
Davidroid 1:bc265521eb00 43
Davidroid 1:bc265521eb00 44 #ifdef __cplusplus
Davidroid 1:bc265521eb00 45 extern "C" {
Davidroid 1:bc265521eb00 46 #endif
Davidroid 1:bc265521eb00 47
Davidroid 1:bc265521eb00 48
Davidroid 1:bc265521eb00 49 /* Includes ------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 50
Davidroid 1:bc265521eb00 51 #include "STSPIN820_config.h"
Davidroid 1:bc265521eb00 52 #include "motor_def.h"
Davidroid 1:bc265521eb00 53
Davidroid 1:bc265521eb00 54 /** @addtogroup BSP
Davidroid 1:bc265521eb00 55 * @{
Davidroid 1:bc265521eb00 56 */
Davidroid 1:bc265521eb00 57
Davidroid 1:bc265521eb00 58 /** @addtogroup STSPIN820
Davidroid 1:bc265521eb00 59 * @{
Davidroid 1:bc265521eb00 60 */
Davidroid 1:bc265521eb00 61
Davidroid 1:bc265521eb00 62
Davidroid 1:bc265521eb00 63 /* Definitions ---------------------------------------------------------------*/
Davidroid 1:bc265521eb00 64
Davidroid 1:bc265521eb00 65 /** @defgroup STSPIN820_Exported_Constants STSPIN820 Exported Constants
Davidroid 1:bc265521eb00 66 * @{
Davidroid 1:bc265521eb00 67 */
Davidroid 1:bc265521eb00 68 /// Current FW major version
Davidroid 1:bc265521eb00 69 #define STSPIN820_FW_MAJOR_VERSION (uint8_t)(1)
Davidroid 1:bc265521eb00 70 /// Current FW minor version
Davidroid 1:bc265521eb00 71 #define STSPIN820_FW_MINOR_VERSION (uint8_t)(0)
Davidroid 1:bc265521eb00 72 /// Current FW patch version
Davidroid 1:bc265521eb00 73 #define STSPIN820_FW_PATCH_VERSION (uint8_t)(0)
Davidroid 1:bc265521eb00 74 /// Current FW version
Davidroid 1:bc265521eb00 75 #define STSPIN820_FW_VERSION (uint32_t)((STSPIN820_FW_MAJOR_VERSION<<16)|\
Davidroid 1:bc265521eb00 76 (STSPIN820_FW_MINOR_VERSION<<8)|\
Davidroid 1:bc265521eb00 77 (STSPIN820_FW_PATCH_VERSION))
Davidroid 1:bc265521eb00 78
Davidroid 1:bc265521eb00 79 /// Max position
Davidroid 1:bc265521eb00 80 #define STSPIN820_MAX_POSITION (0x7FFFFFFF)
Davidroid 1:bc265521eb00 81
Davidroid 1:bc265521eb00 82 /// Min position
Davidroid 1:bc265521eb00 83 #define STSPIN820_MIN_POSITION (0x80000000)
Davidroid 1:bc265521eb00 84
Davidroid 1:bc265521eb00 85 /// Position range
Davidroid 1:bc265521eb00 86 #define STSPIN820_POSITION_RANGE ((uint32_t)(STSPIN820_MAX_POSITION -\
Davidroid 1:bc265521eb00 87 STSPIN820_MIN_POSITION))
Davidroid 1:bc265521eb00 88 /// STSPIN820 error base number
Davidroid 1:bc265521eb00 89 #define STSPIN820_ERROR_BASE (0xA000)
Davidroid 1:bc265521eb00 90
Davidroid 1:bc265521eb00 91 /// run bit mask
Davidroid 1:bc265521eb00 92 #define STSPIN820_RUN_BIT_MASK (0x01)
Davidroid 1:bc265521eb00 93
Davidroid 1:bc265521eb00 94 /// move bit mask
Davidroid 1:bc265521eb00 95 #define STSPIN820_MOVE_BIT_MASK (0x02)
Davidroid 1:bc265521eb00 96
Davidroid 1:bc265521eb00 97 /// soft stop bit mask
Davidroid 1:bc265521eb00 98 #define STSPIN820_SOFT_STOP_BIT_MASK (0x04)
Davidroid 1:bc265521eb00 99
Davidroid 1:bc265521eb00 100 /// direction change bit mask
Davidroid 1:bc265521eb00 101 #define STSPIN820_DIR_CHANGE_BIT_MASK (0x08)
Davidroid 1:bc265521eb00 102
Davidroid 1:bc265521eb00 103 /// Maximum frequency of the step clock frequency in Hz
Davidroid 1:bc265521eb00 104 #define STSPIN820_MAX_STCK_FREQ (10000)
Davidroid 1:bc265521eb00 105
Davidroid 1:bc265521eb00 106 /// Minimum frequency of the step clock frequency in Hz
Davidroid 1:bc265521eb00 107 #define STSPIN820_MIN_STCK_FREQ (8)
Davidroid 1:bc265521eb00 108
Davidroid 1:bc265521eb00 109 /// Minimum duration of standby
Davidroid 1:bc265521eb00 110 #define STANDBY_MIN_DURATION (1)
Davidroid 1:bc265521eb00 111
Davidroid 1:bc265521eb00 112 /// Dead time after standby exit
Davidroid 1:bc265521eb00 113 #define AFTER_STANDBY_EXIT_DEAD_TIME (1)
Davidroid 1:bc265521eb00 114
Davidroid 1:bc265521eb00 115 /// Reset delay to select step mode
Davidroid 1:bc265521eb00 116 #define SELECT_STEP_MODE_DELAY (1)
Davidroid 1:bc265521eb00 117
Davidroid 1:bc265521eb00 118 /// PWM REF and bridges disable delay
Davidroid 1:bc265521eb00 119 #define DISABLE_DELAY (1)
Davidroid 1:bc265521eb00 120
Davidroid 1:bc265521eb00 121 /// Microstepping sequencer maximum value
Davidroid 1:bc265521eb00 122 #define SEQUENCER_MAX_VALUE (uint16_t)(0x3FF)
Davidroid 1:bc265521eb00 123
Davidroid 1:bc265521eb00 124
Davidroid 1:bc265521eb00 125 /* Types ---------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 126
Davidroid 1:bc265521eb00 127 /** @defgroup STSPIN820_Exported_Types STSPIN820 Exported Types
Davidroid 1:bc265521eb00 128 * @{
Davidroid 1:bc265521eb00 129 */
Davidroid 1:bc265521eb00 130
Davidroid 1:bc265521eb00 131 /** @defgroup Error_Types Error Types
Davidroid 1:bc265521eb00 132 * @{
Davidroid 1:bc265521eb00 133 */
Davidroid 1:bc265521eb00 134 /// Errors
Davidroid 1:bc265521eb00 135 typedef enum
Davidroid 1:bc265521eb00 136 {
Davidroid 1:bc265521eb00 137 STSPIN820_ERROR_SET_HOME = STSPIN820_ERROR_BASE, /// Error while setting home position
Davidroid 1:bc265521eb00 138 STSPIN820_ERROR_SET_MAX_SPEED = STSPIN820_ERROR_BASE + 1, /// Error while setting max speed
Davidroid 1:bc265521eb00 139 STSPIN820_ERROR_SET_MIN_SPEED = STSPIN820_ERROR_BASE + 2, /// Error while setting min speed
Davidroid 1:bc265521eb00 140 STSPIN820_ERROR_SET_ACCELERATION = STSPIN820_ERROR_BASE + 3, /// Error while setting acceleration
Davidroid 1:bc265521eb00 141 STSPIN820_ERROR_SET_DECELERATION = STSPIN820_ERROR_BASE + 4, /// Error while setting decelaration
Davidroid 1:bc265521eb00 142 STSPIN820_ERROR_MCU_OSC_CONFIG = STSPIN820_ERROR_BASE + 5, /// Error while configuring mcu oscillator
Davidroid 1:bc265521eb00 143 STSPIN820_ERROR_MCU_CLOCK_CONFIG = STSPIN820_ERROR_BASE + 6, /// Error while configuring mcu clock
Davidroid 1:bc265521eb00 144 STSPIN820_ERROR_POSITION = STSPIN820_ERROR_BASE + 7, /// Unexpected current position (wrong number of steps)
Davidroid 1:bc265521eb00 145 STSPIN820_ERROR_SPEED = STSPIN820_ERROR_BASE + 8, /// Unexpected current speed
Davidroid 1:bc265521eb00 146 STSPIN820_ERROR_INIT = STSPIN820_ERROR_BASE + 9, /// Unexpected number of devices or unexpected value for predefined parameter
Davidroid 1:bc265521eb00 147 STSPIN820_ERROR_SET_DIRECTION = STSPIN820_ERROR_BASE + 10, /// Error while setting direction
Davidroid 1:bc265521eb00 148 STSPIN820_ERROR_SET_STEP_MODE = STSPIN820_ERROR_BASE + 11, /// Attempt to set an unsupported step mode
Davidroid 1:bc265521eb00 149 STSPIN820_ERROR_APPLY_SPEED = STSPIN820_ERROR_BASE + 12, /// Error while applying speed
Davidroid 1:bc265521eb00 150 STSPIN820_ERROR_SET_TORQUE = STSPIN820_ERROR_BASE + 13, /// Error while setting torque
Davidroid 1:bc265521eb00 151 STSPIN820_ERROR_STEP_CLOCK = STSPIN820_ERROR_BASE + 14 /// Error related to step clock
Davidroid 1:bc265521eb00 152 } error_types_t;
Davidroid 1:bc265521eb00 153 /**
Davidroid 1:bc265521eb00 154 * @}
Davidroid 1:bc265521eb00 155 */
Davidroid 1:bc265521eb00 156
Davidroid 1:bc265521eb00 157 /** @defgroup Device_Commands Device Commands
Davidroid 1:bc265521eb00 158 * @{
Davidroid 1:bc265521eb00 159 */
Davidroid 1:bc265521eb00 160 /// Device commands
Davidroid 1:bc265521eb00 161 typedef enum
Davidroid 1:bc265521eb00 162 {
Davidroid 1:bc265521eb00 163 NO_CMD = 0x00,
Davidroid 1:bc265521eb00 164 RUN_CMD = (STSPIN820_RUN_BIT_MASK),
Davidroid 1:bc265521eb00 165 MOVE_CMD = (STSPIN820_MOVE_BIT_MASK),
Davidroid 1:bc265521eb00 166 } device_command_t;
Davidroid 1:bc265521eb00 167 /**
Davidroid 1:bc265521eb00 168 * @}
Davidroid 1:bc265521eb00 169 */
Davidroid 1:bc265521eb00 170
Davidroid 1:bc265521eb00 171
Davidroid 1:bc265521eb00 172 /** @defgroup Device_Parameters Device Parameters
Davidroid 1:bc265521eb00 173 * @{
Davidroid 1:bc265521eb00 174 */
Davidroid 1:bc265521eb00 175
Davidroid 1:bc265521eb00 176 /// Device Parameters Structure Type
Davidroid 1:bc265521eb00 177 typedef struct
Davidroid 1:bc265521eb00 178 {
Davidroid 1:bc265521eb00 179 /// accumulator used to store speed increase smaller than 1 pps
Davidroid 1:bc265521eb00 180 volatile uint32_t accu;
Davidroid 1:bc265521eb00 181 /// Position in microstep according to current step mode
Davidroid 1:bc265521eb00 182 volatile int32_t currentPosition;
Davidroid 1:bc265521eb00 183 /// Position of sequencer
Davidroid 1:bc265521eb00 184 volatile int16_t sequencerPosition;
Davidroid 1:bc265521eb00 185 /// mark position in microstep (motor position control mode)
Davidroid 1:bc265521eb00 186 volatile int32_t markPosition;
Davidroid 1:bc265521eb00 187 /// position in microstep at the end of the accelerating phase
Davidroid 1:bc265521eb00 188 volatile uint32_t endAccPos;
Davidroid 1:bc265521eb00 189 /// nb of in microstep performed from the beggining of the goto or the move command
Davidroid 1:bc265521eb00 190 volatile uint32_t relativePos;
Davidroid 1:bc265521eb00 191 /// position in microstep step at the start of the decelerating phase
Davidroid 1:bc265521eb00 192 volatile uint32_t startDecPos;
Davidroid 1:bc265521eb00 193 /// nb of microstep steps to perform for the goto or move commands
Davidroid 1:bc265521eb00 194 uint32_t stepsToTake;
Davidroid 1:bc265521eb00 195
Davidroid 1:bc265521eb00 196 /// constant speed phase torque value (%)
Davidroid 1:bc265521eb00 197 volatile uint8_t runTorque;
Davidroid 1:bc265521eb00 198 /// acceleration phase torque value (%)
Davidroid 1:bc265521eb00 199 volatile uint8_t accelTorque;
Davidroid 1:bc265521eb00 200 /// deceleration phase torque value (%)
Davidroid 1:bc265521eb00 201 volatile uint8_t decelTorque;
Davidroid 1:bc265521eb00 202 /// holding phase torque value (%)
Davidroid 1:bc265521eb00 203 volatile uint8_t holdTorque;
Davidroid 1:bc265521eb00 204 /// current selected torque value
Davidroid 1:bc265521eb00 205 volatile uint8_t currentTorque;
Davidroid 1:bc265521eb00 206 /// torque update
Davidroid 1:bc265521eb00 207 volatile bool updateTorque;
Davidroid 1:bc265521eb00 208 /// PWM frequency used to generate REF voltage
Davidroid 1:bc265521eb00 209 volatile uint32_t refPwmFreq;
Davidroid 1:bc265521eb00 210 /// torque boost enable
Davidroid 1:bc265521eb00 211 volatile bool torqueBoostEnable;
Davidroid 1:bc265521eb00 212 /// torque boost speed threshold
Davidroid 1:bc265521eb00 213 volatile uint16_t torqueBoostSpeedThreshold;
Davidroid 1:bc265521eb00 214
Davidroid 1:bc265521eb00 215 /// acceleration in pps^2
Davidroid 1:bc265521eb00 216 volatile uint16_t acceleration;
Davidroid 1:bc265521eb00 217 /// deceleration in pps^2
Davidroid 1:bc265521eb00 218 volatile uint16_t deceleration;
Davidroid 1:bc265521eb00 219 /// max speed in pps (speed use for goto or move command)
Davidroid 1:bc265521eb00 220 volatile uint16_t maxSpeed;
Davidroid 1:bc265521eb00 221 /// min speed in pps
Davidroid 1:bc265521eb00 222 volatile uint16_t minSpeed;
Davidroid 1:bc265521eb00 223 /// current speed in pps
Davidroid 1:bc265521eb00 224 volatile uint16_t speed;
Davidroid 1:bc265521eb00 225
Davidroid 1:bc265521eb00 226 /// command under execution
Davidroid 1:bc265521eb00 227 volatile device_command_t commandExecuted;
Davidroid 1:bc265521eb00 228 /// FORWARD or BACKWARD direction
Davidroid 1:bc265521eb00 229 volatile motor_direction_t direction;
Davidroid 1:bc265521eb00 230 /// current state of the device
Davidroid 1:bc265521eb00 231 volatile motor_state_t motionState;
Davidroid 1:bc265521eb00 232 /// current step mode
Davidroid 1:bc265521eb00 233 volatile motor_step_mode_t stepMode;
Davidroid 1:bc265521eb00 234 /// latched step mode
Davidroid 1:bc265521eb00 235 motor_step_mode_t stepModeLatched;
Davidroid 1:bc265521eb00 236 /// current stop mode
Davidroid 1:bc265521eb00 237 motor_stop_mode_t stopMode;
Davidroid 1:bc265521eb00 238
Davidroid 1:bc265521eb00 239 } device_params_t;
Davidroid 1:bc265521eb00 240
Davidroid 1:bc265521eb00 241 /* ACTION --------------------------------------------------------------------*
Davidroid 1:bc265521eb00 242 * Declare here the component's initialization structure, if any, one *
Davidroid 1:bc265521eb00 243 * variable per line without initialization. *
Davidroid 1:bc265521eb00 244 * *
Davidroid 1:bc265521eb00 245 * Example: *
Davidroid 1:bc265521eb00 246 * typedef struct *
Davidroid 1:bc265521eb00 247 * { *
Davidroid 1:bc265521eb00 248 * int frequency; *
Davidroid 1:bc265521eb00 249 * int update_mode; *
Davidroid 1:bc265521eb00 250 * } COMPONENT_init_t; *
Davidroid 1:bc265521eb00 251 *----------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 252 /// Motor driver initialization structure definition
Davidroid 1:bc265521eb00 253 typedef struct
Davidroid 1:bc265521eb00 254 {
Davidroid 1:bc265521eb00 255 /// acceleration in pps^2
Davidroid 1:bc265521eb00 256 uint16_t acceleration;
Davidroid 1:bc265521eb00 257 /// deceleration in pps^2
Davidroid 1:bc265521eb00 258 uint16_t deceleration;
Davidroid 1:bc265521eb00 259 /// max speed in pps (speed use for goto or move command)
Davidroid 1:bc265521eb00 260 uint16_t maxSpeed;
Davidroid 1:bc265521eb00 261 /// min speed in pps
Davidroid 1:bc265521eb00 262 uint16_t minSpeed;
Davidroid 1:bc265521eb00 263 /// acceleration phase torque value (%)
Davidroid 1:bc265521eb00 264 uint8_t accelTorque;
Davidroid 1:bc265521eb00 265 /// deceleration phase torque value (%)
Davidroid 1:bc265521eb00 266 uint8_t decelTorque;
Davidroid 1:bc265521eb00 267 /// constant speed phase torque value (%)
Davidroid 1:bc265521eb00 268 uint8_t runTorque;
Davidroid 1:bc265521eb00 269 /// holding phase torque value (%)
Davidroid 1:bc265521eb00 270 uint8_t holdTorque;
Davidroid 1:bc265521eb00 271 /// torque boost enable
Davidroid 1:bc265521eb00 272 bool torqueBoostEnable;
Davidroid 1:bc265521eb00 273 /// torque boost speed threshold
Davidroid 1:bc265521eb00 274 uint16_t torqueBoostSpeedThreshold;
Davidroid 1:bc265521eb00 275 /// step mode
Davidroid 1:bc265521eb00 276 motor_step_mode_t stepMode;
Davidroid 1:bc265521eb00 277 /// stop mode
Davidroid 1:bc265521eb00 278 motor_stop_mode_t stopMode;
Davidroid 1:bc265521eb00 279 /// PWM frequency used to generate REF voltage
Davidroid 1:bc265521eb00 280 uint32_t vrefPwmFreq;
Davidroid 1:bc265521eb00 281 } STSPIN820_init_t;
Davidroid 1:bc265521eb00 282
Davidroid 1:bc265521eb00 283 /**
Davidroid 1:bc265521eb00 284 * @brief STSPIN820 driver data structure definition.
Davidroid 1:bc265521eb00 285 */
Davidroid 1:bc265521eb00 286 /* ACTION --------------------------------------------------------------------*
Davidroid 1:bc265521eb00 287 * Declare here the structure of component's data, if any, one variable per *
Davidroid 1:bc265521eb00 288 * line without initialization. *
Davidroid 1:bc265521eb00 289 * *
Davidroid 1:bc265521eb00 290 * Example: *
Davidroid 1:bc265521eb00 291 * typedef struct *
Davidroid 1:bc265521eb00 292 * { *
Davidroid 1:bc265521eb00 293 * int T0_out; *
Davidroid 1:bc265521eb00 294 * int T1_out; *
Davidroid 1:bc265521eb00 295 * float T0_degC; *
Davidroid 1:bc265521eb00 296 * float T1_degC; *
Davidroid 1:bc265521eb00 297 * } COMPONENT_data_t; *
Davidroid 1:bc265521eb00 298 *----------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 299 typedef struct
Davidroid 1:bc265521eb00 300 {
Davidroid 1:bc265521eb00 301 /// Function pointer to flag interrupt call back
Davidroid 1:bc265521eb00 302 void (*flag_interrupt_callback)(void);
Davidroid 1:bc265521eb00 303 /// Function pointer to error handler call back
Davidroid 1:bc265521eb00 304 void (*error_handler_callback)(uint16_t error);
Davidroid 1:bc265521eb00 305 uint8_t toggle_odd;
Davidroid 1:bc265521eb00 306
Davidroid 1:bc265521eb00 307 /// STSPIN820 Device Paramaters structure
Davidroid 1:bc265521eb00 308 device_params_t device_prm;
Davidroid 1:bc265521eb00 309 uint8_t number_of_devices;
Davidroid 1:bc265521eb00 310 uint8_t device_instance;
Davidroid 1:bc265521eb00 311 } STSPIN820_data_t;
Davidroid 1:bc265521eb00 312
Davidroid 1:bc265521eb00 313 /**
Davidroid 1:bc265521eb00 314 * @}
Davidroid 1:bc265521eb00 315 */
Davidroid 1:bc265521eb00 316
Davidroid 1:bc265521eb00 317 /**
Davidroid 1:bc265521eb00 318 * @}
Davidroid 1:bc265521eb00 319 */
Davidroid 1:bc265521eb00 320
Davidroid 1:bc265521eb00 321
Davidroid 1:bc265521eb00 322 /** @defgroup MotorControl_Board_Linked_Functions MotorControl Board Linked Functions
Davidroid 1:bc265521eb00 323 * @{
Davidroid 1:bc265521eb00 324 */
Davidroid 1:bc265521eb00 325 /* ACTION --------------------------------------------------------------------*
Davidroid 1:bc265521eb00 326 * Declare here extern I/O and interrupt related functions you might need, *
Davidroid 1:bc265521eb00 327 * and implemented then in a glue logic file on the target environment, for *
Davidroid 1:bc265521eb00 328 * example within the "x_nucleo_board.c" file., e.g.: *
Davidroid 1:bc265521eb00 329 * extern status_t COMPONENT_IO_Init (void *handle); *
Davidroid 1:bc265521eb00 330 * extern status_t COMPONENT_IO_Read (handle, buf, regadd, bytes); *
Davidroid 1:bc265521eb00 331 * extern status_t COMPONENT_IO_Write(handle, buf, regadd, bytes); *
Davidroid 1:bc265521eb00 332 * extern void COMPONENT_IO_ITConfig(void); *
Davidroid 1:bc265521eb00 333 *----------------------------------------------------------------------------*/
Davidroid 1:bc265521eb00 334 ///Delay of the requested number of milliseconds
Davidroid 1:bc265521eb00 335 extern void STSPIN820_Board_Delay(void *handle, uint32_t delay);
Davidroid 1:bc265521eb00 336 ///Disable the power bridges (leave the output bridges HiZ)
Davidroid 1:bc265521eb00 337 extern void STSPIN820_Board_Disable(void *handle);
Davidroid 1:bc265521eb00 338 ///Disable Irq
Davidroid 1:bc265521eb00 339 extern void STSPIN820_Board_DisableIrq(void *handle);
Davidroid 1:bc265521eb00 340 //Get the EN FAULT pin state
Davidroid 1:bc265521eb00 341 extern uint32_t STSPIN820_Board_EN_AND_FAULT_PIN_GetState(void *handle);
Davidroid 1:bc265521eb00 342 ///Enable the power bridges (leave the output bridges HiZ)
Davidroid 1:bc265521eb00 343 extern void STSPIN820_Board_Enable(void *handle);
Davidroid 1:bc265521eb00 344 ///Enable Irq
Davidroid 1:bc265521eb00 345 extern void STSPIN820_Board_EnableIrq(void *handle);
Davidroid 1:bc265521eb00 346 ///Initialise GPIOs used for STSPIN820
Davidroid 1:bc265521eb00 347 extern void STSPIN820_Board_GpioInit(void *handle);
Davidroid 1:bc265521eb00 348 ///Init the reference voltage pwm
Davidroid 1:bc265521eb00 349 extern void STSPIN820_Board_PwmRefInit(void *handle);
Davidroid 1:bc265521eb00 350 ///Set the frequency and duty cycle of PWM used for the reference voltage generation
Davidroid 1:bc265521eb00 351 extern void STSPIN820_Board_PwmRefSetFreqAndDutyCycle(void *handle, uint32_t newFreq, uint8_t dutyCycle);
Davidroid 1:bc265521eb00 352 ///Start the reference voltage pwm
Davidroid 1:bc265521eb00 353 extern void STSPIN820_Board_PwmRefStart(void *handle);
Davidroid 1:bc265521eb00 354 ///Stop the reference voltage pwm
Davidroid 1:bc265521eb00 355 extern void STSPIN820_Board_PwmRefStop(void *handle);
Davidroid 1:bc265521eb00 356 ///Reset the STSPIN820 reset pin
Davidroid 1:bc265521eb00 357 extern void STSPIN820_Board_ReleaseReset(void *handle);
Davidroid 1:bc265521eb00 358 ///Set the STSPIN820 reset pin
Davidroid 1:bc265521eb00 359 extern void STSPIN820_Board_Reset(void *handle);
Davidroid 1:bc265521eb00 360 ///Set decay GPIO
Davidroid 1:bc265521eb00 361 extern void STSPIN820_Board_SetDecayGpio(void *handle, uint8_t gpioState);
Davidroid 1:bc265521eb00 362 ///Get decay GPIO
Davidroid 1:bc265521eb00 363 extern uint8_t STSPIN820_Board_GetDecayGpio(void *handle);
Davidroid 1:bc265521eb00 364 ///Set direction GPIO
Davidroid 1:bc265521eb00 365 extern void STSPIN820_Board_SetDirectionGpio(void *handle, uint8_t gpioState);
Davidroid 1:bc265521eb00 366 ///Select Full Step mode
Davidroid 1:bc265521eb00 367 extern void STSPIN820_Board_SetFullStep(void *handle);
Davidroid 1:bc265521eb00 368 ///Select the STSPIN820 mode1, mode2, and mode3 pins levels
Davidroid 1:bc265521eb00 369 extern bool STSPIN820_Board_SetModePins(void *handle, uint8_t modePin1Level, uint8_t modePin2Level, uint8_t modePin3Level);
Davidroid 1:bc265521eb00 370 ///Step clock compare value initialization
Davidroid 1:bc265521eb00 371 extern void STSPIN820_Board_TimStckCompareInit(void *handle);
Davidroid 1:bc265521eb00 372 ///DeInit the timer
Davidroid 1:bc265521eb00 373 extern void STSPIN820_Board_TimStckDeInit(void *handle);
Davidroid 1:bc265521eb00 374 ///Init the timer
Davidroid 1:bc265521eb00 375 extern void STSPIN820_Board_TimStckInit(void *handle);
Davidroid 1:bc265521eb00 376 ///Set step clock frequency
Davidroid 1:bc265521eb00 377 extern void STSPIN820_Board_TimStckSetFreq(void *handle, uint16_t newFreq);
Davidroid 1:bc265521eb00 378 ///Start step clock
Davidroid 1:bc265521eb00 379 extern void STSPIN820_Board_TimStckStart(void *handle);
Davidroid 1:bc265521eb00 380 ///Stop the timer
Davidroid 1:bc265521eb00 381 extern uint8_t STSPIN820_Board_TimStckStop(void *handle, uint8_t *pToggleOdd);
Davidroid 1:bc265521eb00 382 ///Unselect Full Step mode
Davidroid 1:bc265521eb00 383 extern void STSPIN820_Board_UnsetFullStep(void *handle);
Davidroid 1:bc265521eb00 384 /**
Davidroid 1:bc265521eb00 385 * @}
Davidroid 1:bc265521eb00 386 */
Davidroid 1:bc265521eb00 387
Davidroid 1:bc265521eb00 388 /**
Davidroid 1:bc265521eb00 389 * @}
Davidroid 1:bc265521eb00 390 */
Davidroid 1:bc265521eb00 391
Davidroid 1:bc265521eb00 392 /**
Davidroid 1:bc265521eb00 393 * @}
Davidroid 1:bc265521eb00 394 */
Davidroid 1:bc265521eb00 395
Davidroid 1:bc265521eb00 396 #ifdef __cplusplus
Davidroid 1:bc265521eb00 397 }
Davidroid 1:bc265521eb00 398 #endif
Davidroid 1:bc265521eb00 399
Davidroid 1:bc265521eb00 400 #endif /* #ifndef __STSPIN820_H */
Davidroid 1:bc265521eb00 401
Davidroid 1:bc265521eb00 402 /******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/