X-CUBE-SPN1 STM32Cube software expansion for the X-NUCLEO-IHM01A1 expansion board Data brief Description X-CUBE-SPN1 is a software package based on STM32Cube for the X-NUCLEO-IHM01A1 expansion board. It is compatible with the NUCLEO-F401RE, the NUCLEO-F030R8, the NUCLEO-L053R8 and NUCLEO-F334R8 boards equipped with one or more (up to 3) X-NUCLEOIHM01A1 boards. The software is based on the STM32Cube technology to facilitate portability across different STM32 MCU families. Information regarding STM32Cube is available on www.st.com at http://www.st.com/stm32cube Features Driver layer for complete management of the L6474 microstepping motor driver integrated in the X-NUCLEO-IHM01A1 expansion board Examples for controlling up to three stepper motors Easy portability across different MCU families, thanks to STM32Cube Free, user-friendly license terms February 2016 DocID027149 Rev 2 For further information contact your local STMicroelectronics sales office 1/5 www.st.com X-CUBE-SPN1 Description What is STM32Cube? STMCube™ represents the STMicroelectronics initiative to make developers’ lives easier by reducing development effort, time and cost. STM32Cube covers the STM32 portfolio. STM32Cube version 1.x includes: STM32CubeMX, a graphical software configuration tool that allows the generation of C initialization code using graphical wizards. A comprehensive embedded software platform specific to each series (such as the STM32CubeF4 for the STM32F4 series), which includes: the STM32Cube HAL embedded abstraction-layer software, ensuring maximized portability across the STM32 portfolio a consistent set of middleware components such as RTOS, USB, TCP/IP and graphics all embedded software utilities with a full set of examples How does this software complement STM32Cube? The X-CUBE-SPN1 software package allows complete management of the L6474 fully integrated microstepping motor driver by providing complete APIs. It offers the following features: L6474 registers read, write Nucleo and expansion board configuration (GPIOs, PWMs, IRQs, etc.) Speed profile configuration Motion commands FLAG interrupts handling (alarms reporting) Microstepping handling Daisy chaining handling When initializing the L6474 driver, the user specifies the number of L6474 devices which are connected to the STM32 Nucleo Board (i.e. the number of X-NUCLEO-IHM01A1 expansion boards). Once set, the number of devices must not be changed. Depending on the number of devices, the driver: sets up the required GPIOs to handle the motor directions and the FLAG interrupt initializes the PWMs to act as step clock generators initializes the speed profile (acceleration, deceleration, min and max speed) from the parameters in l6474_target_config.h starts the SPI driver to communicate with the L6474 devices releases the reset of each of the L6474 devices disables the power bridge and clears the status flags of the L6474 devices loads the registers of each L6474 device with the predefined values in l6474_target_config.h Once initialization is complete, the user can modify the L6474 registers and speed profile configurations as desired. Most of the functions of the driver take a device ID (from 0 to 2) as an input parameter so users can specify which device configuration to modify. The user can also write a callback function and attach it to the Flag interrupt handler, depending on the actions to be performed when an alarm is reported (read the flags, clear and read the flags, etc.). The user can then request the movement of one or more motors (via device IDs). This request can be: 2/5 to move for a given number of steps in a specified direction DocID027149 Rev 2 X-CUBE-SPN1 How does this software complement STM32Cube? to go to a specific position to run until it receives a new instruction On reception of this request, the driver enables the PWM which is used as the step clock of the corresponding L6474. For each pulse period, the motor performs one step and an ISR (interrupt service routine) is triggered on the microcontroller side. This ISR is used by the firmware to count the number of performed steps and to update the speed. Indeed, the motor starts moving by using the minimum speed parameter. At each step, the speed is increased using the acceleration parameter. If the target position is far enough, the motor will perform a trapezoidal move: acceleration phase using the device acceleration parameter steady phase where the motor turns at maximum speed deceleration phase using the device deceleration parameter stop at the targeted position Otherwise, if the target position does not allow it to reach maximum speed, the motor will perform a triangular move: acceleration phase using the device acceleration parameter deceleration phase using the device deceleration parameter stop at the targeted position A move command can be interrupted at any time by either: a soft stop or softHiz which progressively decreases the speed using the deceleration parameter. Once the minimum speed is reached, the motor is stopped. a hard stop or hardHiz command which immediately stops the motor. When the motor is stopped using the softHiz or hardHiz command, the power bridge is automatically disabled. To inhibit the sending of a new command to a device before the completion of the previous one, the driver offers the BSP_MotorControl_WaitWhileActive() command which locks program execution until the motor stops moving. The driver also allows changing the step mode (from full step to 1/16 microstep mode) for each device. When the step mode is changed, the current position (ABS_POSITION register) is automatically reset, but the user must update the speed profile (maximum and minimum speed, acceleration deceleration). DocID027149 Rev 2 3/5 X-CUBE-SPN1 Revision history Revision history Table 1: Document revision history Date Version Changes 07-Nov-2014 1 Initial release. 19-Feb-2016 2 Text changes throughout document Updated cover page image Added reference to NUCLEO-F334R8 compatibility 4/5 DocID027149 Rev 2 X-CUBE-SPN1 IMPORTANT NOTICE – PLEASE READ CAREFULLY STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, enhancements, modifications, and improvements to ST products and/or to this document at any time without notice. Purchasers should obtain the latest relevant information on ST products before placing orders. ST products are sold pursuant to ST’s terms and conditions of sale in place at the time of order acknowledgement. Purchasers are solely responsible for the choice, selection, and use of ST products and ST assumes no liability for application assistance or the design of Purchasers’ products. No license, express or implied, to any intellectual property right is granted by ST herein. Resale of ST products with provisions different from the information set forth herein shall void any warranty granted by ST for such product. ST and the ST logo are trademarks of ST. All other product or service names are the property of their respective owners. Information in this document supersedes and replaces information previously supplied in any prior versions of this document. © 2016 STMicroelectronics – All rights reserved DocID027149 Rev 2 5/5