Added ST_INTERFACES library.

Dependencies:   ST_INTERFACES

Fork of X_NUCLEO_IHM04A1 by ST

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?

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 0:2cb6ce8e07bd 12 * <h2><center>&copy; 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