Use BDCMotor_class.h instead of motor_class.h

Dependents:   HelloWorld_IHM04A1

Fork of X_NUCLEO_IHM04A1 by ST

Committer:
Manu_L
Date:
Tue Jun 14 12:14:28 2016 +0000
Revision:
3:b06e38d365d7
Parent:
1:2597a6165252
Use BDCMotor_class.h instead of Motor_class.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brdirais 0:2cb6ce8e07bd 1 /**
brdirais 0:2cb6ce8e07bd 2 ******************************************************************************
brdirais 0:2cb6ce8e07bd 3 * @file l6206.h
brdirais 0:2cb6ce8e07bd 4 * @author IPC Rennes
brdirais 0:2cb6ce8e07bd 5 * @version V1.2.0
brdirais 0:2cb6ce8e07bd 6 * @date March 30, 2016
brdirais 0:2cb6ce8e07bd 7 * @brief Header for L6206 driver (dual full bridge driver)
brdirais 0:2cb6ce8e07bd 8 * @note (C) COPYRIGHT 2015 STMicroelectronics
brdirais 0:2cb6ce8e07bd 9 ******************************************************************************
brdirais 0:2cb6ce8e07bd 10 * @attention
brdirais 0:2cb6ce8e07bd 11 *
brdirais 1:2597a6165252 12 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
brdirais 0:2cb6ce8e07bd 13 *
brdirais 0:2cb6ce8e07bd 14 * Redistribution and use in source and binary forms, with or without modification,
brdirais 0:2cb6ce8e07bd 15 * are permitted provided that the following conditions are met:
brdirais 0:2cb6ce8e07bd 16 * 1. Redistributions of source code must retain the above copyright notice,
brdirais 0:2cb6ce8e07bd 17 * this list of conditions and the following disclaimer.
brdirais 0:2cb6ce8e07bd 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
brdirais 0:2cb6ce8e07bd 19 * this list of conditions and the following disclaimer in the documentation
brdirais 0:2cb6ce8e07bd 20 * and/or other materials provided with the distribution.
brdirais 0:2cb6ce8e07bd 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
brdirais 0:2cb6ce8e07bd 22 * may be used to endorse or promote products derived from this software
brdirais 0:2cb6ce8e07bd 23 * without specific prior written permission.
brdirais 0:2cb6ce8e07bd 24 *
brdirais 0:2cb6ce8e07bd 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
brdirais 0:2cb6ce8e07bd 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
brdirais 0:2cb6ce8e07bd 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
brdirais 0:2cb6ce8e07bd 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
brdirais 0:2cb6ce8e07bd 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
brdirais 0:2cb6ce8e07bd 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
brdirais 0:2cb6ce8e07bd 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
brdirais 0:2cb6ce8e07bd 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
brdirais 0:2cb6ce8e07bd 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
brdirais 0:2cb6ce8e07bd 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
brdirais 0:2cb6ce8e07bd 35 *
brdirais 0:2cb6ce8e07bd 36 ******************************************************************************
brdirais 0:2cb6ce8e07bd 37 */
brdirais 0:2cb6ce8e07bd 38
brdirais 0:2cb6ce8e07bd 39 /* Define to prevent recursive inclusion -------------------------------------*/
brdirais 0:2cb6ce8e07bd 40 #ifndef __L6206_H
brdirais 0:2cb6ce8e07bd 41 #define __L6206_H
brdirais 0:2cb6ce8e07bd 42
brdirais 0:2cb6ce8e07bd 43 #ifdef __cplusplus
brdirais 0:2cb6ce8e07bd 44 extern "C" {
brdirais 0:2cb6ce8e07bd 45 #endif
brdirais 0:2cb6ce8e07bd 46
brdirais 0:2cb6ce8e07bd 47 /* Includes ------------------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 48 #include "l6206_target_config.h"
brdirais 0:2cb6ce8e07bd 49 #include "../Common/motor.h"
brdirais 0:2cb6ce8e07bd 50
brdirais 0:2cb6ce8e07bd 51 /** @addtogroup BSP
brdirais 0:2cb6ce8e07bd 52 * @{
brdirais 0:2cb6ce8e07bd 53 */
brdirais 1:2597a6165252 54
brdirais 1:2597a6165252 55 /** @addtogroup Components
brdirais 1:2597a6165252 56 * @{
brdirais 1:2597a6165252 57 */
brdirais 0:2cb6ce8e07bd 58
brdirais 0:2cb6ce8e07bd 59 /** @addtogroup L6206
brdirais 0:2cb6ce8e07bd 60 * @{
brdirais 0:2cb6ce8e07bd 61 */
brdirais 0:2cb6ce8e07bd 62
brdirais 0:2cb6ce8e07bd 63 /* Exported Constants --------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 64
brdirais 1:2597a6165252 65 /** @defgroup L6206_Exported_Defines L6206 Exported Defines
brdirais 0:2cb6ce8e07bd 66 * @{
brdirais 0:2cb6ce8e07bd 67 */
brdirais 0:2cb6ce8e07bd 68
brdirais 0:2cb6ce8e07bd 69 /// Current FW version
brdirais 0:2cb6ce8e07bd 70 #define L6206_FW_VERSION (0)
brdirais 0:2cb6ce8e07bd 71 ///Max number of Brush DC motors
brdirais 0:2cb6ce8e07bd 72 #define L6206_NB_MAX_MOTORS (4)
brdirais 0:2cb6ce8e07bd 73 ///Max number of Bridges
brdirais 0:2cb6ce8e07bd 74 #define L6206_NB_MAX_BRIDGES (2)
brdirais 0:2cb6ce8e07bd 75 ///Max number of input of Bridges
brdirais 0:2cb6ce8e07bd 76 #define L6206_NB_MAX_BRIDGE_INPUT (2 * L6206_NB_MAX_BRIDGES)
brdirais 0:2cb6ce8e07bd 77 /// MCU wait time in ms after power bridges are enabled
brdirais 0:2cb6ce8e07bd 78 #define BSP_MOTOR_CONTROL_BOARD_BRIDGE_TURN_ON_DELAY (20)
brdirais 0:2cb6ce8e07bd 79
brdirais 0:2cb6ce8e07bd 80 /**
brdirais 0:2cb6ce8e07bd 81 * @}
brdirais 0:2cb6ce8e07bd 82 */
brdirais 0:2cb6ce8e07bd 83
brdirais 0:2cb6ce8e07bd 84
brdirais 0:2cb6ce8e07bd 85 /* Exported Types -------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 86
brdirais 0:2cb6ce8e07bd 87 /** @defgroup L6206_Exported_Types L6206 Exported Types
brdirais 0:2cb6ce8e07bd 88 * @{
brdirais 0:2cb6ce8e07bd 89 */
brdirais 0:2cb6ce8e07bd 90
brdirais 0:2cb6ce8e07bd 91
brdirais 0:2cb6ce8e07bd 92
brdirais 0:2cb6ce8e07bd 93
brdirais 0:2cb6ce8e07bd 94 /** @defgroup Initialization_Structure Initialization Structure
brdirais 0:2cb6ce8e07bd 95 * @{
brdirais 0:2cb6ce8e07bd 96 */
brdirais 0:2cb6ce8e07bd 97
brdirais 0:2cb6ce8e07bd 98 typedef struct
brdirais 0:2cb6ce8e07bd 99 {
brdirais 0:2cb6ce8e07bd 100 /// Bridge configuration structure.
brdirais 0:2cb6ce8e07bd 101 dualFullBridgeConfig_t config;
brdirais 0:2cb6ce8e07bd 102
brdirais 0:2cb6ce8e07bd 103 /// PWM frequency
brdirais 0:2cb6ce8e07bd 104 uint32_t pwmFreq[L6206_NB_MAX_BRIDGE_INPUT];
brdirais 0:2cb6ce8e07bd 105
brdirais 0:2cb6ce8e07bd 106 /// Motor speed
brdirais 0:2cb6ce8e07bd 107 uint16_t speed[L6206_NB_MAX_MOTORS];
brdirais 0:2cb6ce8e07bd 108
brdirais 0:2cb6ce8e07bd 109 /// Motor direction
brdirais 0:2cb6ce8e07bd 110 motorDir_t direction[L6206_NB_MAX_MOTORS];
brdirais 0:2cb6ce8e07bd 111
brdirais 0:2cb6ce8e07bd 112 /// Current motor state
brdirais 0:2cb6ce8e07bd 113 motorState_t motionState[L6206_NB_MAX_MOTORS];
brdirais 0:2cb6ce8e07bd 114
brdirais 0:2cb6ce8e07bd 115 /// Bridge enabled (true) or not (false)
brdirais 0:2cb6ce8e07bd 116 bool bridgeEnabled[L6206_NB_MAX_BRIDGES];
brdirais 0:2cb6ce8e07bd 117 } deviceParams_t;
brdirais 0:2cb6ce8e07bd 118
brdirais 0:2cb6ce8e07bd 119
brdirais 0:2cb6ce8e07bd 120
brdirais 0:2cb6ce8e07bd 121
brdirais 0:2cb6ce8e07bd 122 typedef deviceParams_t L6206_Init_t;
brdirais 0:2cb6ce8e07bd 123
brdirais 0:2cb6ce8e07bd 124
brdirais 0:2cb6ce8e07bd 125
brdirais 0:2cb6ce8e07bd 126 /**
brdirais 0:2cb6ce8e07bd 127 * @}
brdirais 0:2cb6ce8e07bd 128 */
brdirais 0:2cb6ce8e07bd 129
brdirais 0:2cb6ce8e07bd 130
brdirais 0:2cb6ce8e07bd 131 /** @defgroup Data_Structure Data Structure
brdirais 0:2cb6ce8e07bd 132 * @{
brdirais 0:2cb6ce8e07bd 133 */
brdirais 0:2cb6ce8e07bd 134
brdirais 0:2cb6ce8e07bd 135 /* ACTION --------------------------------------------------------------------*
brdirais 0:2cb6ce8e07bd 136 * Declare here the structure of component's data, if any, one variable per *
brdirais 0:2cb6ce8e07bd 137 * line without initialization. *
brdirais 0:2cb6ce8e07bd 138 * *
brdirais 0:2cb6ce8e07bd 139 * Example: *
brdirais 0:2cb6ce8e07bd 140 * typedef struct *
brdirais 0:2cb6ce8e07bd 141 * { *
brdirais 0:2cb6ce8e07bd 142 * int T0_out; *
brdirais 0:2cb6ce8e07bd 143 * int T1_out; *
brdirais 0:2cb6ce8e07bd 144 * float T0_degC; *
brdirais 0:2cb6ce8e07bd 145 * float T1_degC; *
brdirais 0:2cb6ce8e07bd 146 * } COMPONENT_Data_t; *
brdirais 0:2cb6ce8e07bd 147 *----------------------------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 148 typedef struct
brdirais 0:2cb6ce8e07bd 149 {
brdirais 0:2cb6ce8e07bd 150 /// Function pointer to flag interrupt call back
brdirais 0:2cb6ce8e07bd 151 void (*flagInterruptCallback)(void);
brdirais 0:2cb6ce8e07bd 152
brdirais 0:2cb6ce8e07bd 153 /// Function pointer to error handler call back
brdirais 0:2cb6ce8e07bd 154 void (*errorHandlerCallback)(uint16_t error);
brdirais 0:2cb6ce8e07bd 155
brdirais 0:2cb6ce8e07bd 156 /// number of L6206 devices
brdirais 0:2cb6ce8e07bd 157 uint8_t numberOfDevices;
brdirais 0:2cb6ce8e07bd 158
brdirais 0:2cb6ce8e07bd 159 /// L6206 driver instance
brdirais 0:2cb6ce8e07bd 160 uint8_t deviceInstance;
brdirais 0:2cb6ce8e07bd 161
brdirais 0:2cb6ce8e07bd 162 /// L6206 Device Paramaters structure
brdirais 0:2cb6ce8e07bd 163 deviceParams_t devicePrm;
brdirais 0:2cb6ce8e07bd 164 } L6206_Data_t;
brdirais 0:2cb6ce8e07bd 165
brdirais 0:2cb6ce8e07bd 166 /**
brdirais 0:2cb6ce8e07bd 167 * @}
brdirais 0:2cb6ce8e07bd 168 */
brdirais 0:2cb6ce8e07bd 169
brdirais 0:2cb6ce8e07bd 170
brdirais 0:2cb6ce8e07bd 171
brdirais 0:2cb6ce8e07bd 172 /**
brdirais 0:2cb6ce8e07bd 173 * @}
brdirais 0:2cb6ce8e07bd 174 */
brdirais 0:2cb6ce8e07bd 175
brdirais 0:2cb6ce8e07bd 176 /* Exported functions --------------------------------------------------------*/
brdirais 0:2cb6ce8e07bd 177
brdirais 0:2cb6ce8e07bd 178
brdirais 0:2cb6ce8e07bd 179 /** @defgroup MotorControl_Board_Linked_Functions MotorControl Board Linked Functions
brdirais 0:2cb6ce8e07bd 180 * @{
brdirais 0:2cb6ce8e07bd 181 */
brdirais 0:2cb6ce8e07bd 182 ///Delay of the requested number of milliseconds
brdirais 0:2cb6ce8e07bd 183 extern void L6206_Board_Delay(void *handle, uint32_t delay);
brdirais 0:2cb6ce8e07bd 184 ///Disable the specified bridge
brdirais 0:2cb6ce8e07bd 185 extern void L6206_Board_DisableBridge(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 186 ///Enable the specified bridge
brdirais 0:2cb6ce8e07bd 187 extern void L6206_Board_EnableBridge(void *handle, uint8_t bridgeId, uint8_t addDelay);
brdirais 0:2cb6ce8e07bd 188 //Get the status of the flag and enable Pin
brdirais 0:2cb6ce8e07bd 189 extern uint32_t L6206_Board_GetFlagPinState(void *handle, uint8_t bridgeId);
brdirais 0:2cb6ce8e07bd 190 ///Initialise GPIOs used for L6206s
brdirais 0:2cb6ce8e07bd 191 extern void L6206_Board_GpioInit(void *handle);
brdirais 0:2cb6ce8e07bd 192 ///Set Briges Inputs PWM frequency and start it
brdirais 0:2cb6ce8e07bd 193 extern void L6206_Board_PwmSetFreq(void *handle, uint8_t bridgeInput, uint32_t newFreq, uint8_t duty);
brdirais 0:2cb6ce8e07bd 194 ///Deinitialise the PWM of the specified bridge input
brdirais 0:2cb6ce8e07bd 195 extern void L6206_Board_PwmDeInit(void *handle, uint8_t bridgeInput);
brdirais 0:2cb6ce8e07bd 196 ///Init the PWM of the specified bridge input
brdirais 0:2cb6ce8e07bd 197 extern void L6206_Board_PwmInit(void *handle, uint8_t bridgeInput);
brdirais 0:2cb6ce8e07bd 198 ///Stop the PWM of the specified bridge input
brdirais 0:2cb6ce8e07bd 199 extern void L6206_Board_PwmStop(void *handle, uint8_t bridgeInput);
brdirais 1:2597a6165252 200 /**
brdirais 1:2597a6165252 201 * @}
brdirais 1:2597a6165252 202 */
brdirais 0:2cb6ce8e07bd 203
brdirais 0:2cb6ce8e07bd 204
brdirais 0:2cb6ce8e07bd 205
brdirais 0:2cb6ce8e07bd 206 /**
brdirais 0:2cb6ce8e07bd 207 * @}
brdirais 0:2cb6ce8e07bd 208 */
brdirais 0:2cb6ce8e07bd 209
brdirais 0:2cb6ce8e07bd 210
brdirais 0:2cb6ce8e07bd 211 /**
brdirais 0:2cb6ce8e07bd 212 * @}
brdirais 0:2cb6ce8e07bd 213 */
brdirais 0:2cb6ce8e07bd 214
brdirais 0:2cb6ce8e07bd 215 /**
brdirais 0:2cb6ce8e07bd 216 * @}
brdirais 0:2cb6ce8e07bd 217 */
brdirais 0:2cb6ce8e07bd 218
brdirais 0:2cb6ce8e07bd 219 #ifdef __cplusplus
brdirais 0:2cb6ce8e07bd 220 }
brdirais 0:2cb6ce8e07bd 221 #endif
brdirais 0:2cb6ce8e07bd 222
brdirais 0:2cb6ce8e07bd 223 #endif /* #ifndef __L6206_H */
brdirais 0:2cb6ce8e07bd 224
brdirais 0:2cb6ce8e07bd 225
brdirais 0:2cb6ce8e07bd 226 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
brdirais 0:2cb6ce8e07bd 227
brdirais 0:2cb6ce8e07bd 228