Library to handle the X_NUCLEO_IHM02A1 Motor Control Expansion Board based on the L6470 component.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_IHM02A1 ConcorsoFinal HelloWorld_IHM02A1_mbedOS HelloWorld_IHM02A1-Serialinterpreter ... more

Fork of X_NUCLEO_IHM02A1 by ST Expansion SW Team

Motor Control Library

Introduction

Library to handle the X-NUCLEO-IHM02A1 Motor Control Expansion Board based on the the L6470 component.

Daisy-Chain Configuration

The two L6470 components mounted on this board are connected in daisy-chain configuration. This board can be stacked up to four times so that the eight L6470 components will be connected two-by-two in daisy-chain configuration.

Concerning the SSEL pin of the SPI communication, each expansion board must be in one of the following configuration:

  • SB_23 resistor connected only: SSEL on pin A2;
  • SB_7 resistor connected only: SSEL on pin D2;
  • SB_8 resistor connected only: SSEL on pin D10;
  • SB_9 resistor connected only: SSEL on pin D5.

Arduino Connector Compatibility Warning

X-NUCLEO-IHM02A1 is Arduino compatible with one exception: instead of using D13 pin to drive the SPI clock, it uses D3 pin, hence the default configuration for this library is with the SPI clock on D3 pin.

To be fully Arduino compatible the following patch is required:

  • to remove the SB34 resistor;
  • to solder the SB12 resistor.

Alternatively, you can route the Nucleo board’s D13 pin directly to the expansion board’s D3 pin with a wire. In case you patch your expansion board or route the pin, the SPI clock will be driven on D13 pin rather than on D3 pin, and you have also to initialize the sclk PinName variable with D13 rather than D3. This patch is known to be required, for example, on the following boards: NUCLEO-F103RB, NUCLEO-F302RB, NUCLEO-F411RE, and NUCLEO-F429ZI.

If you use D13 pin for the SPI clock, please be aware that on STM32 Nucleo boards you may not drive the LED, otherwise you will get a conflict: the LED on STM32 Nucleo boards is connected to the D13 pin.

Example Applications

