Use BDCMotor_class.h instead of motor_class.h
Dependents: HelloWorld_IHM04A1
Fork of X_NUCLEO_IHM04A1 by
Components/l6206/l6206.h@0:2cb6ce8e07bd, 2016-05-03 (annotated)
- Committer:
- brdirais
- Date:
- Tue May 03 11:16:57 2016 +0000
- Revision:
- 0:2cb6ce8e07bd
- Child:
- 1:2597a6165252
Initial version of X-NUCLEO-IHM04A1 library
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:2cb6ce8e07bd | 12 | * <h2><center>© COPYRIGHT(c) 2015 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 | 0:2cb6ce8e07bd | 54 | |
brdirais | 0:2cb6ce8e07bd | 55 | /** @addtogroup L6206 |
brdirais | 0:2cb6ce8e07bd | 56 | * @{ |
brdirais | 0:2cb6ce8e07bd | 57 | */ |
brdirais | 0:2cb6ce8e07bd | 58 | |
brdirais | 0:2cb6ce8e07bd | 59 | /* Exported Constants --------------------------------------------------------*/ |
brdirais | 0:2cb6ce8e07bd | 60 | |
brdirais | 0:2cb6ce8e07bd | 61 | /** @defgroup L6206_Exported_Constants L6206 Exported Constants |
brdirais | 0:2cb6ce8e07bd | 62 | * @{ |
brdirais | 0:2cb6ce8e07bd | 63 | */ |
brdirais | 0:2cb6ce8e07bd | 64 | |
brdirais | 0:2cb6ce8e07bd | 65 | /// Current FW version |
brdirais | 0:2cb6ce8e07bd | 66 | #define L6206_FW_VERSION (0) |
brdirais | 0:2cb6ce8e07bd | 67 | ///Max number of Brush DC motors |
brdirais | 0:2cb6ce8e07bd | 68 | #define L6206_NB_MAX_MOTORS (4) |
brdirais | 0:2cb6ce8e07bd | 69 | ///Max number of Bridges |
brdirais | 0:2cb6ce8e07bd | 70 | #define L6206_NB_MAX_BRIDGES (2) |
brdirais | 0:2cb6ce8e07bd | 71 | ///Max number of input of Bridges |
brdirais | 0:2cb6ce8e07bd | 72 | #define L6206_NB_MAX_BRIDGE_INPUT (2 * L6206_NB_MAX_BRIDGES) |
brdirais | 0:2cb6ce8e07bd | 73 | /// MCU wait time in ms after power bridges are enabled |
brdirais | 0:2cb6ce8e07bd | 74 | #define BSP_MOTOR_CONTROL_BOARD_BRIDGE_TURN_ON_DELAY (20) |
brdirais | 0:2cb6ce8e07bd | 75 | |
brdirais | 0:2cb6ce8e07bd | 76 | /** |
brdirais | 0:2cb6ce8e07bd | 77 | * @} |
brdirais | 0:2cb6ce8e07bd | 78 | */ |
brdirais | 0:2cb6ce8e07bd | 79 | |
brdirais | 0:2cb6ce8e07bd | 80 | |
brdirais | 0:2cb6ce8e07bd | 81 | /* Exported Types -------------------------------------------------------*/ |
brdirais | 0:2cb6ce8e07bd | 82 | |
brdirais | 0:2cb6ce8e07bd | 83 | /** @defgroup L6206_Exported_Types L6206 Exported Types |
brdirais | 0:2cb6ce8e07bd | 84 | * @{ |
brdirais | 0:2cb6ce8e07bd | 85 | */ |
brdirais | 0:2cb6ce8e07bd | 86 | |
brdirais | 0:2cb6ce8e07bd | 87 | |
brdirais | 0:2cb6ce8e07bd | 88 | |
brdirais | 0:2cb6ce8e07bd | 89 | |
brdirais | 0:2cb6ce8e07bd | 90 | /** @defgroup Initialization_Structure Initialization Structure |
brdirais | 0:2cb6ce8e07bd | 91 | * @{ |
brdirais | 0:2cb6ce8e07bd | 92 | */ |
brdirais | 0:2cb6ce8e07bd | 93 | |
brdirais | 0:2cb6ce8e07bd | 94 | typedef struct |
brdirais | 0:2cb6ce8e07bd | 95 | { |
brdirais | 0:2cb6ce8e07bd | 96 | /// Bridge configuration structure. |
brdirais | 0:2cb6ce8e07bd | 97 | dualFullBridgeConfig_t config; |
brdirais | 0:2cb6ce8e07bd | 98 | |
brdirais | 0:2cb6ce8e07bd | 99 | /// PWM frequency |
brdirais | 0:2cb6ce8e07bd | 100 | uint32_t pwmFreq[L6206_NB_MAX_BRIDGE_INPUT]; |
brdirais | 0:2cb6ce8e07bd | 101 | |
brdirais | 0:2cb6ce8e07bd | 102 | /// Motor speed |
brdirais | 0:2cb6ce8e07bd | 103 | uint16_t speed[L6206_NB_MAX_MOTORS]; |
brdirais | 0:2cb6ce8e07bd | 104 | |
brdirais | 0:2cb6ce8e07bd | 105 | /// Motor direction |
brdirais | 0:2cb6ce8e07bd | 106 | motorDir_t direction[L6206_NB_MAX_MOTORS]; |
brdirais | 0:2cb6ce8e07bd | 107 | |
brdirais | 0:2cb6ce8e07bd | 108 | /// Current motor state |
brdirais | 0:2cb6ce8e07bd | 109 | motorState_t motionState[L6206_NB_MAX_MOTORS]; |
brdirais | 0:2cb6ce8e07bd | 110 | |
brdirais | 0:2cb6ce8e07bd | 111 | /// Bridge enabled (true) or not (false) |
brdirais | 0:2cb6ce8e07bd | 112 | bool bridgeEnabled[L6206_NB_MAX_BRIDGES]; |
brdirais | 0:2cb6ce8e07bd | 113 | } deviceParams_t; |
brdirais | 0:2cb6ce8e07bd | 114 | |
brdirais | 0:2cb6ce8e07bd | 115 | |
brdirais | 0:2cb6ce8e07bd | 116 | |
brdirais | 0:2cb6ce8e07bd | 117 | |
brdirais | 0:2cb6ce8e07bd | 118 | typedef deviceParams_t L6206_Init_t; |
brdirais | 0:2cb6ce8e07bd | 119 | |
brdirais | 0:2cb6ce8e07bd | 120 | |
brdirais | 0:2cb6ce8e07bd | 121 | |
brdirais | 0:2cb6ce8e07bd | 122 | /** |
brdirais | 0:2cb6ce8e07bd | 123 | * @} |
brdirais | 0:2cb6ce8e07bd | 124 | */ |
brdirais | 0:2cb6ce8e07bd | 125 | |
brdirais | 0:2cb6ce8e07bd | 126 | |
brdirais | 0:2cb6ce8e07bd | 127 | /** @defgroup Data_Structure Data Structure |
brdirais | 0:2cb6ce8e07bd | 128 | * @{ |
brdirais | 0:2cb6ce8e07bd | 129 | */ |
brdirais | 0:2cb6ce8e07bd | 130 | |
brdirais | 0:2cb6ce8e07bd | 131 | /* ACTION --------------------------------------------------------------------* |
brdirais | 0:2cb6ce8e07bd | 132 | * Declare here the structure of component's data, if any, one variable per * |
brdirais | 0:2cb6ce8e07bd | 133 | * line without initialization. * |
brdirais | 0:2cb6ce8e07bd | 134 | * * |
brdirais | 0:2cb6ce8e07bd | 135 | * Example: * |
brdirais | 0:2cb6ce8e07bd | 136 | * typedef struct * |
brdirais | 0:2cb6ce8e07bd | 137 | * { * |
brdirais | 0:2cb6ce8e07bd | 138 | * int T0_out; * |
brdirais | 0:2cb6ce8e07bd | 139 | * int T1_out; * |
brdirais | 0:2cb6ce8e07bd | 140 | * float T0_degC; * |
brdirais | 0:2cb6ce8e07bd | 141 | * float T1_degC; * |
brdirais | 0:2cb6ce8e07bd | 142 | * } COMPONENT_Data_t; * |
brdirais | 0:2cb6ce8e07bd | 143 | *----------------------------------------------------------------------------*/ |
brdirais | 0:2cb6ce8e07bd | 144 | typedef struct |
brdirais | 0:2cb6ce8e07bd | 145 | { |
brdirais | 0:2cb6ce8e07bd | 146 | /// Function pointer to flag interrupt call back |
brdirais | 0:2cb6ce8e07bd | 147 | void (*flagInterruptCallback)(void); |
brdirais | 0:2cb6ce8e07bd | 148 | |
brdirais | 0:2cb6ce8e07bd | 149 | /// Function pointer to error handler call back |
brdirais | 0:2cb6ce8e07bd | 150 | void (*errorHandlerCallback)(uint16_t error); |
brdirais | 0:2cb6ce8e07bd | 151 | |
brdirais | 0:2cb6ce8e07bd | 152 | /// number of L6206 devices |
brdirais | 0:2cb6ce8e07bd | 153 | uint8_t numberOfDevices; |
brdirais | 0:2cb6ce8e07bd | 154 | |
brdirais | 0:2cb6ce8e07bd | 155 | /// L6206 driver instance |
brdirais | 0:2cb6ce8e07bd | 156 | uint8_t deviceInstance; |
brdirais | 0:2cb6ce8e07bd | 157 | |
brdirais | 0:2cb6ce8e07bd | 158 | /// L6206 Device Paramaters structure |
brdirais | 0:2cb6ce8e07bd | 159 | deviceParams_t devicePrm; |
brdirais | 0:2cb6ce8e07bd | 160 | } L6206_Data_t; |
brdirais | 0:2cb6ce8e07bd | 161 | |
brdirais | 0:2cb6ce8e07bd | 162 | /** |
brdirais | 0:2cb6ce8e07bd | 163 | * @} |
brdirais | 0:2cb6ce8e07bd | 164 | */ |
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 | /* Exported functions --------------------------------------------------------*/ |
brdirais | 0:2cb6ce8e07bd | 173 | |
brdirais | 0:2cb6ce8e07bd | 174 | |
brdirais | 0:2cb6ce8e07bd | 175 | /** @defgroup MotorControl_Board_Linked_Functions MotorControl Board Linked Functions |
brdirais | 0:2cb6ce8e07bd | 176 | * @{ |
brdirais | 0:2cb6ce8e07bd | 177 | */ |
brdirais | 0:2cb6ce8e07bd | 178 | ///Delay of the requested number of milliseconds |
brdirais | 0:2cb6ce8e07bd | 179 | extern void L6206_Board_Delay(void *handle, uint32_t delay); |
brdirais | 0:2cb6ce8e07bd | 180 | ///Disable the specified bridge |
brdirais | 0:2cb6ce8e07bd | 181 | extern void L6206_Board_DisableBridge(void *handle, uint8_t bridgeId); |
brdirais | 0:2cb6ce8e07bd | 182 | ///Enable the specified bridge |
brdirais | 0:2cb6ce8e07bd | 183 | extern void L6206_Board_EnableBridge(void *handle, uint8_t bridgeId, uint8_t addDelay); |
brdirais | 0:2cb6ce8e07bd | 184 | //Get the status of the flag and enable Pin |
brdirais | 0:2cb6ce8e07bd | 185 | extern uint32_t L6206_Board_GetFlagPinState(void *handle, uint8_t bridgeId); |
brdirais | 0:2cb6ce8e07bd | 186 | ///Initialise GPIOs used for L6206s |
brdirais | 0:2cb6ce8e07bd | 187 | extern void L6206_Board_GpioInit(void *handle); |
brdirais | 0:2cb6ce8e07bd | 188 | ///Set Briges Inputs PWM frequency and start it |
brdirais | 0:2cb6ce8e07bd | 189 | extern void L6206_Board_PwmSetFreq(void *handle, uint8_t bridgeInput, uint32_t newFreq, uint8_t duty); |
brdirais | 0:2cb6ce8e07bd | 190 | ///Deinitialise the PWM of the specified bridge input |
brdirais | 0:2cb6ce8e07bd | 191 | extern void L6206_Board_PwmDeInit(void *handle, uint8_t bridgeInput); |
brdirais | 0:2cb6ce8e07bd | 192 | ///Init the PWM of the specified bridge input |
brdirais | 0:2cb6ce8e07bd | 193 | extern void L6206_Board_PwmInit(void *handle, uint8_t bridgeInput); |
brdirais | 0:2cb6ce8e07bd | 194 | ///Stop the PWM of the specified bridge input |
brdirais | 0:2cb6ce8e07bd | 195 | extern void L6206_Board_PwmStop(void *handle, uint8_t bridgeInput); |
brdirais | 0:2cb6ce8e07bd | 196 | |
brdirais | 0:2cb6ce8e07bd | 197 | |
brdirais | 0:2cb6ce8e07bd | 198 | |
brdirais | 0:2cb6ce8e07bd | 199 | /** |
brdirais | 0:2cb6ce8e07bd | 200 | * @} |
brdirais | 0:2cb6ce8e07bd | 201 | */ |
brdirais | 0:2cb6ce8e07bd | 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 | #ifdef __cplusplus |
brdirais | 0:2cb6ce8e07bd | 213 | } |
brdirais | 0:2cb6ce8e07bd | 214 | #endif |
brdirais | 0:2cb6ce8e07bd | 215 | |
brdirais | 0:2cb6ce8e07bd | 216 | #endif /* #ifndef __L6206_H */ |
brdirais | 0:2cb6ce8e07bd | 217 | |
brdirais | 0:2cb6ce8e07bd | 218 | |
brdirais | 0:2cb6ce8e07bd | 219 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
brdirais | 0:2cb6ce8e07bd | 220 | |
brdirais | 0:2cb6ce8e07bd | 221 |