Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of X_NUCLEO_IHM01A1 by
Components/l6474/l6474.h@23:58264db10a17, 2016-02-15 (annotated)
- Committer:
- Davidroid
- Date:
- Mon Feb 15 15:54:56 2016 +0000
- Revision:
- 23:58264db10a17
- Parent:
- 22:ed3a6990a6eb
- Child:
- 24:258f0f60d30c
+ Updated some comments.
Who changed what in which revision?
User | Revision | Line number | New 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>© 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****/ |