Committer:
Davidroid
Date:
Mon Mar 13 17:52:38 2017 +0000
Revision:
24:ff67801d7cd7
Parent:
22:ba7f4131a5e0
Typo corrected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davide.aliprandi@st.com 22:ba7f4131a5e0 1 /**
davide.aliprandi@st.com 22:ba7f4131a5e0 2 ******************************************************************************
davide.aliprandi@st.com 22:ba7f4131a5e0 3 * @file component_def.h
davide.aliprandi@st.com 22:ba7f4131a5e0 4 * @author AST
davide.aliprandi@st.com 22:ba7f4131a5e0 5 * @version V1.0.0
davide.aliprandi@st.com 22:ba7f4131a5e0 6 * @date 1 April 2015
davide.aliprandi@st.com 22:ba7f4131a5e0 7 * @brief Generic header file containing a generic component's definitions
davide.aliprandi@st.com 22:ba7f4131a5e0 8 * and I/O functions.
davide.aliprandi@st.com 22:ba7f4131a5e0 9 ******************************************************************************
davide.aliprandi@st.com 22:ba7f4131a5e0 10 * @attention
davide.aliprandi@st.com 22:ba7f4131a5e0 11 *
davide.aliprandi@st.com 22:ba7f4131a5e0 12 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
davide.aliprandi@st.com 22:ba7f4131a5e0 13 *
davide.aliprandi@st.com 22:ba7f4131a5e0 14 * Redistribution and use in source and binary forms, with or without modification,
davide.aliprandi@st.com 22:ba7f4131a5e0 15 * are permitted provided that the following conditions are met:
davide.aliprandi@st.com 22:ba7f4131a5e0 16 * 1. Redistributions of source code must retain the above copyright notice,
davide.aliprandi@st.com 22:ba7f4131a5e0 17 * this list of conditions and the following disclaimer.
davide.aliprandi@st.com 22:ba7f4131a5e0 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
davide.aliprandi@st.com 22:ba7f4131a5e0 19 * this list of conditions and the following disclaimer in the documentation
davide.aliprandi@st.com 22:ba7f4131a5e0 20 * and/or other materials provided with the distribution.
davide.aliprandi@st.com 22:ba7f4131a5e0 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
davide.aliprandi@st.com 22:ba7f4131a5e0 22 * may be used to endorse or promote products derived from this software
davide.aliprandi@st.com 22:ba7f4131a5e0 23 * without specific prior written permission.
davide.aliprandi@st.com 22:ba7f4131a5e0 24 *
davide.aliprandi@st.com 22:ba7f4131a5e0 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
davide.aliprandi@st.com 22:ba7f4131a5e0 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
davide.aliprandi@st.com 22:ba7f4131a5e0 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
davide.aliprandi@st.com 22:ba7f4131a5e0 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
davide.aliprandi@st.com 22:ba7f4131a5e0 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
davide.aliprandi@st.com 22:ba7f4131a5e0 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
davide.aliprandi@st.com 22:ba7f4131a5e0 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
davide.aliprandi@st.com 22:ba7f4131a5e0 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
davide.aliprandi@st.com 22:ba7f4131a5e0 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
davide.aliprandi@st.com 22:ba7f4131a5e0 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
davide.aliprandi@st.com 22:ba7f4131a5e0 35 *
davide.aliprandi@st.com 22:ba7f4131a5e0 36 ******************************************************************************
davide.aliprandi@st.com 22:ba7f4131a5e0 37 */
davide.aliprandi@st.com 22:ba7f4131a5e0 38
davide.aliprandi@st.com 22:ba7f4131a5e0 39
davide.aliprandi@st.com 22:ba7f4131a5e0 40 /* Define to prevent recursive inclusion -------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 41
davide.aliprandi@st.com 22:ba7f4131a5e0 42 #ifndef __COMPONENT_H
davide.aliprandi@st.com 22:ba7f4131a5e0 43 #define __COMPONENT_H
davide.aliprandi@st.com 22:ba7f4131a5e0 44
davide.aliprandi@st.com 22:ba7f4131a5e0 45
davide.aliprandi@st.com 22:ba7f4131a5e0 46 /* Types ---------------------------------------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 47
davide.aliprandi@st.com 22:ba7f4131a5e0 48 /**
davide.aliprandi@st.com 22:ba7f4131a5e0 49 * @brief Component's Context structure definition.
davide.aliprandi@st.com 22:ba7f4131a5e0 50 */
davide.aliprandi@st.com 22:ba7f4131a5e0 51 typedef struct
davide.aliprandi@st.com 22:ba7f4131a5e0 52 {
davide.aliprandi@st.com 22:ba7f4131a5e0 53 /* Identity. */
davide.aliprandi@st.com 22:ba7f4131a5e0 54 uint8_t who_am_i;
davide.aliprandi@st.com 22:ba7f4131a5e0 55
davide.aliprandi@st.com 22:ba7f4131a5e0 56 /* ACTION ----------------------------------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 57 /* There should be only a unique identifier for each component, which */
davide.aliprandi@st.com 22:ba7f4131a5e0 58 /* should be the "who_am_i" parameter, hence this parameter is optional. */
davide.aliprandi@st.com 22:ba7f4131a5e0 59 /* -----------------------------------------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 60 /* Type. */
davide.aliprandi@st.com 22:ba7f4131a5e0 61 uint8_t type;
davide.aliprandi@st.com 22:ba7f4131a5e0 62
davide.aliprandi@st.com 22:ba7f4131a5e0 63 /* Configuration. */
davide.aliprandi@st.com 22:ba7f4131a5e0 64 uint8_t address;
davide.aliprandi@st.com 22:ba7f4131a5e0 65
davide.aliprandi@st.com 22:ba7f4131a5e0 66 /* Pointer to the Data. */
davide.aliprandi@st.com 22:ba7f4131a5e0 67 void *p_data;
davide.aliprandi@st.com 22:ba7f4131a5e0 68
davide.aliprandi@st.com 22:ba7f4131a5e0 69 /* Pointer to the Virtual Table. */
davide.aliprandi@st.com 22:ba7f4131a5e0 70 void *p_vt;
davide.aliprandi@st.com 22:ba7f4131a5e0 71
davide.aliprandi@st.com 22:ba7f4131a5e0 72 /* ACTION ----------------------------------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 73 /* There should be only a unique virtual table for each component, which */
davide.aliprandi@st.com 22:ba7f4131a5e0 74 /* should be the "p_vt" parameter, hence this parameter is optional. */
davide.aliprandi@st.com 22:ba7f4131a5e0 75 /* -----------------------------------------------------------------------*/
davide.aliprandi@st.com 22:ba7f4131a5e0 76 /* Pointer to the Extended Virtual Table. */
davide.aliprandi@st.com 22:ba7f4131a5e0 77 void *p_ext_vt;
davide.aliprandi@st.com 22:ba7f4131a5e0 78 } handle_t;
davide.aliprandi@st.com 22:ba7f4131a5e0 79
davide.aliprandi@st.com 22:ba7f4131a5e0 80 /**
davide.aliprandi@st.com 22:ba7f4131a5e0 81 * @brief Component's Status enumerator definition.
davide.aliprandi@st.com 22:ba7f4131a5e0 82 */
davide.aliprandi@st.com 22:ba7f4131a5e0 83 typedef enum
davide.aliprandi@st.com 22:ba7f4131a5e0 84 {
davide.aliprandi@st.com 22:ba7f4131a5e0 85 COMPONENT_OK = 0,
davide.aliprandi@st.com 22:ba7f4131a5e0 86 COMPONENT_ERROR,
davide.aliprandi@st.com 22:ba7f4131a5e0 87 COMPONENT_TIMEOUT,
davide.aliprandi@st.com 22:ba7f4131a5e0 88 COMPONENT_NOT_IMPLEMENTED
davide.aliprandi@st.com 22:ba7f4131a5e0 89 } status_t;
davide.aliprandi@st.com 22:ba7f4131a5e0 90
davide.aliprandi@st.com 22:ba7f4131a5e0 91 #endif /* __COMPONENT_H */
davide.aliprandi@st.com 22:ba7f4131a5e0 92
davide.aliprandi@st.com 22:ba7f4131a5e0 93 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/