Personal fork of the library for direct control instead of library control

Dependencies:   X_NUCLEO_COMMON

Dependents:   Thesis_Rotating_Platform

Fork of X_NUCLEO_IHM01A1 by Arkadi Rafalovich

Committer:
Arkadi
Date:
Wed May 24 13:49:40 2017 +0000
Revision:
26:e2049a15fb15
Parent:
23:58264db10a17
Disabled PWM & direction control in library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:2887415a46cd 1 /**
Davidroid 22:ed3a6990a6eb 2 ******************************************************************************
Davidroid 22:ed3a6990a6eb 3 * @file l6474.h
Davidroid 22:ed3a6990a6eb 4 * @author IPC Rennes
Davidroid 22:ed3a6990a6eb 5 * @version V1.5.0
Davidroid 22:ed3a6990a6eb 6 * @date November 12, 2014
Davidroid 22:ed3a6990a6eb 7 * @brief Header for L6474 driver (fully integrated microstepping motor driver)
Davidroid 22:ed3a6990a6eb 8 * @note (C) COPYRIGHT 2014 STMicroelectronics
Davidroid 22:ed3a6990a6eb 9 ******************************************************************************
Davidroid 22:ed3a6990a6eb 10 * @attention
Davidroid 22:ed3a6990a6eb 11 *
Davidroid 22:ed3a6990a6eb 12 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Davidroid 22:ed3a6990a6eb 13 *
Davidroid 22:ed3a6990a6eb 14 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 22:ed3a6990a6eb 15 * are permitted provided that the following conditions are met:
Davidroid 22:ed3a6990a6eb 16 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 22:ed3a6990a6eb 17 * this list of conditions and the following disclaimer.
Davidroid 22:ed3a6990a6eb 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 22:ed3a6990a6eb 19 * this list of conditions and the following disclaimer in the documentation
Davidroid 22:ed3a6990a6eb 20 * and/or other materials provided with the distribution.
Davidroid 22:ed3a6990a6eb 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 22:ed3a6990a6eb 22 * may be used to endorse or promote products derived from this software
Davidroid 22:ed3a6990a6eb 23 * without specific prior written permission.
Davidroid 22:ed3a6990a6eb 24 *
Davidroid 22:ed3a6990a6eb 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 22:ed3a6990a6eb 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 22:ed3a6990a6eb 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 22:ed3a6990a6eb 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 22:ed3a6990a6eb 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 22:ed3a6990a6eb 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 22:ed3a6990a6eb 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 22:ed3a6990a6eb 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 22:ed3a6990a6eb 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 22:ed3a6990a6eb 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 22:ed3a6990a6eb 35 *
Davidroid 22:ed3a6990a6eb 36 ******************************************************************************
Davidroid 22:ed3a6990a6eb 37 */
Davidroid 22:ed3a6990a6eb 38
Davidroid 0:2887415a46cd 39
Davidroid 0:2887415a46cd 40 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 22:ed3a6990a6eb 41
Davidroid 0:2887415a46cd 42 #ifndef __L6474_H
Davidroid 0:2887415a46cd 43 #define __L6474_H
Davidroid 0:2887415a46cd 44
Davidroid 0:2887415a46cd 45 #ifdef __cplusplus
Davidroid 0:2887415a46cd 46 extern "C" {
Davidroid 0:2887415a46cd 47 #endif
Davidroid 0:2887415a46cd 48
Davidroid 22:ed3a6990a6eb 49
Davidroid 0:2887415a46cd 50 /* Includes ------------------------------------------------------------------*/
Davidroid 22:ed3a6990a6eb 51
Davidroid 0:2887415a46cd 52 #include "l6474_target_config.h"
Davidroid 0:2887415a46cd 53 #include "../Common/motor.h"
Davidroid 0:2887415a46cd 54
Davidroid 22:ed3a6990a6eb 55
Davidroid 22:ed3a6990a6eb 56 /* Definitions ---------------------------------------------------------------*/
Davidroid 22:ed3a6990a6eb 57
Davidroid 0:2887415a46cd 58 /** @addtogroup BSP
Davidroid 22:ed3a6990a6eb 59 * @{
Davidroid 22:ed3a6990a6eb 60 */
Davidroid 22:ed3a6990a6eb 61
Davidroid 22:ed3a6990a6eb 62 /** @addtogroup Components
Davidroid 22:ed3a6990a6eb 63 * @{
Davidroid 22:ed3a6990a6eb 64 */
Davidroid 22:ed3a6990a6eb 65
Davidroid 0:2887415a46cd 66 /** @addtogroup L6474
Davidroid 22:ed3a6990a6eb 67 * @{
Davidroid 22:ed3a6990a6eb 68 */
Davidroid 22:ed3a6990a6eb 69
Davidroid 22:ed3a6990a6eb 70 /** @defgroup L6474_Exported_Defines L6474_Exported_Defines
Davidroid 22:ed3a6990a6eb 71 * @{
Davidroid 22:ed3a6990a6eb 72 */
Davidroid 0:2887415a46cd 73
Davidroid 0:2887415a46cd 74 /// Current FW version
Davidroid 8:42e0b00b1e4d 75 #define L6474_FW_VERSION (5)
Davidroid 0:2887415a46cd 76
Davidroid 0:2887415a46cd 77 /// L6474 max number of bytes of command & arguments to set a parameter
Davidroid 0:2887415a46cd 78 #define L6474_CMD_ARG_MAX_NB_BYTES (4)
Davidroid 0:2887415a46cd 79
Davidroid 0:2887415a46cd 80 /// L6474 command + argument bytes number for GET_STATUS command
Davidroid 0:2887415a46cd 81 #define L6474_CMD_ARG_NB_BYTES_GET_STATUS (1)
Davidroid 0:2887415a46cd 82
Davidroid 0:2887415a46cd 83 /// L6474 response bytes number
Davidroid 0:2887415a46cd 84 #define L6474_RSP_NB_BYTES_GET_STATUS (2)
Davidroid 0:2887415a46cd 85
Davidroid 0:2887415a46cd 86 /// L6474 value mask for ABS_POS register
Davidroid 0:2887415a46cd 87 #define L6474_ABS_POS_VALUE_MASK ((uint32_t) 0x003FFFFF)
Davidroid 0:2887415a46cd 88
Davidroid 0:2887415a46cd 89 /// L6474 sign bit mask for ABS_POS register
Davidroid 0:2887415a46cd 90 #define L6474_ABS_POS_SIGN_BIT_MASK ((uint32_t) 0x00200000)
Davidroid 0:2887415a46cd 91
Davidroid 0:2887415a46cd 92
Davidroid 22:ed3a6990a6eb 93 /* Types ---------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 94
Davidroid 0:2887415a46cd 95 /** @defgroup L6474_Exported_Types
Davidroid 0:2887415a46cd 96 * @{
Davidroid 0:2887415a46cd 97 */
Davidroid 0:2887415a46cd 98
Davidroid 0:2887415a46cd 99 /** @defgroup L6474_Fast_Decay_Time_Options
Davidroid 0:2887415a46cd 100 * @{
Davidroid 0:2887415a46cd 101 */
Davidroid 0:2887415a46cd 102 ///TOFF_FAST values for T_FAST register
Davidroid 0:2887415a46cd 103 typedef enum {
Davidroid 0:2887415a46cd 104 L6474_TOFF_FAST_2us = ((uint8_t) 0x00 << 4),
Davidroid 0:2887415a46cd 105 L6474_TOFF_FAST_4us = ((uint8_t) 0x01 << 4),
Davidroid 0:2887415a46cd 106 L6474_TOFF_FAST_6us = ((uint8_t) 0x02 << 4),
Davidroid 0:2887415a46cd 107 L6474_TOFF_FAST_8us = ((uint8_t) 0x03 << 4),
Davidroid 0:2887415a46cd 108 L6474_TOFF_FAST_10us = ((uint8_t) 0x04 << 4),
Davidroid 0:2887415a46cd 109 L6474_TOFF_FAST_12us = ((uint8_t) 0x05 << 4),
Davidroid 0:2887415a46cd 110 L6474_TOFF_FAST_14us = ((uint8_t) 0x06 << 4),
Davidroid 0:2887415a46cd 111 L6474_TOFF_FAST_16us = ((uint8_t) 0x07 << 4),
Davidroid 0:2887415a46cd 112 L6474_TOFF_FAST_18us = ((uint8_t) 0x08 << 4),
Davidroid 0:2887415a46cd 113 L6474_TOFF_FAST_20us = ((uint8_t) 0x09 << 4),
Davidroid 0:2887415a46cd 114 L6474_TOFF_FAST_22us = ((uint8_t) 0x0A << 4),
Davidroid 0:2887415a46cd 115 L6474_TOFF_FAST_24us = ((uint8_t) 0x0B << 4),
Davidroid 0:2887415a46cd 116 L6474_TOFF_FAST_26us = ((uint8_t) 0x0C << 4),
Davidroid 0:2887415a46cd 117 L6474_TOFF_FAST_28us = ((uint8_t) 0x0D << 4),
Davidroid 0:2887415a46cd 118 L6474_TOFF_FAST_30us = ((uint8_t) 0x0E << 4),
Davidroid 0:2887415a46cd 119 L6474_TOFF_FAST_32us = ((uint8_t) 0x0F << 4)
Davidroid 0:2887415a46cd 120 } L6474_TOFF_FAST_t;
Davidroid 0:2887415a46cd 121 /**
Davidroid 0:2887415a46cd 122 * @}
Davidroid 0:2887415a46cd 123 */
Davidroid 0:2887415a46cd 124
Davidroid 0:2887415a46cd 125 /** @defgroup L6474_Fall_Step_Time_Options
Davidroid 0:2887415a46cd 126 * @{
Davidroid 0:2887415a46cd 127 */
Davidroid 0:2887415a46cd 128 ///FAST_STEP values for T_FAST register
Davidroid 0:2887415a46cd 129 typedef enum {
Davidroid 0:2887415a46cd 130 L6474_FAST_STEP_2us = ((uint8_t) 0x00),
Davidroid 0:2887415a46cd 131 L6474_FAST_STEP_4us = ((uint8_t) 0x01),
Davidroid 0:2887415a46cd 132 L6474_FAST_STEP_6us = ((uint8_t) 0x02),
Davidroid 0:2887415a46cd 133 L6474_FAST_STEP_8us = ((uint8_t) 0x03),
Davidroid 0:2887415a46cd 134 L6474_FAST_STEP_10us = ((uint8_t) 0x04),
Davidroid 0:2887415a46cd 135 L6474_FAST_STEP_12us = ((uint8_t) 0x05),
Davidroid 0:2887415a46cd 136 L6474_FAST_STEP_14us = ((uint8_t) 0x06),
Davidroid 0:2887415a46cd 137 L6474_FAST_STEP_16us = ((uint8_t) 0x07),
Davidroid 0:2887415a46cd 138 L6474_FAST_STEP_18us = ((uint8_t) 0x08),
Davidroid 0:2887415a46cd 139 L6474_FAST_STEP_20us = ((uint8_t) 0x09),
Davidroid 0:2887415a46cd 140 L6474_FAST_STEP_22us = ((uint8_t) 0x0A),
Davidroid 0:2887415a46cd 141 L6474_FAST_STEP_24us = ((uint8_t) 0x0B),
Davidroid 0:2887415a46cd 142 L6474_FAST_STEP_26us = ((uint8_t) 0x0C),
Davidroid 0:2887415a46cd 143 L6474_FAST_STEP_28us = ((uint8_t) 0x0D),
Davidroid 0:2887415a46cd 144 L6474_FAST_STEP_30us = ((uint8_t) 0x0E),
Davidroid 0:2887415a46cd 145 L6474_FAST_STEP_32us = ((uint8_t) 0x0F)
Davidroid 0:2887415a46cd 146 } L6474_FAST_STEP_t;
Davidroid 0:2887415a46cd 147 /**
Davidroid 0:2887415a46cd 148 * @}
Davidroid 0:2887415a46cd 149 */
Davidroid 0:2887415a46cd 150
Davidroid 0:2887415a46cd 151 /** @defgroup L6474_Overcurrent_Threshold_options
Davidroid 0:2887415a46cd 152 * @{
Davidroid 0:2887415a46cd 153 */
Davidroid 0:2887415a46cd 154 ///OCD_TH register
Davidroid 0:2887415a46cd 155 typedef enum {
Davidroid 0:2887415a46cd 156 L6474_OCD_TH_375mA = ((uint8_t) 0x00),
Davidroid 0:2887415a46cd 157 L6474_OCD_TH_750mA = ((uint8_t) 0x01),
Davidroid 0:2887415a46cd 158 L6474_OCD_TH_1125mA = ((uint8_t) 0x02),
Davidroid 0:2887415a46cd 159 L6474_OCD_TH_1500mA = ((uint8_t) 0x03),
Davidroid 0:2887415a46cd 160 L6474_OCD_TH_1875mA = ((uint8_t) 0x04),
Davidroid 0:2887415a46cd 161 L6474_OCD_TH_2250mA = ((uint8_t) 0x05),
Davidroid 0:2887415a46cd 162 L6474_OCD_TH_2625mA = ((uint8_t) 0x06),
Davidroid 0:2887415a46cd 163 L6474_OCD_TH_3000mA = ((uint8_t) 0x07),
Davidroid 0:2887415a46cd 164 L6474_OCD_TH_3375mA = ((uint8_t) 0x08),
Davidroid 0:2887415a46cd 165 L6474_OCD_TH_3750mA = ((uint8_t) 0x09),
Davidroid 0:2887415a46cd 166 L6474_OCD_TH_4125mA = ((uint8_t) 0x0A),
Davidroid 0:2887415a46cd 167 L6474_OCD_TH_4500mA = ((uint8_t) 0x0B),
Davidroid 0:2887415a46cd 168 L6474_OCD_TH_4875mA = ((uint8_t) 0x0C),
Davidroid 0:2887415a46cd 169 L6474_OCD_TH_5250mA = ((uint8_t) 0x0D),
Davidroid 0:2887415a46cd 170 L6474_OCD_TH_5625mA = ((uint8_t) 0x0E),
Davidroid 0:2887415a46cd 171 L6474_OCD_TH_6000mA = ((uint8_t) 0x0F)
Davidroid 0:2887415a46cd 172 } L6474_OCD_TH_t;
Davidroid 0:2887415a46cd 173 /**
Davidroid 0:2887415a46cd 174 * @}
Davidroid 0:2887415a46cd 175 */
Davidroid 0:2887415a46cd 176
Davidroid 0:2887415a46cd 177 /** @defgroup L6474_STEP_MODE_Register_Masks
Davidroid 0:2887415a46cd 178 * @{
Davidroid 0:2887415a46cd 179 */
Davidroid 0:2887415a46cd 180 ///STEP_MODE register
Davidroid 0:2887415a46cd 181 typedef enum {
Davidroid 0:2887415a46cd 182 L6474_STEP_MODE_STEP_SEL = ((uint8_t) 0x07),
Davidroid 0:2887415a46cd 183 L6474_STEP_MODE_SYNC_SEL = ((uint8_t) 0x70)
Davidroid 0:2887415a46cd 184 } L6474_STEP_MODE_Masks_t;
Davidroid 0:2887415a46cd 185 /**
Davidroid 0:2887415a46cd 186 * @}
Davidroid 0:2887415a46cd 187 */
Davidroid 0:2887415a46cd 188
Davidroid 0:2887415a46cd 189 /** @defgroup L6474_STEP_SEL_Options_For_STEP_MODE_Register
Davidroid 0:2887415a46cd 190 * @{
Davidroid 0:2887415a46cd 191 */
Davidroid 0:2887415a46cd 192 ///STEP_SEL field of STEP_MODE register
Davidroid 0:2887415a46cd 193 typedef enum {
Davidroid 0:2887415a46cd 194 L6474_STEP_SEL_1 = ((uint8_t) 0x08), //full step
Davidroid 0:2887415a46cd 195 L6474_STEP_SEL_1_2 = ((uint8_t) 0x09), //half step
Davidroid 0:2887415a46cd 196 L6474_STEP_SEL_1_4 = ((uint8_t) 0x0A), //1/4 microstep
Davidroid 0:2887415a46cd 197 L6474_STEP_SEL_1_8 = ((uint8_t) 0x0B), //1/8 microstep
Davidroid 0:2887415a46cd 198 L6474_STEP_SEL_1_16 = ((uint8_t) 0x0C) //1/16 microstep
Davidroid 0:2887415a46cd 199 } L6474_STEP_SEL_t;
Davidroid 0:2887415a46cd 200 /**
Davidroid 0:2887415a46cd 201 * @}
Davidroid 0:2887415a46cd 202 */
Davidroid 0:2887415a46cd 203
Davidroid 0:2887415a46cd 204 /** @defgroup L6474_SYNC_SEL_Options_For_STEP_MODE_Register
Davidroid 0:2887415a46cd 205 * @{
Davidroid 0:2887415a46cd 206 */
Davidroid 0:2887415a46cd 207 ///SYNC_SEL field of STEP_MODE register
Davidroid 0:2887415a46cd 208 typedef enum {
Davidroid 0:2887415a46cd 209 L6474_SYNC_SEL_1_2 = ((uint8_t) 0x80),
Davidroid 0:2887415a46cd 210 L6474_SYNC_SEL_1 = ((uint8_t) 0x90),
Davidroid 0:2887415a46cd 211 L6474_SYNC_SEL_2 = ((uint8_t) 0xA0),
Davidroid 0:2887415a46cd 212 L6474_SYNC_SEL_4 = ((uint8_t) 0xB0),
Davidroid 0:2887415a46cd 213 L6474_SYNC_SEL_8 = ((uint8_t) 0xC0),
Davidroid 0:2887415a46cd 214 L6474_SYNC_SEL_UNUSED = ((uint8_t) 0xD0)
Davidroid 0:2887415a46cd 215 } L6474_SYNC_SEL_t;
Davidroid 0:2887415a46cd 216 /**
Davidroid 0:2887415a46cd 217 * @}
Davidroid 0:2887415a46cd 218 */
Davidroid 0:2887415a46cd 219
Davidroid 0:2887415a46cd 220 /** @defgroup L6474_ALARM_EN_Register_Options
Davidroid 0:2887415a46cd 221 * @{
Davidroid 0:2887415a46cd 222 */
Davidroid 0:2887415a46cd 223 ///ALARM_EN register
Davidroid 0:2887415a46cd 224 typedef enum {
Davidroid 0:2887415a46cd 225 L6474_ALARM_EN_OVERCURRENT = ((uint8_t) 0x01),
Davidroid 0:2887415a46cd 226 L6474_ALARM_EN_THERMAL_SHUTDOWN = ((uint8_t) 0x02),
Davidroid 0:2887415a46cd 227 L6474_ALARM_EN_THERMAL_WARNING = ((uint8_t) 0x04),
Davidroid 0:2887415a46cd 228 L6474_ALARM_EN_UNDERVOLTAGE = ((uint8_t) 0x08),
Davidroid 0:2887415a46cd 229 L6474_ALARM_EN_SW_TURN_ON = ((uint8_t) 0x40),
Davidroid 0:2887415a46cd 230 L6474_ALARM_EN_WRONG_NPERF_CMD = ((uint8_t) 0x80)
Davidroid 0:2887415a46cd 231 } L6474_ALARM_EN_t;
Davidroid 0:2887415a46cd 232 /**
Davidroid 0:2887415a46cd 233 * @}
Davidroid 0:2887415a46cd 234 */
Davidroid 0:2887415a46cd 235
Davidroid 0:2887415a46cd 236 /** @defgroup L6474_CONFIG_Register_Masks
Davidroid 0:2887415a46cd 237 * @{
Davidroid 0:2887415a46cd 238 */
Davidroid 0:2887415a46cd 239 ///CONFIG register
Davidroid 0:2887415a46cd 240 typedef enum {
Davidroid 0:2887415a46cd 241 L6474_CONFIG_OSC_SEL = ((uint16_t) 0x0007),
Davidroid 0:2887415a46cd 242 L6474_CONFIG_EXT_CLK = ((uint16_t) 0x0008),
Davidroid 0:2887415a46cd 243 L6474_CONFIG_EN_TQREG = ((uint16_t) 0x0020),
Davidroid 0:2887415a46cd 244 L6474_CONFIG_OC_SD = ((uint16_t) 0x0080),
Davidroid 0:2887415a46cd 245 L6474_CONFIG_POW_SR = ((uint16_t) 0x0300),
Davidroid 0:2887415a46cd 246 L6474_CONFIG_TOFF = ((uint16_t) 0x7C00)
Davidroid 0:2887415a46cd 247 } L6474_CONFIG_Masks_t;
Davidroid 0:2887415a46cd 248 /**
Davidroid 0:2887415a46cd 249 * @}
Davidroid 0:2887415a46cd 250 */
Davidroid 0:2887415a46cd 251
Davidroid 0:2887415a46cd 252 /** @defgroup L6474_Clock_Source_Options_For_CONFIG_Register
Davidroid 0:2887415a46cd 253 * @{
Davidroid 0:2887415a46cd 254 */
Davidroid 0:2887415a46cd 255 ///Clock source option for CONFIG register
Davidroid 0:2887415a46cd 256 typedef enum {
Davidroid 0:2887415a46cd 257 L6474_CONFIG_INT_16MHZ = ((uint16_t) 0x0000),
Davidroid 0:2887415a46cd 258 L6474_CONFIG_INT_16MHZ_OSCOUT_2MHZ = ((uint16_t) 0x0008),
Davidroid 0:2887415a46cd 259 L6474_CONFIG_INT_16MHZ_OSCOUT_4MHZ = ((uint16_t) 0x0009),
Davidroid 0:2887415a46cd 260 L6474_CONFIG_INT_16MHZ_OSCOUT_8MHZ = ((uint16_t) 0x000A),
Davidroid 0:2887415a46cd 261 L6474_CONFIG_INT_16MHZ_OSCOUT_16MHZ = ((uint16_t) 0x000B),
Davidroid 0:2887415a46cd 262 L6474_CONFIG_EXT_8MHZ_XTAL_DRIVE = ((uint16_t) 0x0004),
Davidroid 0:2887415a46cd 263 L6474_CONFIG_EXT_16MHZ_XTAL_DRIVE = ((uint16_t) 0x0005),
Davidroid 0:2887415a46cd 264 L6474_CONFIG_EXT_24MHZ_XTAL_DRIVE = ((uint16_t) 0x0006),
Davidroid 0:2887415a46cd 265 L6474_CONFIG_EXT_32MHZ_XTAL_DRIVE = ((uint16_t) 0x0007),
Davidroid 0:2887415a46cd 266 L6474_CONFIG_EXT_8MHZ_OSCOUT_INVERT = ((uint16_t) 0x000C),
Davidroid 0:2887415a46cd 267 L6474_CONFIG_EXT_16MHZ_OSCOUT_INVERT = ((uint16_t) 0x000D),
Davidroid 0:2887415a46cd 268 L6474_CONFIG_EXT_24MHZ_OSCOUT_INVERT = ((uint16_t) 0x000E),
Davidroid 0:2887415a46cd 269 L6474_CONFIG_EXT_32MHZ_OSCOUT_INVERT = ((uint16_t) 0x000F)
Davidroid 0:2887415a46cd 270 } L6474_CONFIG_OSC_MGMT_t;
Davidroid 0:2887415a46cd 271 /**
Davidroid 0:2887415a46cd 272 * @}
Davidroid 0:2887415a46cd 273 */
Davidroid 0:2887415a46cd 274
Davidroid 0:2887415a46cd 275 /** @defgroup L6474_External_Torque_Regulation_Options_For_CONFIG_Register
Davidroid 0:2887415a46cd 276 * @{
Davidroid 0:2887415a46cd 277 */
Davidroid 0:2887415a46cd 278 ///External Torque regulation options for CONFIG register
Davidroid 0:2887415a46cd 279 typedef enum {
Davidroid 0:2887415a46cd 280 L6474_CONFIG_EN_TQREG_TVAL_USED = ((uint16_t) 0x0000),
Davidroid 0:2887415a46cd 281 L6474_CONFIG_EN_TQREG_ADC_OUT = ((uint16_t) 0x0020)
Davidroid 0:2887415a46cd 282 } L6474_CONFIG_EN_TQREG_t;
Davidroid 0:2887415a46cd 283 /**
Davidroid 0:2887415a46cd 284 * @}
Davidroid 0:2887415a46cd 285 */
Davidroid 0:2887415a46cd 286
Davidroid 0:2887415a46cd 287 /** @defgroup L6474_Over_Current_Shutdown_Options_For_CONFIG_Register
Davidroid 0:2887415a46cd 288 * @{
Davidroid 0:2887415a46cd 289 */
Davidroid 0:2887415a46cd 290 ///Over Current Shutdown options for CONFIG register
Davidroid 0:2887415a46cd 291 typedef enum {
Davidroid 0:2887415a46cd 292 L6474_CONFIG_OC_SD_DISABLE = ((uint16_t) 0x0000),
Davidroid 0:2887415a46cd 293 L6474_CONFIG_OC_SD_ENABLE = ((uint16_t) 0x0080)
Davidroid 0:2887415a46cd 294 } L6474_CONFIG_OC_SD_t;
Davidroid 0:2887415a46cd 295 /**
Davidroid 0:2887415a46cd 296 * @}
Davidroid 0:2887415a46cd 297 */
Davidroid 0:2887415a46cd 298
Davidroid 0:2887415a46cd 299 /** @defgroup L6474_Power_Bridge_Output_Slew_Rate_Options
Davidroid 0:2887415a46cd 300 * @{
Davidroid 0:2887415a46cd 301 */
Davidroid 0:2887415a46cd 302 /// POW_SR values for CONFIG register
Davidroid 0:2887415a46cd 303 typedef enum {
Davidroid 0:2887415a46cd 304 L6474_CONFIG_SR_320V_us =((uint16_t)0x0000),
Davidroid 0:2887415a46cd 305 L6474_CONFIG_SR_075V_us =((uint16_t)0x0100),
Davidroid 0:2887415a46cd 306 L6474_CONFIG_SR_110V_us =((uint16_t)0x0200),
Davidroid 0:2887415a46cd 307 L6474_CONFIG_SR_260V_us =((uint16_t)0x0300)
Davidroid 0:2887415a46cd 308 } L6474_CONFIG_POW_SR_t;
Davidroid 0:2887415a46cd 309 /**
Davidroid 0:2887415a46cd 310 * @}
Davidroid 0:2887415a46cd 311 */
Davidroid 0:2887415a46cd 312
Davidroid 0:2887415a46cd 313 /** @defgroup L6474_Off_Time_Options
Davidroid 0:2887415a46cd 314 * @{
Davidroid 0:2887415a46cd 315 */
Davidroid 0:2887415a46cd 316 /// TOFF values for CONFIG register
Davidroid 0:2887415a46cd 317 typedef enum {
Davidroid 0:2887415a46cd 318 L6474_CONFIG_TOFF_004us = (((uint16_t) 0x01) << 10),
Davidroid 0:2887415a46cd 319 L6474_CONFIG_TOFF_008us = (((uint16_t) 0x02) << 10),
Davidroid 0:2887415a46cd 320 L6474_CONFIG_TOFF_012us = (((uint16_t) 0x03) << 10),
Davidroid 0:2887415a46cd 321 L6474_CONFIG_TOFF_016us = (((uint16_t) 0x04) << 10),
Davidroid 0:2887415a46cd 322 L6474_CONFIG_TOFF_020us = (((uint16_t) 0x05) << 10),
Davidroid 0:2887415a46cd 323 L6474_CONFIG_TOFF_024us = (((uint16_t) 0x06) << 10),
Davidroid 0:2887415a46cd 324 L6474_CONFIG_TOFF_028us = (((uint16_t) 0x07) << 10),
Davidroid 0:2887415a46cd 325 L6474_CONFIG_TOFF_032us = (((uint16_t) 0x08) << 10),
Davidroid 0:2887415a46cd 326 L6474_CONFIG_TOFF_036us = (((uint16_t) 0x09) << 10),
Davidroid 0:2887415a46cd 327 L6474_CONFIG_TOFF_040us = (((uint16_t) 0x0A) << 10),
Davidroid 0:2887415a46cd 328 L6474_CONFIG_TOFF_044us = (((uint16_t) 0x0B) << 10),
Davidroid 0:2887415a46cd 329 L6474_CONFIG_TOFF_048us = (((uint16_t) 0x0C) << 10),
Davidroid 0:2887415a46cd 330 L6474_CONFIG_TOFF_052us = (((uint16_t) 0x0D) << 10),
Davidroid 0:2887415a46cd 331 L6474_CONFIG_TOFF_056us = (((uint16_t) 0x0E) << 10),
Davidroid 0:2887415a46cd 332 L6474_CONFIG_TOFF_060us = (((uint16_t) 0x0F) << 10),
Davidroid 0:2887415a46cd 333 L6474_CONFIG_TOFF_064us = (((uint16_t) 0x10) << 10),
Davidroid 0:2887415a46cd 334 L6474_CONFIG_TOFF_068us = (((uint16_t) 0x11) << 10),
Davidroid 0:2887415a46cd 335 L6474_CONFIG_TOFF_072us = (((uint16_t) 0x12) << 10),
Davidroid 0:2887415a46cd 336 L6474_CONFIG_TOFF_076us = (((uint16_t) 0x13) << 10),
Davidroid 0:2887415a46cd 337 L6474_CONFIG_TOFF_080us = (((uint16_t) 0x14) << 10),
Davidroid 0:2887415a46cd 338 L6474_CONFIG_TOFF_084us = (((uint16_t) 0x15) << 10),
Davidroid 0:2887415a46cd 339 L6474_CONFIG_TOFF_088us = (((uint16_t) 0x16) << 10),
Davidroid 0:2887415a46cd 340 L6474_CONFIG_TOFF_092us = (((uint16_t) 0x17) << 10),
Davidroid 0:2887415a46cd 341 L6474_CONFIG_TOFF_096us = (((uint16_t) 0x18) << 10),
Davidroid 0:2887415a46cd 342 L6474_CONFIG_TOFF_100us = (((uint16_t) 0x19) << 10),
Davidroid 0:2887415a46cd 343 L6474_CONFIG_TOFF_104us = (((uint16_t) 0x1A) << 10),
Davidroid 0:2887415a46cd 344 L6474_CONFIG_TOFF_108us = (((uint16_t) 0x1B) << 10),
Davidroid 0:2887415a46cd 345 L6474_CONFIG_TOFF_112us = (((uint16_t) 0x1C) << 10),
Davidroid 0:2887415a46cd 346 L6474_CONFIG_TOFF_116us = (((uint16_t) 0x1D) << 10),
Davidroid 0:2887415a46cd 347 L6474_CONFIG_TOFF_120us = (((uint16_t) 0x1E) << 10),
Davidroid 0:2887415a46cd 348 L6474_CONFIG_TOFF_124us = (((uint16_t) 0x1F) << 10)
Davidroid 0:2887415a46cd 349 } L6474_CONFIG_TOFF_t;
Davidroid 0:2887415a46cd 350 /**
Davidroid 0:2887415a46cd 351 * @}
Davidroid 0:2887415a46cd 352 */
Davidroid 0:2887415a46cd 353
Davidroid 0:2887415a46cd 354 /** @defgroup L6474_STATUS_Register_Bit_Masks
Davidroid 0:2887415a46cd 355 * @{
Davidroid 0:2887415a46cd 356 */
Davidroid 0:2887415a46cd 357 ///STATUS Register Bit Masks
Davidroid 0:2887415a46cd 358 typedef enum {
Davidroid 0:2887415a46cd 359 L6474_STATUS_HIZ = (((uint16_t) 0x0001)),
Davidroid 0:2887415a46cd 360 L6474_STATUS_DIR = (((uint16_t) 0x0010)),
Davidroid 0:2887415a46cd 361 L6474_STATUS_NOTPERF_CMD = (((uint16_t) 0x0080)),
Davidroid 0:2887415a46cd 362 L6474_STATUS_WRONG_CMD = (((uint16_t) 0x0100)),
Davidroid 0:2887415a46cd 363 L6474_STATUS_UVLO = (((uint16_t) 0x0200)),
Davidroid 0:2887415a46cd 364 L6474_STATUS_TH_WRN = (((uint16_t) 0x0400)),
Davidroid 0:2887415a46cd 365 L6474_STATUS_TH_SD = (((uint16_t) 0x0800)),
Davidroid 0:2887415a46cd 366 L6474_STATUS_OCD = (((uint16_t) 0x1000))
Davidroid 0:2887415a46cd 367 } L6474_STATUS_Masks_t;
Davidroid 0:2887415a46cd 368 /**
Davidroid 0:2887415a46cd 369 * @}
Davidroid 0:2887415a46cd 370 */
Davidroid 0:2887415a46cd 371
Davidroid 0:2887415a46cd 372 /** @defgroup L6474_Direction_Field_Of_STATUS_Register
Davidroid 0:2887415a46cd 373 * @{
Davidroid 0:2887415a46cd 374 */
Davidroid 0:2887415a46cd 375 ///Diretion field of STATUS register
Davidroid 0:2887415a46cd 376 typedef enum {
Davidroid 0:2887415a46cd 377 L6474_STATUS_DIR_FORWARD = (((uint16_t) 0x0001) << 4),
Davidroid 0:2887415a46cd 378 L6474_STATUS_DIR_REVERSE = (((uint16_t) 0x0000) << 4)
Davidroid 0:2887415a46cd 379 } L6474_STATUS_DIR_t;
Davidroid 0:2887415a46cd 380 /**
Davidroid 0:2887415a46cd 381 * @}
Davidroid 0:2887415a46cd 382 */
Davidroid 0:2887415a46cd 383
Davidroid 0:2887415a46cd 384 /** @defgroup L6474_Internal_Register_Addresses
Davidroid 0:2887415a46cd 385 * @{
Davidroid 0:2887415a46cd 386 */
Davidroid 0:2887415a46cd 387 /// Internal L6474 register addresses
Davidroid 0:2887415a46cd 388 typedef enum {
Davidroid 0:2887415a46cd 389 L6474_ABS_POS = ((uint8_t) 0x01),
Davidroid 0:2887415a46cd 390 L6474_EL_POS = ((uint8_t) 0x02),
Davidroid 0:2887415a46cd 391 L6474_MARK = ((uint8_t) 0x03),
Davidroid 0:2887415a46cd 392 L6474_RESERVED_REG01 = ((uint8_t) 0x04),
Davidroid 0:2887415a46cd 393 L6474_RESERVED_REG02 = ((uint8_t) 0x05),
Davidroid 0:2887415a46cd 394 L6474_RESERVED_REG03 = ((uint8_t) 0x06),
Davidroid 0:2887415a46cd 395 L6474_RESERVED_REG04 = ((uint8_t) 0x07),
Davidroid 0:2887415a46cd 396 L6474_RESERVED_REG05 = ((uint8_t) 0x08),
Davidroid 0:2887415a46cd 397 L6474_RESERVED_REG06 = ((uint8_t) 0x15),
Davidroid 0:2887415a46cd 398 L6474_TVAL = ((uint8_t) 0x09),
Davidroid 0:2887415a46cd 399 L6474_RESERVED_REG07 = ((uint8_t) 0x0A),
Davidroid 0:2887415a46cd 400 L6474_RESERVED_REG08 = ((uint8_t) 0x0B),
Davidroid 0:2887415a46cd 401 L6474_RESERVED_REG09 = ((uint8_t) 0x0C),
Davidroid 0:2887415a46cd 402 L6474_RESERVED_REG10 = ((uint8_t) 0x0D),
Davidroid 0:2887415a46cd 403 L6474_T_FAST = ((uint8_t) 0x0E),
Davidroid 0:2887415a46cd 404 L6474_TON_MIN = ((uint8_t) 0x0F),
Davidroid 0:2887415a46cd 405 L6474_TOFF_MIN = ((uint8_t) 0x10),
Davidroid 0:2887415a46cd 406 L6474_RESERVED_REG11 = ((uint8_t) 0x11),
Davidroid 0:2887415a46cd 407 L6474_ADC_OUT = ((uint8_t) 0x12),
Davidroid 0:2887415a46cd 408 L6474_OCD_TH = ((uint8_t) 0x13),
Davidroid 0:2887415a46cd 409 L6474_RESERVED_REG12 = ((uint8_t) 0x14),
Davidroid 0:2887415a46cd 410 L6474_STEP_MODE = ((uint8_t) 0x16),
Davidroid 0:2887415a46cd 411 L6474_ALARM_EN = ((uint8_t) 0x17),
Davidroid 0:2887415a46cd 412 L6474_CONFIG = ((uint8_t) 0x18),
Davidroid 0:2887415a46cd 413 L6474_STATUS = ((uint8_t) 0x19),
Davidroid 0:2887415a46cd 414 L6474_RESERVED_REG13 = ((uint8_t) 0x1A),
Davidroid 0:2887415a46cd 415 L6474_RESERVED_REG14 = ((uint8_t) 0x1B),
Davidroid 0:2887415a46cd 416 L6474_INEXISTENT_REG = ((uint8_t) 0x1F)
Davidroid 0:2887415a46cd 417 } L6474_Registers_t;
Davidroid 0:2887415a46cd 418 /**
Davidroid 0:2887415a46cd 419 * @}
Davidroid 0:2887415a46cd 420 */
Davidroid 0:2887415a46cd 421
Davidroid 0:2887415a46cd 422 /** @defgroup L6474_Command_Set
Davidroid 0:2887415a46cd 423 * @{
Davidroid 0:2887415a46cd 424 */
Davidroid 0:2887415a46cd 425 /// L6474 command set
Davidroid 0:2887415a46cd 426 typedef enum {
Davidroid 0:2887415a46cd 427 L6474_NOP = ((uint8_t) 0x00),
Davidroid 0:2887415a46cd 428 L6474_SET_PARAM = ((uint8_t) 0x00),
Davidroid 0:2887415a46cd 429 L6474_GET_PARAM = ((uint8_t) 0x20),
Davidroid 0:2887415a46cd 430 L6474_ENABLE = ((uint8_t) 0xB8),
Davidroid 0:2887415a46cd 431 L6474_DISABLE = ((uint8_t) 0xA8),
Davidroid 0:2887415a46cd 432 L6474_GET_STATUS = ((uint8_t) 0xD0),
Davidroid 0:2887415a46cd 433 L6474_RESERVED_CMD1 = ((uint8_t) 0xEB),
Davidroid 0:2887415a46cd 434 L6474_RESERVED_CMD2 = ((uint8_t) 0xF8)
Davidroid 0:2887415a46cd 435 } L6474_Commands_t;
Davidroid 0:2887415a46cd 436
Davidroid 22:ed3a6990a6eb 437 /**
Davidroid 22:ed3a6990a6eb 438 * @brief L6474 driver initialization structure definition.
Davidroid 22:ed3a6990a6eb 439 */
Davidroid 22:ed3a6990a6eb 440 /* ACTION --------------------------------------------------------------------*
Davidroid 22:ed3a6990a6eb 441 * Declare here the component's initialization structure, if any, one *
Davidroid 22:ed3a6990a6eb 442 * variable per line without initialization. *
Davidroid 22:ed3a6990a6eb 443 * *
Davidroid 22:ed3a6990a6eb 444 * Example: *
Davidroid 22:ed3a6990a6eb 445 * typedef struct *
Davidroid 22:ed3a6990a6eb 446 * { *
Davidroid 22:ed3a6990a6eb 447 * int frequency; *
Davidroid 22:ed3a6990a6eb 448 * int update_mode; *
Davidroid 22:ed3a6990a6eb 449 * } COMPONENT_Init_t; *
Davidroid 22:ed3a6990a6eb 450 *----------------------------------------------------------------------------*/
Davidroid 18:2d6ab2b93685 451 typedef struct
Davidroid 18:2d6ab2b93685 452 {
Davidroid 22:ed3a6990a6eb 453 /* Acceleration rate in step/s2. Range: (0..+inf). */
Davidroid 22:ed3a6990a6eb 454 int acceleration_step_s2;
Davidroid 18:2d6ab2b93685 455
Davidroid 22:ed3a6990a6eb 456 /* Deceleration rate in step/s2. Range: (0..+inf). */
Davidroid 22:ed3a6990a6eb 457 int deceleration_step_s2;
Davidroid 18:2d6ab2b93685 458
Davidroid 22:ed3a6990a6eb 459 /* Maximum speed in step/s. Range: (30..10000]. */
Davidroid 22:ed3a6990a6eb 460 int maximum_speed_step_s;
Davidroid 18:2d6ab2b93685 461
Davidroid 22:ed3a6990a6eb 462 /* Minimum speed in step/s. Range: [30..10000). */
Davidroid 22:ed3a6990a6eb 463 int minimum_speed_step_s;
Davidroid 18:2d6ab2b93685 464
Davidroid 22:ed3a6990a6eb 465 /* Torque regulation current in mA. Range: 31.25mA to 4000mA. */
Davidroid 22:ed3a6990a6eb 466 float torque_regulation_current_mA;
Davidroid 18:2d6ab2b93685 467
Davidroid 22:ed3a6990a6eb 468 /* Overcurrent threshold (OCD_TH register). */
Davidroid 22:ed3a6990a6eb 469 L6474_OCD_TH_t overcurrent_threshold;
Davidroid 18:2d6ab2b93685 470
Davidroid 22:ed3a6990a6eb 471 /* Overcurrent shutwdown (OC_SD field of CONFIG register). */
Davidroid 22:ed3a6990a6eb 472 L6474_CONFIG_OC_SD_t overcurrent_shutwdown;
Davidroid 18:2d6ab2b93685 473
Davidroid 22:ed3a6990a6eb 474 /* Torque regulation method (EN_TQREG field of CONFIG register). */
Davidroid 22:ed3a6990a6eb 475 L6474_CONFIG_EN_TQREG_t torque_regulation_method;
Davidroid 22:ed3a6990a6eb 476
Davidroid 22:ed3a6990a6eb 477 /* Step selection (STEP_SEL field of STEP_MODE register). */
Davidroid 22:ed3a6990a6eb 478 L6474_STEP_SEL_t step_selection;
Davidroid 18:2d6ab2b93685 479
Davidroid 22:ed3a6990a6eb 480 /* Sync selection (SYNC_SEL field of STEP_MODE register). */
Davidroid 22:ed3a6990a6eb 481 L6474_SYNC_SEL_t sync_selection;
Davidroid 18:2d6ab2b93685 482
Davidroid 22:ed3a6990a6eb 483 /* Fall time value (T_FAST field of T_FAST register). Range: 2us to 32us. */
Davidroid 22:ed3a6990a6eb 484 L6474_FAST_STEP_t fall_time;
Davidroid 18:2d6ab2b93685 485
Davidroid 22:ed3a6990a6eb 486 /* Maximum fast decay time (T_OFF field of T_FAST register). Range: 2us to 32us. */
Davidroid 22:ed3a6990a6eb 487 L6474_TOFF_FAST_t maximum_fast_decay_time;
Davidroid 18:2d6ab2b93685 488
Davidroid 22:ed3a6990a6eb 489 /* Minimum ON time in us (TON_MIN register). Range: 0.5us to 64us. */
Davidroid 22:ed3a6990a6eb 490 float minimum_ON_time_us;
Davidroid 18:2d6ab2b93685 491
Davidroid 22:ed3a6990a6eb 492 /* Minimum OFF time in us (TOFF_MIN register). Range: 0.5us to 64us. */
Davidroid 22:ed3a6990a6eb 493 float minimum_OFF_time_us;
Davidroid 18:2d6ab2b93685 494
Davidroid 22:ed3a6990a6eb 495 /* Target Swicthing Period (field TOFF of CONFIG register). */
Davidroid 22:ed3a6990a6eb 496 L6474_CONFIG_TOFF_t target_swicthing_period;
Davidroid 18:2d6ab2b93685 497
Davidroid 22:ed3a6990a6eb 498 /* Slew rate (POW_SR field of CONFIG register). */
Davidroid 22:ed3a6990a6eb 499 L6474_CONFIG_POW_SR_t slew_rate;
Davidroid 18:2d6ab2b93685 500
Davidroid 22:ed3a6990a6eb 501 /* Clock setting (OSC_CLK_SEL field of CONFIG register). */
Davidroid 22:ed3a6990a6eb 502 L6474_CONFIG_OSC_MGMT_t clock;
Davidroid 22:ed3a6990a6eb 503
Davidroid 22:ed3a6990a6eb 504 /* Alarm (ALARM_EN register). */
Davidroid 22:ed3a6990a6eb 505 int alarm;
Davidroid 22:ed3a6990a6eb 506 } L6474_Init_t;
Davidroid 18:2d6ab2b93685 507
Davidroid 0:2887415a46cd 508 /**
Davidroid 22:ed3a6990a6eb 509 * @brief L6474 driver data structure definition.
Davidroid 22:ed3a6990a6eb 510 */
Davidroid 22:ed3a6990a6eb 511 /* ACTION --------------------------------------------------------------------*
Davidroid 22:ed3a6990a6eb 512 * Declare here the structure of component's data, if any, one variable per *
Davidroid 22:ed3a6990a6eb 513 * line without initialization. *
Davidroid 22:ed3a6990a6eb 514 * *
Davidroid 22:ed3a6990a6eb 515 * Example: *
Davidroid 22:ed3a6990a6eb 516 * typedef struct *
Davidroid 22:ed3a6990a6eb 517 * { *
Davidroid 22:ed3a6990a6eb 518 * int T0_out; *
Davidroid 22:ed3a6990a6eb 519 * int T1_out; *
Davidroid 22:ed3a6990a6eb 520 * float T0_degC; *
Davidroid 22:ed3a6990a6eb 521 * float T1_degC; *
Davidroid 22:ed3a6990a6eb 522 * } COMPONENT_Data_t; *
Davidroid 22:ed3a6990a6eb 523 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 524 typedef struct
Davidroid 0:2887415a46cd 525 {
Davidroid 0:2887415a46cd 526 /// Function pointer to flag interrupt call back
Davidroid 0:2887415a46cd 527 void (*flagInterruptCallback)(void);
Davidroid 0:2887415a46cd 528 /// Function pointer to error handler call back
Davidroid 0:2887415a46cd 529 void (*errorHandlerCallback)(uint16_t error);
Davidroid 0:2887415a46cd 530 bool spiPreemtionByIsr; // = FALSE;
Davidroid 0:2887415a46cd 531 bool isrFlag; // = FALSE;
Davidroid 0:2887415a46cd 532 /// L6474 Device Paramaters structure
Davidroid 0:2887415a46cd 533 deviceParams_t devicePrm; //[MAX_NUMBER_OF_DEVICES];
Davidroid 18:2d6ab2b93685 534 uint8_t number_of_devices;
Davidroid 18:2d6ab2b93685 535 uint8_t device_instance;
Davidroid 5:d3c78f12a78d 536 uint8_t spiTxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
Davidroid 5:d3c78f12a78d 537 uint8_t spiRxBursts[L6474_CMD_ARG_MAX_NB_BYTES][MAX_NUMBER_OF_DEVICES];
Davidroid 22:ed3a6990a6eb 538 } L6474_Data_t;
Davidroid 0:2887415a46cd 539
Davidroid 0:2887415a46cd 540
Davidroid 22:ed3a6990a6eb 541 /* Functions -----------------------------------------------------------------*/
Davidroid 22:ed3a6990a6eb 542
Davidroid 22:ed3a6990a6eb 543 /** @addtogroup BSP
Davidroid 22:ed3a6990a6eb 544 * @{
Davidroid 22:ed3a6990a6eb 545 */
Davidroid 0:2887415a46cd 546
Davidroid 22:ed3a6990a6eb 547 /** @addtogroup Components
Davidroid 22:ed3a6990a6eb 548 * @{
Davidroid 22:ed3a6990a6eb 549 */
Davidroid 22:ed3a6990a6eb 550
Davidroid 22:ed3a6990a6eb 551 /** @addtogroup L6474
Davidroid 22:ed3a6990a6eb 552 * @{
Davidroid 22:ed3a6990a6eb 553 */
Davidroid 22:ed3a6990a6eb 554
Davidroid 22:ed3a6990a6eb 555 /** @defgroup L6474_Imported_Functions L6474_Imported_Functions
Davidroid 22:ed3a6990a6eb 556 * @{
Davidroid 22:ed3a6990a6eb 557 */
Davidroid 0:2887415a46cd 558
Davidroid 0:2887415a46cd 559 /* ACTION --------------------------------------------------------------------*
Davidroid 23:58264db10a17 560 * Declare here extern platform-dependent APIs you might need (e.g.: I/O and *
Davidroid 23:58264db10a17 561 * interrupt related functions), and implement them in a glue-logic file on *
Davidroid 23:58264db10a17 562 * the target environment, for example within the "x_nucleo_board.c" file. *
Davidroid 23:58264db10a17 563 * E.g.: *
Davidroid 22:ed3a6990a6eb 564 * extern Status_t COMPONENT_IO_Init (void *handle); *
Davidroid 22:ed3a6990a6eb 565 * extern Status_t COMPONENT_IO_Read (handle, buf, regadd, bytes); *
Davidroid 22:ed3a6990a6eb 566 * extern Status_t COMPONENT_IO_Write(handle, buf, regadd, bytes); *
Davidroid 22:ed3a6990a6eb 567 * extern void COMPONENT_IO_ITConfig(void); *
Davidroid 0:2887415a46cd 568 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 569 ///Delay of the requested number of milliseconds
Davidroid 0:2887415a46cd 570 extern void L6474_Delay(void *handle, uint32_t delay);
Davidroid 0:2887415a46cd 571 ///Enable Irq
Davidroid 0:2887415a46cd 572 extern void L6474_EnableIrq(void *handle);
Davidroid 0:2887415a46cd 573 ///Disable Irq
Davidroid 0:2887415a46cd 574 extern void L6474_DisableIrq(void *handle);
Davidroid 0:2887415a46cd 575 ///Set PWM1 frequency and start it
Davidroid 0:2887415a46cd 576 extern void L6474_Pwm1SetFreq(void *handle, uint16_t newFreq);
Davidroid 0:2887415a46cd 577 ///Set PWM2 frequency and start it
Davidroid 0:2887415a46cd 578 extern void L6474_Pwm2SetFreq(void *handle, uint16_t newFreq);
Davidroid 0:2887415a46cd 579 ///Set PWM3 frequency and start it
Davidroid 0:2887415a46cd 580 extern void L6474_Pwm3SetFreq(void *handle, uint16_t newFreq);
Davidroid 0:2887415a46cd 581 ///Init the PWM
Davidroid 0:2887415a46cd 582 extern void L6474_PwmInit(void *handle);
Davidroid 0:2887415a46cd 583 ///Stop the PWM
Davidroid 0:2887415a46cd 584 extern void L6474_PwmStop(void *handle);
Davidroid 0:2887415a46cd 585 ///Reset the L6474 reset pin
Davidroid 0:2887415a46cd 586 extern void L6474_ReleaseReset(void *handle);
Davidroid 0:2887415a46cd 587 ///Set the L6474 reset pin
Davidroid 0:2887415a46cd 588 extern void L6474_Reset(void *handle);
Davidroid 0:2887415a46cd 589 ///Set direction GPIO
Davidroid 0:2887415a46cd 590 extern void L6474_SetDirectionGpio(void *handle, uint8_t gpioState);
Davidroid 0:2887415a46cd 591 ///Write bytes to the L6474s via SPI
Davidroid 0:2887415a46cd 592 extern uint8_t L6474_SpiWriteBytes(void *handle, uint8_t *pByteToTransmit, uint8_t *pReceivedByte);
Davidroid 0:2887415a46cd 593
Davidroid 0:2887415a46cd 594 #ifdef __cplusplus
Davidroid 0:2887415a46cd 595 }
Davidroid 0:2887415a46cd 596 #endif
Davidroid 0:2887415a46cd 597
Davidroid 0:2887415a46cd 598 #endif /* #ifndef __L6474_H */
Davidroid 0:2887415a46cd 599
Davidroid 0:2887415a46cd 600 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/