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:
Davidroid
Date:
Wed Oct 14 15:12:18 2015 +0000
Revision:
0:2887415a46cd
Child:
1:b38ebb8ea286
Library to handle the X_NUCLEO_IHM01A1 Motor Control Expansion Board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Davidroid 0:2887415a46cd 1 /**
Davidroid 0:2887415a46cd 2 ******************************************************************************
Davidroid 0:2887415a46cd 3 * @file l6474_class.h
Davidroid 0:2887415a46cd 4 * @author IPC Rennes
Davidroid 0:2887415a46cd 5 * @version V1.5.0
Davidroid 0:2887415a46cd 6 * @date November 12, 2014
Davidroid 0:2887415a46cd 7 * @brief L6474 driver (fully integrated microstepping motor driver)
Davidroid 0:2887415a46cd 8 * @note (C) COPYRIGHT 2014 STMicroelectronics
Davidroid 0:2887415a46cd 9 ******************************************************************************
Davidroid 0:2887415a46cd 10 * @attention
Davidroid 0:2887415a46cd 11 *
Davidroid 0:2887415a46cd 12 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Davidroid 0:2887415a46cd 13 *
Davidroid 0:2887415a46cd 14 * Redistribution and use in source and binary forms, with or without modification,
Davidroid 0:2887415a46cd 15 * are permitted provided that the following conditions are met:
Davidroid 0:2887415a46cd 16 * 1. Redistributions of source code must retain the above copyright notice,
Davidroid 0:2887415a46cd 17 * this list of conditions and the following disclaimer.
Davidroid 0:2887415a46cd 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
Davidroid 0:2887415a46cd 19 * this list of conditions and the following disclaimer in the documentation
Davidroid 0:2887415a46cd 20 * and/or other materials provided with the distribution.
Davidroid 0:2887415a46cd 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Davidroid 0:2887415a46cd 22 * may be used to endorse or promote products derived from this software
Davidroid 0:2887415a46cd 23 * without specific prior written permission.
Davidroid 0:2887415a46cd 24 *
Davidroid 0:2887415a46cd 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Davidroid 0:2887415a46cd 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Davidroid 0:2887415a46cd 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Davidroid 0:2887415a46cd 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Davidroid 0:2887415a46cd 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Davidroid 0:2887415a46cd 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Davidroid 0:2887415a46cd 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Davidroid 0:2887415a46cd 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Davidroid 0:2887415a46cd 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Davidroid 0:2887415a46cd 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Davidroid 0:2887415a46cd 35 *
Davidroid 0:2887415a46cd 36 ******************************************************************************
Davidroid 0:2887415a46cd 37 */
Davidroid 0:2887415a46cd 38
Davidroid 0:2887415a46cd 39
Davidroid 0:2887415a46cd 40 /* Generated with Stm32CubeTOO -----------------------------------------------*/
Davidroid 0:2887415a46cd 41
Davidroid 0:2887415a46cd 42
Davidroid 0:2887415a46cd 43 /* Revision ------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 44 /*
Davidroid 0:2887415a46cd 45 Repository: http://svn.x-nucleodev.codex.cro.st.com/svnroot/X-NucleoDev
Davidroid 0:2887415a46cd 46 Branch/Trunk/Tag: trunk
Davidroid 0:2887415a46cd 47 Based on: X-CUBE-SPN1/trunk/Drivers/BSP/Components/l6474/l6474.h
Davidroid 0:2887415a46cd 48 Revision: 0
Davidroid 0:2887415a46cd 49 */
Davidroid 0:2887415a46cd 50
Davidroid 0:2887415a46cd 51
Davidroid 0:2887415a46cd 52 /* Define to prevent recursive inclusion -------------------------------------*/
Davidroid 0:2887415a46cd 53
Davidroid 0:2887415a46cd 54 #ifndef __L6474_CLASS_H
Davidroid 0:2887415a46cd 55 #define __L6474_CLASS_H
Davidroid 0:2887415a46cd 56
Davidroid 0:2887415a46cd 57
Davidroid 0:2887415a46cd 58 /* Includes ------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 59
Davidroid 0:2887415a46cd 60 /* ACTION 1 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 61 * Include here platform specific header files. *
Davidroid 0:2887415a46cd 62 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 63 #include "mbed.h"
Davidroid 0:2887415a46cd 64 #include "DevSPI.h"
Davidroid 0:2887415a46cd 65 /* ACTION 2 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 66 * Include here component specific header files. *
Davidroid 0:2887415a46cd 67 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 68 #include "l6474.h"
Davidroid 0:2887415a46cd 69 /* ACTION 3 ------------------------------------------------------------------*
Davidroid 0:2887415a46cd 70 * Include here interface specific header files. *
Davidroid 0:2887415a46cd 71 * *
Davidroid 0:2887415a46cd 72 * Example: *
Davidroid 0:2887415a46cd 73 * #include "../Interfaces/Humidity_class.h" *
Davidroid 0:2887415a46cd 74 * #include "../Interfaces/Temperature_class.h" *
Davidroid 0:2887415a46cd 75 *----------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 76 #include "../Interfaces/Motor_class.h"
Davidroid 0:2887415a46cd 77
Davidroid 0:2887415a46cd 78
Davidroid 0:2887415a46cd 79 /* Functions -----------------------------------------------------------------*/
Davidroid 0:2887415a46cd 80
Davidroid 0:2887415a46cd 81 extern void PWMCallback(void);
Davidroid 0:2887415a46cd 82
Davidroid 0:2887415a46cd 83
Davidroid 0:2887415a46cd 84 /* Classes -------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 85
Davidroid 0:2887415a46cd 86 /** Class representing a L6474 component.
Davidroid 0:2887415a46cd 87 */
Davidroid 0:2887415a46cd 88 class L6474 : public Motor
Davidroid 0:2887415a46cd 89 {
Davidroid 0:2887415a46cd 90 public:
Davidroid 0:2887415a46cd 91
Davidroid 0:2887415a46cd 92 /*** Constructor and Destructor Methods ***/
Davidroid 0:2887415a46cd 93
Davidroid 0:2887415a46cd 94 /**
Davidroid 0:2887415a46cd 95 * @brief Constructor.
Davidroid 0:2887415a46cd 96 * @param reset pin name of the STBY\RST pin of the component.
Davidroid 0:2887415a46cd 97 * @param direction pin name of the DIR pin of the component.
Davidroid 0:2887415a46cd 98 * @param pwm pin name of the PWM pin of the component.
Davidroid 0:2887415a46cd 99 * @param ssel pin name of the SSEL pin of the SPI device to be used for communication.
Davidroid 0:2887415a46cd 100 * @param spi SPI device to be used for communication.
Davidroid 0:2887415a46cd 101 */
Davidroid 0:2887415a46cd 102 L6474(PinName reset, PinName direction, PinName pwm, PinName ssel, DevSPI &spi) : Motor(), direction(direction), pwm(pwm), reset(reset), ssel(ssel), dev_spi(spi)
Davidroid 0:2887415a46cd 103 {
Davidroid 0:2887415a46cd 104 /* ACTION 4 ----------------------------------------------------------*
Davidroid 0:2887415a46cd 105 * Initialize here the component's member variables, one variable per *
Davidroid 0:2887415a46cd 106 * line. *
Davidroid 0:2887415a46cd 107 * *
Davidroid 0:2887415a46cd 108 * Example: *
Davidroid 0:2887415a46cd 109 * T0_out = 0; *
Davidroid 0:2887415a46cd 110 * T1_out = 0; *
Davidroid 0:2887415a46cd 111 * T0_degC = 0; *
Davidroid 0:2887415a46cd 112 * T1_degC = 0; *
Davidroid 0:2887415a46cd 113 *--------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 114 flagInterruptCallback = 0;
Davidroid 0:2887415a46cd 115 errorHandlerCallback = 0;
Davidroid 0:2887415a46cd 116 memset(spiTxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES);
Davidroid 0:2887415a46cd 117 memset(spiRxBursts, 0, L6474_CMD_ARG_MAX_NB_BYTES);
Davidroid 0:2887415a46cd 118 spiPreemtionByIsr = 0;
Davidroid 0:2887415a46cd 119 isrFlag = 0;
Davidroid 0:2887415a46cd 120 //devicePrm = 0;
Davidroid 0:2887415a46cd 121 deviceInstance = numberOfDevices;
Davidroid 0:2887415a46cd 122 numberOfDevices++;
Davidroid 0:2887415a46cd 123 }
Davidroid 0:2887415a46cd 124
Davidroid 0:2887415a46cd 125 /**
Davidroid 0:2887415a46cd 126 * @brief Destructor.
Davidroid 0:2887415a46cd 127 */
Davidroid 0:2887415a46cd 128 virtual ~L6474(void) {}
Davidroid 0:2887415a46cd 129
Davidroid 0:2887415a46cd 130
Davidroid 0:2887415a46cd 131 /*** Public Component Related Methods ***/
Davidroid 0:2887415a46cd 132
Davidroid 0:2887415a46cd 133 /* ACTION 5 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 134 * Implement here the component's public methods, as wrappers of the C *
Davidroid 0:2887415a46cd 135 * component's functions. *
Davidroid 0:2887415a46cd 136 * They should be: *
Davidroid 0:2887415a46cd 137 * + Methods with the same name of the C component's virtual table's *
Davidroid 0:2887415a46cd 138 * functions (1); *
Davidroid 0:2887415a46cd 139 * + Methods with the same name of the C component's extended virtual *
Davidroid 0:2887415a46cd 140 * table's functions, if any (2). *
Davidroid 0:2887415a46cd 141 * *
Davidroid 0:2887415a46cd 142 * Example: *
Davidroid 0:2887415a46cd 143 * virtual int GetValue(float *pData) //(1) *
Davidroid 0:2887415a46cd 144 * { *
Davidroid 0:2887415a46cd 145 * return COMPONENT_GetValue(float *pfData); *
Davidroid 0:2887415a46cd 146 * } *
Davidroid 0:2887415a46cd 147 * *
Davidroid 0:2887415a46cd 148 * virtual int EnableFeature(void) //(2) *
Davidroid 0:2887415a46cd 149 * { *
Davidroid 0:2887415a46cd 150 * return COMPONENT_EnableFeature(); *
Davidroid 0:2887415a46cd 151 * } *
Davidroid 0:2887415a46cd 152 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 153 virtual int Init(void *init)
Davidroid 0:2887415a46cd 154 {
Davidroid 0:2887415a46cd 155 return (int) L6474_Init((MOTOR_InitTypeDef *) init);
Davidroid 0:2887415a46cd 156 }
Davidroid 0:2887415a46cd 157
Davidroid 0:2887415a46cd 158 virtual int ReadID(uint8_t *id)
Davidroid 0:2887415a46cd 159 {
Davidroid 0:2887415a46cd 160 return (int) L6474_ReadID((uint8_t *) id);
Davidroid 0:2887415a46cd 161 }
Davidroid 0:2887415a46cd 162
Davidroid 0:2887415a46cd 163 virtual void AttachErrorHandler(void (*callback)(uint16_t error))
Davidroid 0:2887415a46cd 164 {
Davidroid 0:2887415a46cd 165 L6474_AttachErrorHandler((void (*)(uint16_t error)) callback);
Davidroid 0:2887415a46cd 166 }
Davidroid 0:2887415a46cd 167
Davidroid 0:2887415a46cd 168 virtual void AttachFlagInterrupt(void (*callback)(void))
Davidroid 0:2887415a46cd 169 {
Davidroid 0:2887415a46cd 170 L6474_AttachFlagInterrupt((void (*)(void)) callback);
Davidroid 0:2887415a46cd 171 }
Davidroid 0:2887415a46cd 172
Davidroid 0:2887415a46cd 173 virtual void FlagInterruptHandler(void)
Davidroid 0:2887415a46cd 174 {
Davidroid 0:2887415a46cd 175 L6474_FlagInterruptHandler();
Davidroid 0:2887415a46cd 176 }
Davidroid 0:2887415a46cd 177
Davidroid 0:2887415a46cd 178 virtual uint16_t GetAcceleration(void)
Davidroid 0:2887415a46cd 179 {
Davidroid 0:2887415a46cd 180 return (uint16_t) L6474_GetAcceleration();
Davidroid 0:2887415a46cd 181 }
Davidroid 0:2887415a46cd 182
Davidroid 0:2887415a46cd 183 virtual uint16_t GetCurrentSpeed(void)
Davidroid 0:2887415a46cd 184 {
Davidroid 0:2887415a46cd 185 return (uint16_t) L6474_GetCurrentSpeed();
Davidroid 0:2887415a46cd 186 }
Davidroid 0:2887415a46cd 187
Davidroid 0:2887415a46cd 188 virtual uint16_t GetDeceleration(void)
Davidroid 0:2887415a46cd 189 {
Davidroid 0:2887415a46cd 190 return (uint16_t) L6474_GetDeceleration();
Davidroid 0:2887415a46cd 191 }
Davidroid 0:2887415a46cd 192
Davidroid 0:2887415a46cd 193 virtual motorState_t GetDeviceState(void)
Davidroid 0:2887415a46cd 194 {
Davidroid 0:2887415a46cd 195 return (motorState_t) L6474_GetDeviceState();
Davidroid 0:2887415a46cd 196 }
Davidroid 0:2887415a46cd 197
Davidroid 0:2887415a46cd 198 virtual uint8_t GetFwVersion(void)
Davidroid 0:2887415a46cd 199 {
Davidroid 0:2887415a46cd 200 return (uint8_t) L6474_GetFwVersion();
Davidroid 0:2887415a46cd 201 }
Davidroid 0:2887415a46cd 202
Davidroid 0:2887415a46cd 203 virtual int32_t GetMark(void)
Davidroid 0:2887415a46cd 204 {
Davidroid 0:2887415a46cd 205 return (int32_t) L6474_GetMark();
Davidroid 0:2887415a46cd 206 }
Davidroid 0:2887415a46cd 207
Davidroid 0:2887415a46cd 208 virtual uint16_t GetMaxSpeed(void)
Davidroid 0:2887415a46cd 209 {
Davidroid 0:2887415a46cd 210 return (uint16_t) L6474_GetMaxSpeed();
Davidroid 0:2887415a46cd 211 }
Davidroid 0:2887415a46cd 212
Davidroid 0:2887415a46cd 213 virtual uint16_t GetMinSpeed(void)
Davidroid 0:2887415a46cd 214 {
Davidroid 0:2887415a46cd 215 return (uint16_t) L6474_GetMinSpeed();
Davidroid 0:2887415a46cd 216 }
Davidroid 0:2887415a46cd 217
Davidroid 0:2887415a46cd 218 virtual int32_t GetPosition(void)
Davidroid 0:2887415a46cd 219 {
Davidroid 0:2887415a46cd 220 return (int32_t) L6474_GetPosition();
Davidroid 0:2887415a46cd 221 }
Davidroid 0:2887415a46cd 222
Davidroid 0:2887415a46cd 223 virtual void GoHome(void)
Davidroid 0:2887415a46cd 224 {
Davidroid 0:2887415a46cd 225 L6474_GoHome();
Davidroid 0:2887415a46cd 226 }
Davidroid 0:2887415a46cd 227
Davidroid 0:2887415a46cd 228 virtual void GoMark(void)
Davidroid 0:2887415a46cd 229 {
Davidroid 0:2887415a46cd 230 L6474_GoMark();
Davidroid 0:2887415a46cd 231 }
Davidroid 0:2887415a46cd 232
Davidroid 0:2887415a46cd 233 virtual void GoTo(int32_t targetPosition)
Davidroid 0:2887415a46cd 234 {
Davidroid 0:2887415a46cd 235 L6474_GoTo((int32_t) targetPosition);
Davidroid 0:2887415a46cd 236 }
Davidroid 0:2887415a46cd 237
Davidroid 0:2887415a46cd 238 virtual void HardStop(void)
Davidroid 0:2887415a46cd 239 {
Davidroid 0:2887415a46cd 240 L6474_HardStop();
Davidroid 0:2887415a46cd 241 }
Davidroid 0:2887415a46cd 242
Davidroid 0:2887415a46cd 243 virtual void Move(motorDir_t direction, uint32_t stepCount)
Davidroid 0:2887415a46cd 244 {
Davidroid 0:2887415a46cd 245 L6474_Move((motorDir_t) direction, (uint32_t) stepCount);
Davidroid 0:2887415a46cd 246 }
Davidroid 0:2887415a46cd 247
Davidroid 0:2887415a46cd 248 virtual void Run(motorDir_t direction)
Davidroid 0:2887415a46cd 249 {
Davidroid 0:2887415a46cd 250 L6474_Run((motorDir_t) direction);
Davidroid 0:2887415a46cd 251 }
Davidroid 0:2887415a46cd 252
Davidroid 0:2887415a46cd 253 virtual bool SetAcceleration(uint16_t newAcc)
Davidroid 0:2887415a46cd 254 {
Davidroid 0:2887415a46cd 255 return (bool) L6474_SetAcceleration((uint16_t) newAcc);
Davidroid 0:2887415a46cd 256 }
Davidroid 0:2887415a46cd 257
Davidroid 0:2887415a46cd 258 virtual bool SetDeceleration(uint16_t newDec)
Davidroid 0:2887415a46cd 259 {
Davidroid 0:2887415a46cd 260 return (bool) L6474_SetDeceleration((uint16_t) newDec);
Davidroid 0:2887415a46cd 261 }
Davidroid 0:2887415a46cd 262
Davidroid 0:2887415a46cd 263 virtual void SetHome(void)
Davidroid 0:2887415a46cd 264 {
Davidroid 0:2887415a46cd 265 L6474_SetHome();
Davidroid 0:2887415a46cd 266 }
Davidroid 0:2887415a46cd 267
Davidroid 0:2887415a46cd 268 virtual void SetMark(void)
Davidroid 0:2887415a46cd 269 {
Davidroid 0:2887415a46cd 270 L6474_SetMark();
Davidroid 0:2887415a46cd 271 }
Davidroid 0:2887415a46cd 272
Davidroid 0:2887415a46cd 273 virtual bool SetMaxSpeed(uint16_t newMaxSpeed)
Davidroid 0:2887415a46cd 274 {
Davidroid 0:2887415a46cd 275 return (bool) L6474_SetMaxSpeed((uint16_t) newMaxSpeed);
Davidroid 0:2887415a46cd 276 }
Davidroid 0:2887415a46cd 277
Davidroid 0:2887415a46cd 278 virtual bool SetMinSpeed(uint16_t newMinSpeed)
Davidroid 0:2887415a46cd 279 {
Davidroid 0:2887415a46cd 280 return (bool) L6474_SetMinSpeed((uint16_t) newMinSpeed);
Davidroid 0:2887415a46cd 281 }
Davidroid 0:2887415a46cd 282
Davidroid 0:2887415a46cd 283 virtual bool SoftStop(void)
Davidroid 0:2887415a46cd 284 {
Davidroid 0:2887415a46cd 285 return (bool) L6474_SoftStop();
Davidroid 0:2887415a46cd 286 }
Davidroid 0:2887415a46cd 287
Davidroid 0:2887415a46cd 288 virtual void StepClockHandler(void)
Davidroid 0:2887415a46cd 289 {
Davidroid 0:2887415a46cd 290 L6474_StepClockHandler();
Davidroid 0:2887415a46cd 291 }
Davidroid 0:2887415a46cd 292
Davidroid 0:2887415a46cd 293 virtual void CmdDisable(void)
Davidroid 0:2887415a46cd 294 {
Davidroid 0:2887415a46cd 295 L6474_CmdDisable();
Davidroid 0:2887415a46cd 296 }
Davidroid 0:2887415a46cd 297
Davidroid 0:2887415a46cd 298 virtual void CmdEnable(void)
Davidroid 0:2887415a46cd 299 {
Davidroid 0:2887415a46cd 300 L6474_CmdEnable();
Davidroid 0:2887415a46cd 301 }
Davidroid 0:2887415a46cd 302
Davidroid 0:2887415a46cd 303 virtual uint32_t CmdGetParam(uint32_t param)
Davidroid 0:2887415a46cd 304 {
Davidroid 0:2887415a46cd 305 return (uint32_t) L6474_CmdGetParam((uint32_t) param);
Davidroid 0:2887415a46cd 306 }
Davidroid 0:2887415a46cd 307
Davidroid 0:2887415a46cd 308 virtual uint16_t CmdGetStatus(void)
Davidroid 0:2887415a46cd 309 {
Davidroid 0:2887415a46cd 310 return (uint16_t) L6474_CmdGetStatus();
Davidroid 0:2887415a46cd 311 }
Davidroid 0:2887415a46cd 312
Davidroid 0:2887415a46cd 313 virtual void CmdNop(void)
Davidroid 0:2887415a46cd 314 {
Davidroid 0:2887415a46cd 315 L6474_CmdNop();
Davidroid 0:2887415a46cd 316 }
Davidroid 0:2887415a46cd 317
Davidroid 0:2887415a46cd 318 virtual void CmdSetParam(uint32_t param, uint32_t value)
Davidroid 0:2887415a46cd 319 {
Davidroid 0:2887415a46cd 320 L6474_CmdSetParam((uint32_t) param, (uint32_t) value);
Davidroid 0:2887415a46cd 321 }
Davidroid 0:2887415a46cd 322
Davidroid 0:2887415a46cd 323 virtual uint16_t ReadStatusRegister(void)
Davidroid 0:2887415a46cd 324 {
Davidroid 0:2887415a46cd 325 return (uint16_t) L6474_ReadStatusRegister();
Davidroid 0:2887415a46cd 326 }
Davidroid 0:2887415a46cd 327
Davidroid 0:2887415a46cd 328 virtual void ReleaseReset(void)
Davidroid 0:2887415a46cd 329 {
Davidroid 0:2887415a46cd 330 L6474_ReleaseReset();
Davidroid 0:2887415a46cd 331 }
Davidroid 0:2887415a46cd 332
Davidroid 0:2887415a46cd 333 virtual void Reset(void)
Davidroid 0:2887415a46cd 334 {
Davidroid 0:2887415a46cd 335 L6474_Reset();
Davidroid 0:2887415a46cd 336 }
Davidroid 0:2887415a46cd 337
Davidroid 0:2887415a46cd 338 virtual void SelectStepMode(motorStepMode_t stepMod)
Davidroid 0:2887415a46cd 339 {
Davidroid 0:2887415a46cd 340 L6474_SelectStepMode((motorStepMode_t) stepMod);
Davidroid 0:2887415a46cd 341 }
Davidroid 0:2887415a46cd 342
Davidroid 0:2887415a46cd 343 virtual void SetDirection(motorDir_t direction)
Davidroid 0:2887415a46cd 344 {
Davidroid 0:2887415a46cd 345 L6474_SetDirection((motorDir_t) direction);
Davidroid 0:2887415a46cd 346 }
Davidroid 0:2887415a46cd 347
Davidroid 0:2887415a46cd 348 virtual void ErrorHandler(uint16_t error)
Davidroid 0:2887415a46cd 349 {
Davidroid 0:2887415a46cd 350 L6474_ErrorHandler((uint16_t) error);
Davidroid 0:2887415a46cd 351 }
Davidroid 0:2887415a46cd 352
Davidroid 0:2887415a46cd 353
Davidroid 0:2887415a46cd 354 /*** Public Interrupt Related Methods ***/
Davidroid 0:2887415a46cd 355
Davidroid 0:2887415a46cd 356 /* ACTION 6 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 357 * Implement here interrupt related methods, if any. *
Davidroid 0:2887415a46cd 358 * Note that interrupt handling is platform dependent, e.g.: *
Davidroid 0:2887415a46cd 359 * + mbed: *
Davidroid 0:2887415a46cd 360 * InterruptIn feature_int(pin); //Interrupt object. *
Davidroid 0:2887415a46cd 361 * feature_int.rise(callback); //Attach a callback. *
Davidroid 0:2887415a46cd 362 * feature_int.mode(PullNone); //Set interrupt mode. *
Davidroid 0:2887415a46cd 363 * feature_int.enable_irq(); //Enable interrupt. *
Davidroid 0:2887415a46cd 364 * feature_int.disable_irq(); //Disable interrupt. *
Davidroid 0:2887415a46cd 365 * + Arduino: *
Davidroid 0:2887415a46cd 366 * attachInterrupt(pin, callback, RISING); //Attach a callback. *
Davidroid 0:2887415a46cd 367 * detachInterrupt(pin); //Detach a callback. *
Davidroid 0:2887415a46cd 368 * *
Davidroid 0:2887415a46cd 369 * Example (mbed): *
Davidroid 0:2887415a46cd 370 * void Attach_Feature_IRQ(void (*fptr) (void)) *
Davidroid 0:2887415a46cd 371 * { *
Davidroid 0:2887415a46cd 372 * feature_int.rise(fptr); *
Davidroid 0:2887415a46cd 373 * } *
Davidroid 0:2887415a46cd 374 * *
Davidroid 0:2887415a46cd 375 * void Enable_Feature_IRQ(void) *
Davidroid 0:2887415a46cd 376 * { *
Davidroid 0:2887415a46cd 377 * feature_int.enable_irq(); *
Davidroid 0:2887415a46cd 378 * } *
Davidroid 0:2887415a46cd 379 * *
Davidroid 0:2887415a46cd 380 * void Disable_Feature_IRQ(void) *
Davidroid 0:2887415a46cd 381 * { *
Davidroid 0:2887415a46cd 382 * feature_int.disable_irq(); *
Davidroid 0:2887415a46cd 383 * } *
Davidroid 0:2887415a46cd 384 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 385
Davidroid 0:2887415a46cd 386
Davidroid 0:2887415a46cd 387 protected:
Davidroid 0:2887415a46cd 388
Davidroid 0:2887415a46cd 389 /*** Protected Component Related Methods ***/
Davidroid 0:2887415a46cd 390
Davidroid 0:2887415a46cd 391 /* ACTION 7 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 392 * Declare here the component's specific methods. *
Davidroid 0:2887415a46cd 393 * They should be: *
Davidroid 0:2887415a46cd 394 * + Methods with the same name of the C component's virtual table's *
Davidroid 0:2887415a46cd 395 * functions (1); *
Davidroid 0:2887415a46cd 396 * + Methods with the same name of the C component's extended virtual *
Davidroid 0:2887415a46cd 397 * table's functions, if any (2); *
Davidroid 0:2887415a46cd 398 * + Helper methods, if any, like functions declared in the component's *
Davidroid 0:2887415a46cd 399 * source files but not pointed by the component's virtual table (3). *
Davidroid 0:2887415a46cd 400 * *
Davidroid 0:2887415a46cd 401 * Example: *
Davidroid 0:2887415a46cd 402 * DrvStatusTypeDef COMPONENT_GetValue(float* pfData); //(1) *
Davidroid 0:2887415a46cd 403 * DrvStatusTypeDef COMPONENT_EnableFeature(void); //(2) *
Davidroid 0:2887415a46cd 404 * DrvStatusTypeDef COMPONENT_ComputeAverage(void); //(3) *
Davidroid 0:2887415a46cd 405 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 406 void L6474_AttachErrorHandler(void (*callback)(uint16_t error)); //Attach a user callback to the error handler
Davidroid 0:2887415a46cd 407 void L6474_AttachFlagInterrupt(void (*callback)(void)); //Attach a user callback to the flag Interrupt
Davidroid 0:2887415a46cd 408 DrvStatusTypeDef L6474_Init(MOTOR_InitTypeDef *init); //Start the L6474 library
Davidroid 0:2887415a46cd 409 DrvStatusTypeDef L6474_ReadID(uint8_t *id); //Read Id to get driver instance
Davidroid 0:2887415a46cd 410 uint16_t L6474_GetAcceleration(void); //Return the acceleration in pps^2
Davidroid 0:2887415a46cd 411 uint16_t L6474_GetCurrentSpeed(void); //Return the current speed in pps
Davidroid 0:2887415a46cd 412 uint16_t L6474_GetDeceleration(void); //Return the deceleration in pps^2
Davidroid 0:2887415a46cd 413 motorState_t L6474_GetDeviceState(void); //Return the device state
Davidroid 0:2887415a46cd 414 uint8_t L6474_GetFwVersion(void); //Return the FW version
Davidroid 0:2887415a46cd 415 int32_t L6474_GetMark(void); //Return the mark position
Davidroid 0:2887415a46cd 416 uint16_t L6474_GetMaxSpeed(void); //Return the max speed in pps
Davidroid 0:2887415a46cd 417 uint16_t L6474_GetMinSpeed(void); //Return the min speed in pps
Davidroid 0:2887415a46cd 418 int32_t L6474_GetPosition(void); //Return the ABS_POSITION (32b signed)
Davidroid 0:2887415a46cd 419 void L6474_GoHome(void); //Move to the home position
Davidroid 0:2887415a46cd 420 void L6474_GoMark(void); //Move to the Mark position
Davidroid 0:2887415a46cd 421 void L6474_GoTo(int32_t targetPosition); //Go to the specified position
Davidroid 0:2887415a46cd 422 void L6474_HardStop(void); //Stop the motor and disable the power bridge
Davidroid 0:2887415a46cd 423 void L6474_Move(motorDir_t direction, uint32_t stepCount); //Move the motor of the specified number of steps
Davidroid 0:2887415a46cd 424 void L6474_Run(motorDir_t direction); //Run the motor
Davidroid 0:2887415a46cd 425 bool L6474_SetAcceleration(uint16_t newAcc); //Set the acceleration in pps^2
Davidroid 0:2887415a46cd 426 bool L6474_SetDeceleration(uint16_t newDec); //Set the deceleration in pps^2
Davidroid 0:2887415a46cd 427 void L6474_SetHome(void); //Set current position to be the home position
Davidroid 0:2887415a46cd 428 void L6474_SetMark(void); //Set current position to be the Markposition
Davidroid 0:2887415a46cd 429 bool L6474_SetMaxSpeed(uint16_t newMaxSpeed); //Set the max speed in pps
Davidroid 0:2887415a46cd 430 bool L6474_SetMinSpeed(uint16_t newMinSpeed); //Set the min speed in pps
Davidroid 0:2887415a46cd 431 bool L6474_SoftStop(void); //Progressively stops the motor
Davidroid 0:2887415a46cd 432 void L6474_CmdDisable(void); //Send the L6474_DISABLE command
Davidroid 0:2887415a46cd 433 void L6474_CmdEnable(void); //Send the L6474_ENABLE command
Davidroid 0:2887415a46cd 434 uint32_t L6474_CmdGetParam(uint32_t param); //Send the L6474_GET_PARAM command
Davidroid 0:2887415a46cd 435 uint16_t L6474_CmdGetStatus(void); //Send the L6474_GET_STATUS command
Davidroid 0:2887415a46cd 436 void L6474_CmdNop(void); //Send the L6474_NOP command
Davidroid 0:2887415a46cd 437 void L6474_CmdSetParam(uint32_t param, uint32_t value); //Send the L6474_SET_PARAM command
Davidroid 0:2887415a46cd 438 uint16_t L6474_ReadStatusRegister(void); //Read the L6474_STATUS register without clearing the flags
Davidroid 0:2887415a46cd 439 void L6474_SelectStepMode(motorStepMode_t stepMod); //Step mode selection
Davidroid 0:2887415a46cd 440 void L6474_SetDirection(motorDir_t direction); //Set the L6474 direction pin
Davidroid 0:2887415a46cd 441 void L6474_ApplySpeed(uint16_t newSpeed);
Davidroid 0:2887415a46cd 442 void L6474_ComputeSpeedProfile(uint32_t nbSteps);
Davidroid 0:2887415a46cd 443 int32_t L6474_ConvertPosition(uint32_t abs_position_reg);
Davidroid 0:2887415a46cd 444 void L6474_ErrorHandler(uint16_t error);
Davidroid 0:2887415a46cd 445 void L6474_FlagInterruptHandler(void);
Davidroid 0:2887415a46cd 446 void L6474_SendCommand(uint8_t param);
Davidroid 0:2887415a46cd 447 void L6474_SetRegisterToPredefinedValues(void);
Davidroid 0:2887415a46cd 448 void L6474_WriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte);
Davidroid 0:2887415a46cd 449 void L6474_SetDeviceParamsToPredefinedValues(void);
Davidroid 0:2887415a46cd 450 void L6474_StartMovement(void);
Davidroid 0:2887415a46cd 451 void L6474_StepClockHandler(void);
Davidroid 0:2887415a46cd 452 uint8_t L6474_Tval_Current_to_Par(double Tval);
Davidroid 0:2887415a46cd 453 uint8_t L6474_Tmin_Time_to_Par(double Tmin);
Davidroid 0:2887415a46cd 454
Davidroid 0:2887415a46cd 455
Davidroid 0:2887415a46cd 456 /*** Component's I/O Methods ***/
Davidroid 0:2887415a46cd 457
Davidroid 0:2887415a46cd 458 /**
Davidroid 0:2887415a46cd 459 * @brief Utility function to read data from L6474.
Davidroid 0:2887415a46cd 460 * @param[out] pBuffer pointer to the buffer to read data into.
Davidroid 0:2887415a46cd 461 * @param[in] NumBytesToRead number of bytes to read.
Davidroid 0:2887415a46cd 462 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 463 */
Davidroid 0:2887415a46cd 464 DrvStatusTypeDef Read(uint8_t* pBuffer, uint16_t NumBytesToRead)
Davidroid 0:2887415a46cd 465 {
Davidroid 0:2887415a46cd 466 if (dev_spi.spi_read(pBuffer, ssel, NumBytesToRead) != 0)
Davidroid 0:2887415a46cd 467 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 468 return COMPONENT_OK;
Davidroid 0:2887415a46cd 469 }
Davidroid 0:2887415a46cd 470
Davidroid 0:2887415a46cd 471 /**
Davidroid 0:2887415a46cd 472 * @brief Utility function to write data to L6474.
Davidroid 0:2887415a46cd 473 * @param[in] pBuffer pointer to the buffer of data to send.
Davidroid 0:2887415a46cd 474 * @param[in] NumBytesToWrite number of bytes to write.
Davidroid 0:2887415a46cd 475 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 476 */
Davidroid 0:2887415a46cd 477 DrvStatusTypeDef Write(uint8_t* pBuffer, uint16_t NumBytesToWrite)
Davidroid 0:2887415a46cd 478 {
Davidroid 0:2887415a46cd 479 if (dev_spi.spi_write(pBuffer, ssel, NumBytesToWrite) != 0)
Davidroid 0:2887415a46cd 480 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 481 return COMPONENT_OK;
Davidroid 0:2887415a46cd 482 }
Davidroid 0:2887415a46cd 483
Davidroid 0:2887415a46cd 484 /**
Davidroid 0:2887415a46cd 485 * @brief Utility function to read and write data from/to L6474 at the same time.
Davidroid 0:2887415a46cd 486 * @param[out] pBufferToRead pointer to the buffer to read data into.
Davidroid 0:2887415a46cd 487 * @param[in] pBufferToWrite pointer to the buffer of data to send.
Davidroid 0:2887415a46cd 488 * @param[in] NumBytes number of bytes to read and write.
Davidroid 0:2887415a46cd 489 * @retval COMPONENT_OK in case of success, COMPONENT_ERROR otherwise.
Davidroid 0:2887415a46cd 490 */
Davidroid 0:2887415a46cd 491 DrvStatusTypeDef ReadWrite(uint8_t* pBufferToRead, uint8_t* pBufferToWrite, uint16_t NumBytes)
Davidroid 0:2887415a46cd 492 {
Davidroid 0:2887415a46cd 493 if (dev_spi.spi_read_write(pBufferToRead, pBufferToWrite, ssel, NumBytes) != 0)
Davidroid 0:2887415a46cd 494 return COMPONENT_ERROR;
Davidroid 0:2887415a46cd 495 return COMPONENT_OK;
Davidroid 0:2887415a46cd 496 }
Davidroid 0:2887415a46cd 497
Davidroid 0:2887415a46cd 498 /* ACTION 8 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 499 * Implement here other I/O methods beyond those already implemented *
Davidroid 0:2887415a46cd 500 * above, which are declared extern within the component's header file. *
Davidroid 0:2887415a46cd 501 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 502 /*
Davidroid 0:2887415a46cd 503 * System call to make the CPU wait.
Davidroid 0:2887415a46cd 504 */
Davidroid 0:2887415a46cd 505 void L6474_Delay(uint32_t delay)
Davidroid 0:2887415a46cd 506 {
Davidroid 0:2887415a46cd 507 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 508 wait_ms(delay);
Davidroid 0:2887415a46cd 509 }
Davidroid 0:2887415a46cd 510
Davidroid 0:2887415a46cd 511 /*
Davidroid 0:2887415a46cd 512 * System call to enable interrupts.
Davidroid 0:2887415a46cd 513 */
Davidroid 0:2887415a46cd 514 void L6474_EnableIrq(void)
Davidroid 0:2887415a46cd 515 {
Davidroid 0:2887415a46cd 516 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 517 __enable_irq();
Davidroid 0:2887415a46cd 518 }
Davidroid 0:2887415a46cd 519
Davidroid 0:2887415a46cd 520 /*
Davidroid 0:2887415a46cd 521 * System call to disable interrupts.
Davidroid 0:2887415a46cd 522 */
Davidroid 0:2887415a46cd 523 void L6474_DisableIrq(void)
Davidroid 0:2887415a46cd 524 {
Davidroid 0:2887415a46cd 525 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 526 __disable_irq();
Davidroid 0:2887415a46cd 527 }
Davidroid 0:2887415a46cd 528
Davidroid 0:2887415a46cd 529 /*
Davidroid 0:2887415a46cd 530 * Sets the frequency of PWM.
Davidroid 0:2887415a46cd 531 * The frequency is directly the current speed of the device.
Davidroid 0:2887415a46cd 532 */
Davidroid 0:2887415a46cd 533 void L6474_PwmSetFreq(uint16_t newFreq)
Davidroid 0:2887415a46cd 534 {
Davidroid 0:2887415a46cd 535 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 536 double period = 1.0f / newFreq;
Davidroid 0:2887415a46cd 537 pwm.period(period);
Davidroid 0:2887415a46cd 538 pwm.write(0.5f);
Davidroid 0:2887415a46cd 539 ticker.attach(&PWMCallback, period);
Davidroid 0:2887415a46cd 540 }
Davidroid 0:2887415a46cd 541
Davidroid 0:2887415a46cd 542 /*
Davidroid 0:2887415a46cd 543 * Initialises the PWM uses by the specified device.
Davidroid 0:2887415a46cd 544 * + Device 0 uses PWM1 based on timer 1;
Davidroid 0:2887415a46cd 545 * + Device 1 uses PWM2 based on timer 2;
Davidroid 0:2887415a46cd 546 * + Device 2 uses PWM3 based on timer 3.
Davidroid 0:2887415a46cd 547 */
Davidroid 0:2887415a46cd 548 void L6474_PwmInit(void)
Davidroid 0:2887415a46cd 549 {
Davidroid 0:2887415a46cd 550 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 551 }
Davidroid 0:2887415a46cd 552
Davidroid 0:2887415a46cd 553 /*
Davidroid 0:2887415a46cd 554 * Stops the PWM.
Davidroid 0:2887415a46cd 555 */
Davidroid 0:2887415a46cd 556 void L6474_PwmStop(void)
Davidroid 0:2887415a46cd 557 {
Davidroid 0:2887415a46cd 558 /* TO BE IMPLEMENTED BY USING TARGET PLATFORM'S APIs */
Davidroid 0:2887415a46cd 559 pwm.write(0.0f);
Davidroid 0:2887415a46cd 560 ticker.detach();
Davidroid 0:2887415a46cd 561 }
Davidroid 0:2887415a46cd 562
Davidroid 0:2887415a46cd 563 /*
Davidroid 0:2887415a46cd 564 * Setting the standby/reset pin to high.
Davidroid 0:2887415a46cd 565 */
Davidroid 0:2887415a46cd 566 void L6474_ReleaseReset(void)
Davidroid 0:2887415a46cd 567 {
Davidroid 0:2887415a46cd 568 reset = 1;
Davidroid 0:2887415a46cd 569 }
Davidroid 0:2887415a46cd 570
Davidroid 0:2887415a46cd 571 /*
Davidroid 0:2887415a46cd 572 * Resetting the standby/reset pin to put the device in standby mode.
Davidroid 0:2887415a46cd 573 */
Davidroid 0:2887415a46cd 574 void L6474_Reset(void)
Davidroid 0:2887415a46cd 575 {
Davidroid 0:2887415a46cd 576 reset = 0;
Davidroid 0:2887415a46cd 577 }
Davidroid 0:2887415a46cd 578
Davidroid 0:2887415a46cd 579 /*
Davidroid 0:2887415a46cd 580 * Set the direction of rotation.
Davidroid 0:2887415a46cd 581 */
Davidroid 0:2887415a46cd 582 void L6474_SetDirectionGpio(uint8_t gpioState)
Davidroid 0:2887415a46cd 583 {
Davidroid 0:2887415a46cd 584 direction = gpioState;
Davidroid 0:2887415a46cd 585 }
Davidroid 0:2887415a46cd 586
Davidroid 0:2887415a46cd 587 /*
Davidroid 0:2887415a46cd 588 * Write and read bytes to/from the component through the SPI at the same time.
Davidroid 0:2887415a46cd 589 */
Davidroid 0:2887415a46cd 590 uint8_t L6474_SpiWriteBytes(uint8_t *pByteToTransmit, uint8_t *pReceivedByte)
Davidroid 0:2887415a46cd 591 {
Davidroid 0:2887415a46cd 592 return (uint8_t) ReadWrite(pReceivedByte, pByteToTransmit, numberOfDevices);
Davidroid 0:2887415a46cd 593 }
Davidroid 0:2887415a46cd 594
Davidroid 0:2887415a46cd 595
Davidroid 0:2887415a46cd 596 /*** Component's Instance Variables ***/
Davidroid 0:2887415a46cd 597
Davidroid 0:2887415a46cd 598 /* Identity */
Davidroid 0:2887415a46cd 599 uint8_t who_am_i;
Davidroid 0:2887415a46cd 600
Davidroid 0:2887415a46cd 601 /* ACTION 9 --------------------------------------------------------------*
Davidroid 0:2887415a46cd 602 * There should be only a unique identifier for each component, which *
Davidroid 0:2887415a46cd 603 * should be the "who_am_i" parameter, hence this parameter is optional. *
Davidroid 0:2887415a46cd 604 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 605 /* Type. */
Davidroid 0:2887415a46cd 606 uint8_t type;
Davidroid 0:2887415a46cd 607
Davidroid 0:2887415a46cd 608 /* Configuration. */
Davidroid 0:2887415a46cd 609 DigitalOut ssel;
Davidroid 0:2887415a46cd 610
Davidroid 0:2887415a46cd 611 /* Standby and reset pin. */
Davidroid 0:2887415a46cd 612 DigitalOut reset;
Davidroid 0:2887415a46cd 613
Davidroid 0:2887415a46cd 614 /* Direction of rotation pin. */
Davidroid 0:2887415a46cd 615 DigitalOut direction;
Davidroid 0:2887415a46cd 616
Davidroid 0:2887415a46cd 617 /* Pulse Width Modulation pin. */
Davidroid 0:2887415a46cd 618 PwmOut pwm;
Davidroid 0:2887415a46cd 619
Davidroid 0:2887415a46cd 620 /* Timer to trigger the PWM callback at each PWM pulse. */
Davidroid 0:2887415a46cd 621 Ticker ticker;
Davidroid 0:2887415a46cd 622
Davidroid 0:2887415a46cd 623 /* IO Device. */
Davidroid 0:2887415a46cd 624 DevSPI &dev_spi;
Davidroid 0:2887415a46cd 625
Davidroid 0:2887415a46cd 626 /* Interrupts. */
Davidroid 0:2887415a46cd 627 /* ACTION 10 -------------------------------------------------------------*
Davidroid 0:2887415a46cd 628 * Put here interrupt related objects, if needed. *
Davidroid 0:2887415a46cd 629 * Note that interrupt handling is platform dependent, see *
Davidroid 0:2887415a46cd 630 * "Interrupt Related Methods" above. *
Davidroid 0:2887415a46cd 631 * *
Davidroid 0:2887415a46cd 632 * Example: *
Davidroid 0:2887415a46cd 633 * + mbed: *
Davidroid 0:2887415a46cd 634 * InterruptIn feature_int; *
Davidroid 0:2887415a46cd 635 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 636
Davidroid 0:2887415a46cd 637 /* Data. */
Davidroid 0:2887415a46cd 638 /* ACTION 11 -------------------------------------------------------------*
Davidroid 0:2887415a46cd 639 * Declare here the component's data, one variable per line. *
Davidroid 0:2887415a46cd 640 * *
Davidroid 0:2887415a46cd 641 * Example: *
Davidroid 0:2887415a46cd 642 * int T0_out; *
Davidroid 0:2887415a46cd 643 * int T1_out; *
Davidroid 0:2887415a46cd 644 * float T0_degC; *
Davidroid 0:2887415a46cd 645 * float T1_degC; *
Davidroid 0:2887415a46cd 646 *------------------------------------------------------------------------*/
Davidroid 0:2887415a46cd 647 void (*flagInterruptCallback)(void);
Davidroid 0:2887415a46cd 648 void (*errorHandlerCallback)(uint16_t error);
Davidroid 0:2887415a46cd 649 uint8_t spiTxBursts[L6474_CMD_ARG_MAX_NB_BYTES];
Davidroid 0:2887415a46cd 650 uint8_t spiRxBursts[L6474_CMD_ARG_MAX_NB_BYTES];
Davidroid 0:2887415a46cd 651 bool spiPreemtionByIsr;
Davidroid 0:2887415a46cd 652 bool isrFlag;
Davidroid 0:2887415a46cd 653 deviceParams_t devicePrm;
Davidroid 0:2887415a46cd 654 static uint8_t numberOfDevices;
Davidroid 0:2887415a46cd 655 uint8_t deviceInstance;
Davidroid 0:2887415a46cd 656 };
Davidroid 0:2887415a46cd 657
Davidroid 0:2887415a46cd 658 #endif // __L6474_CLASS_H
Davidroid 0:2887415a46cd 659
Davidroid 0:2887415a46cd 660 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/