UM2300 X-CUBE-SPN14 步进电机驱动软件扩展 STM32Cube 用户手册

介绍
STM14Cube 的 X-CUBE-SPN32 扩展包可让您完全控制步进电机的操作。
当与一个或多个 X-NUCLEO-IHM14A1 扩展板结合使用时,该软件允许兼容的 STM32 Nucleo 开发板控制一个或多个步进电机。
它建立在 STM32Cube 软件技术之上,可轻松跨不同 STM32 微控制器进行移植。
该软件附带amp一个步进电机的实现。 它与 NUCLEO-F401RE、NUCLEOOF334R8、NUCLEO-F030R8 或 NUCLEO-L053R8 开发板兼容,X-NUCLEO-IHM14A1 扩展板安装在顶部。
相关链接
访问 STM32Cube 生态系统 web www.st.com 上的页面了解更多信息
缩略语
表 1. 首字母缩略词列表
|
缩写 |
描述 |
| API |
应用程序编程接口 |
|
巴西石油公司 |
董事会支持包 |
| 信息系统 |
Cortex® 微控制器软件接口标准 |
|
哈尔 |
硬件抽象层 |
| 集成开发环境 |
整合开发环境 |
|
引领 |
发光二极管 |
超过view
X-CUBE-SPN14 软件包扩展了 STM32Cube 的功能。 其主要特点包括:
- 用于完整管理集成在 X-NUCLEO-IHM820A14 扩展板中的 STSPIN1(低功率步进电机驱动器)设备的驱动层
- 设备参数读写模式,GPIO、PWM和IRQ配置,微步进、方向位置、速度、加速、减速和扭矩控制,全自动全步切换管理; 高阻抗或保持停止模式选择、启用和待机管理
- 故障中断处理
- 单步进电机控制amp申请
- 借助 STM32Cube,可轻松跨不同 MCU 系列进行移植
- 免费、用户友好的许可条款
该软件通过以下方式实现伪寄存器和运动命令:
- 配置用于生成步进时钟和音量的定时器tag参考
- 管理设备参数,如加速度、减速度、最小值。 和最大。 速度,位置速度 profile 边界、标记位置、微步模式、方向、运动状态等。
该软件处理一个 STSPIN820 设备。
在每个滴答定时器脉冲结束时,执行回调以调用控制电机运动的步进时钟处理程序
通过管理:
- 运动状态(例如,在目标目的地停止运动)
- 通过 GPIO 级别的电机方向
- 以微步为单位的相对和绝对电机位置
- 通过零、正、负加速度的速度
当启用自动全步切换功能时,通过改变步进时钟频率和可选的步进模式来设置速度。 用于步进时钟的定时器配置为输出比较模式。 在每个步进时钟处理程序调用中计算新的捕获比较寄存器值以实现频率控制。
对于给定的微步进模式,速度是步进时钟频率的线性函数,可以通过软件从全步进到 1/256 步进变化。
要使用 STSPIN820 驱动程序库,您必须运行初始化函数,它:
- 设置所需的 GPIO 以启用桥接和管理故障引脚 EN\FAULT、专用 MODE1、
MODE2和MODE3步进选择引脚,电机方向的DIR引脚,衰减模式的DECAY引脚
选择和待机复位引脚 STBY\RESET; - 在输出比较模式下为 STCK 引脚和定时器参考电压设置定时器tag在 PWM 模式下为 REF 引脚生成;
- 使用来自 stspin820_target_config.h 的值或使用专用初始化结构在主函数中定义的值加载驱动程序参数。
初始化后可以通过调用特定函数来修改驱动参数。 您还可以编写回调函数并将它们附加到: - 报告过流或热警报时执行某些操作的标志中断处理程序
- 库在报告错误时调用的错误处理程序后续运动命令包括:
- BSP_MotorControl_Move 向特定方向移动给定步数
- BSP_MotorControl_GoTo、BSP_MotorControl_GoHome、BSP_MotorControl_GoMark 使用最短路径前往特定位置
- BSP_MotorControl_CmdGoToDir 向特定方向移动到特定位置
- BSP_MotorControl_Run 无限期运行
速度亲file 完全由微控制器处理。 电机以 BSP_MotorControl_SetMinSpeed 最小速度设置开始移动,然后在每一步由
BSP_MotorControl_SetAcceleration 加速度值。
如果运动命令的目标位置足够远,电机通过以下方式执行梯形运动:
- 使用设备加速参数加速
- 保持稳定在 BSP_MotorControl_SetMaxSpeed 最大速度
- 通过 BSP_MotorControl_SetDeceleration 减速
- 停在目标目的地
如果目标位置太近,电机无法达到最大速度,它会执行三角运动,包括: - 加速度
- 减速
- 停在目标目的地
运动命令可以随时停止,BSP_MotorControl_SoftStop 使用减速参数逐渐降低速度或立即停止电机的 BSP_MotorControl_HardStop 命令。 如果之前设置了 HIZ_MODE 停止模式 (BSP_MotorControl_SetStopMode),则当电机停止时,电源桥会自动禁用。
当电机停止或通过 BSP_MotorControl_Run 请求运动时,可以更改方向、速度、加速度和减速度。
为了在前一个命令完成之前阻止新命令,BSP_MotorControl_WaitWhileActive 锁定程序执行,直到电机停止。
BSP_MotorControl_SelectStepMode 可以将步进模式从全步更改为 1/256 步。 当步进模式改变时,设备和当前位置和速度被重置。
建筑学
本次软件扩展完全符合STM32Cube架构,并对其进行扩展以支持使用步进电机驱动器的应用程序开发。
图 1. X-CUBE-SPN14 软件架构

该软件基于 STM32CubeHAL 硬件抽象层,用于 STM32 微控制器。 该包通过用于电机控制扩展板的板支持包 (BSP) 和用于 STSPIN32 低容量的 BSP 组件驱动程序扩展了 STM820Cubetage 步进电机驱动器。
应用软件使用的软件层是:
- STM32Cube HAL层: 一组简单、通用和多实例的 API(应用程序编程接口)
与上层应用程序、库和堆栈层交互。 它由基于通用和扩展 API 组成
在一个通用架构上,这样构建在它上面的层,例如中间件层,可以在不需要特定微控制器单元 (MCU) 硬件配置的情况下运行。 这种结构提高了库代码的可重用性,并保证了在其他设备上的轻松移植性。
板级支持包 (BSP) 层: 支持 STM32 Nucleo 板上的外设,除了
微控制器。 这组有限的 API 为某些特定于开发板的外围设备(如 LED 和用户按钮)提供了编程接口,并有助于识别特定的开发板版本。 电机控制 BSP 为各种电机驱动器组件提供编程接口。 它与 X-CUBE-SPN820 软件中 STSPIN14 电机驱动器的 BSP 组件相关联。
资料夹结构

该软件位于两个主要文件夹中:
- 驱动程序,具有:
- STM32Cube HAL files 在 STM32L0xx_HAL_Driver、STM32F0xx_HAL_Driver、STM32F3xx_HAL_Driver 或 STM32F4xx_HAL_Driver 子文件夹中。 这些 files 直接取自 STM32Cube 框架,仅包括运行电机驱动程序所需的那些amp莱斯。
- 带有 CMSIS(Cortex® 微控制器软件接口标准)的 CMSIS 文件夹,ARM 的 Cortex-M 处理器系列的独立于供应商的硬件抽象层。 该文件夹也与 STM32Cube 框架相同。
- 带有代码的 BSP 文件夹 files 用于 X-NUCLEO-IHM14A1 配置、STSPIN820 驱动程序和电机控制 API。
- 项目, 其中包含几个使用前amp适用于不同 STM820 Nucleo 平台的 STSPIN32 电机驱动程序文件。
BSP文件夹
X-CUBE-SPN14 软件包括以下小节中描述的 BSP。
STM32L0XX-Nucleo/STM32F0XX-Nucleo/STM32F3XX Nucleo/STM32F4XX-Nucleo BSPs
这些 BSP 为每个兼容的 STM32 Nucleo 开发板提供了一个接口,以配置其外围设备并将其与 X-NUCLEO-IHM14A1 扩展板配合使用。 每个子文件夹有两个.c/.h file 对:
- stm32XXXx_nucleo.c/h:这些未修改的STM32Cube框架 files 为特定的 STM32 Nucleo 板提供用户按钮和 LED 功能。
- stm32XXXx_nucleo_ihm14a1.c/h:这些 files 专用于配置 PWM、GPIO 和 X NUCLEO-IHM14A1 扩展板操作所需的中断启用/禁用。
电机控制 BSP
该 BSP 提供了一个通用接口,可以通过 MotorControl/motorcontrol.c/h 访问各种电机驱动器的驱动功能,例如 L6474、powerSTEP01、L6208 和 STSPIN820 file 一对。
这些 files 定义所有驱动配置和控制功能,然后通过 motorDrv_t 结构映射到给定扩展板上使用的电机驱动组件的功能 file (在 Components\Common\motor.h. 中定义)。 该结构定义了一个函数指针列表,这些指针在其实例化期间在相应的电机驱动器组件中填充。 对于 X-CUBE-SPN14,该结构称为 stspin820Drv(参见 file: BSP\Components\stspin820\stspin820.c)。
由于电机控制 BSP 对所有电机驱动器扩展板都是通用的,因此某些功能不适用于给定的扩展板。 在驱动程序组件中的 motorDrv_t 结构的实例化期间,不可用的函数被空指针替换。
STSPIN280 BSP 组件
STSPIN820 BSP组件提供文件夹中STSPIN820电机驱动的驱动功能
stm32_cube\Drivers\BSP\Components\STSPIN820。
这个文件夹有 3 files:
- stspin820.c:STSPIN820驱动的核心功能
- stspin820.h:STSPIN820 驱动函数及其相关定义的声明
- stspin820_target_config.h:STSPIN820 参数和电机设备上下文的预定义值
项目文件夹
对于每个 STM32 Nucleo 平台,一个前amp文件项目位于 stm32_cube\Projects\Multi\Examp文件\运动控制\:
- IHM14A1_Examp乐福1Motor examp单电机配置的控制功能文件
前任amp对于每个兼容的 IDE,文件都有一个文件夹:
- 用于 IAR 嵌入式工作台的 EWARM
- 用于 ARM/Keil µVision 的 MDK-ARM
- STM32CubeIDE 用于STM32的集成开发环境
以下代码 file还包括:
- inc\main.h:主标题 file
- inc\stm32xxxx_hal_conf.h:HAL 配置 file
- inc\stm32xxxx_it.h:中断处理程序的头文件
- src\main.c: 主程序(ex 的代码ample 基于 STSPIN820 的电机控制库)
- src\stm32xxxx_hal_msp.c:HAL 初始化例程
- src\stm32xxxx_it.c:中断处理程序
- src\system_stm32xxxx.c:系统初始化
- src\clock_xx.c:时钟初始化
软件所需资源
MCU 控制单个 STSPIN820(一个 X-NUCLEO IHM14A1 板)和两者之间的通信通过七个 GPIO(STBY\RESET、EN\FAULT、MODE1、MODE2、MODE3、DIR、DECAY 引脚)和一个用于 REF 引脚的 PWM 处理. STCK 引脚的 GPIO 配置为用作 TIMER OUTPUT COMPARE 备用功能。
为了处理过流和过热警报,X-CUBE-SPN14 软件在启用或禁用功率桥之后,使用在用于 EN\FAULT 引脚的 GPIO 上配置的外部中断。
表 2. X-CUBE-SPN14 软件所需的资源
|
资源 F4xx |
资源 F3xx | 资源 F0xx | 资源 L0xx | 别针 | 功能(板) |
| 端口 A GPIO 10
EXTI15_10_IRQn |
端口 A GPIO 10
EXTI15_10_IRQn |
端口 A GPIO 10
EXTI4_15_IRQn |
端口 A GPIO 10
EXTI4_15_IRQn |
D2 |
EN/故障T (英文) |
|
端口 B GPIO 3 定时器 2 通道 2 |
端口 B GPIO 3
定时器 2 通道 2 |
端口 B GPIO 3
定时器 15 通道 1 |
端口 B GPIO 3
定时器 2 通道 2 |
D3 |
STCK
(时钟) |
|
端口 B GPIO 4 |
D5 |
衰变
(DEC) |
|||
| 端口 A GPIO 8 |
D7 |
方向 (目录) |
|||
| 端口 A GPIO 9 |
D8 |
待机/复位 (待机) |
|||
|
P端口 C GPIO 7 定时器 3 通道 2 |
端口 C GPIO 7
定时器 3 通道 2 |
端口 C GPIO 7
定时器 3 通道 2 |
端口 C GPIO 7
定时器 22 通道 2 |
D9 |
脉宽调制参考
(参考) |
|
端口 A GPIO 7 |
D11 |
模式3
(M3) |
|||
|
端口 A GPIO 6 |
D12 |
模式2 (M2) |
|||
| 端口 A GPIO 5 |
D13 |
模式1 (M1) |
|||
蜜蜂
X-CUBE-SPN14 API 在电机控制 BSP 中定义。 它的函数包含“BSP_MotorControl_”前缀。
笔记: 并非该模块的所有功能都适用于 STSPIN820,因此适用于 X-NUCLEO-IHM14A1 扩展板。
完整的用户 API 函数和参数说明编译在 HTML 中 file 在软件文档文件夹中。
Samp文件应用说明
前任ampProjects 目录中提供了使用 X-NUCLEO-IHM14A1 扩展板和兼容的 STM32 Nucleo 开发板的应用程序,可用于多个 IDE(请参阅第 2.3.2 节项目文件夹)。
系统设置指南
硬件说明
- STM32 核
STM32 Nucleo 开发板为用户提供了一种经济且灵活的方式来测试解决方案并使用任何 STM32 微控制器系列构建原型。
Arduino 连接支持和 ST morpho 连接器可以轻松扩展
STM32 Nucleo 开放式开发平台,有多种专用扩展板可供选择。
STM32 Nucleo 板不需要单独的探针,因为它集成了 ST-LINK/V2-1 调试器/
程序员。
STM32 Nucleo 板带有全面的 STM32 软件 HAL 库以及各种打包软件amp用于不同 IDE(IAR EWARM、Keil MDK-ARM、STM32CubeIDE、mbed 和 GCC/LLVM)的文件。
所有 STM32 Nucleo 用户都可以免费访问 mbed 在线资源(编译器、C/C++ SDK 和开发人员
社区)在 www.mbed.org 上轻松构建完整的应用程序。
图 3. STM32 Nucleo 板

- X-NUCLEO-IHM14A1步进电机驱动扩展板
X-NUCLEO-IHM14A1 电机驱动器扩展板基于用于步进电机的 STSPIN820 单片驱动器。
它代表了一种经济实惠且易于使用的解决方案,用于在您的 STM32 Nucleo 项目中驱动步进电机,实现电机驱动应用,例如 2D/3D 打印机、机器人和安全摄像头。
STSPIN820 实现了 PWM 电流控制,具有可通过外部电阻器调节的恒定关断时间和高达 256 步的微步分辨率。
X-NUCLEO-IHM14A1 扩展板兼容 Arduino UNO R3 连接器和 ST morpho 连接器,因此可以插入 STM32 Nucleo 开发板并与额外的 X-NUCLEO 扩展板堆叠。

- 其他硬件组件
要完成硬件设置,您需要:- 1 个双极(7 至 45 V)步进电机
- 用于 X-NUCLEO-IHM14A1 板的带有两条电缆的外部直流电源
- 用于将 STM32 Nucleo 板连接到 PC 的 USB A 型转 mini-B USB 电缆
- 软件要求
需要以下软件组件来设置合适的开发环境
基于电机驱动器扩展板创建应用程序:- X-CUBE-SPN14 STM32Cube 扩展用于 STSPIN820 低音量tage 步进电机驱动器应用开发。 X-CUBE-SPN14 固件和相关文档可在 www.st.com。
- 以下开发工具链和编译器之一:
- 凯尔雷亚尔View 微控制器开发套件(MDK-ARM)工具链 V5.27
- IAR Embedded Workbench for ARM (EWARM) 工具链 V8.50
- STM32集成开发环境(STM32CubeIDE)
硬件和软件设置
设置驱动单个电机
在 STM32 Nucleo 板上配置以下跳线:
- JP1关闭
- UV5侧的JP5(PWR)
- JP6 (IDD) 开
将 X-NUCLEO-IHM14A1 扩展板配置为: - 将 R7 电位器调至 1 kΩ。
- 将 S1、S2、S3 和 S4 开关设置到下拉侧,如图 4 所示。 X-NUCLEO-IHM14A1 步进电机
驱动扩展板。 通过MODE1、MODE2、MODE3选择微步进模式
由 STM32 Nucleo 板控制的电平。
正确配置板后: - 通过 Arduino UNO 连接器将 X-NUCLEO-IHM14A1 扩展板插入 STM32 Nucleo 板顶部
- 使用 USB 电缆通过 USB 连接器 CN32 将 STM1 Nucleo 板连接到 PC 为板供电
- 通过将 Vin 和 Gnd 连接器连接到直流电源,打开 X-NUCLEO-IHM14A1 扩展板的电源
- 将步进电机连接到 X-NUCLEO IHM14A1 桥接连接器 A+/- 和 B+/-

系统设置准备就绪后:
- 打开您首选的工具链
- 根据 STM32 Nucleo 板,从以下位置打开软件项目:
- \stm32_cube\Projects\Multi\Examp文件\运动控制\IHM14A1_ExampleFor1Motor\YourToolChainNam
e\STM32F401RE-Nucleo 用于 Nucleo STM32F401 - \stm32_cube\Projects\Multi\Examp文件\运动控制\IHM14A1_ExampleFor1Motor\YourToolChainNam
e\STM32F030R8-Nucleo 用于 Nucleo STM32F334 - \stm32_cube\Projects\Multi\Examp文件\运动控制\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32F030R8-Nucleo 用于 Nucleo STM32F030
- \stm32_cube\Projects\Multi\Examp文件\运动控制\IHM14A1_ExampleFor1Motor\YourToolChainName\STM32L053R8-Nucleo 用于 Nucleo STM32L053
- \stm32_cube\Projects\Multi\Examp文件\运动控制\IHM14A1_ExampleFor1Motor\YourToolChainNam
- 使默认 STSPIN820 参数适应您的低音量tage 步进电机特性,或者:
- 使用带NULL指针的BSP_MotorControl_Init,打开stm32_cube\Drivers\BSP\Components\STSPIN820\STSPIN820_target_config.h根据需要修改参数
- – 将 BSP_MotorControl_Init 与具有适当值的 initDevicesParameters 结构的地址一起使用。
- 全部重建 files 并将您的图像加载到目标内存中。
- 运行前amp乐电机自动启动(有关演示序列的详细信息,请参见 main.c)。
修订历史
|
日期 |
版本 | 更改 |
|
17 年 2017 月 XNUMX 日 |
1 |
初始版本。 |
| 20 年 2021 月 XNUMX 日 | 2 |
更新了第 2.3.2 节项目文件夹和第 3.2 节软件要求。 删除了第 2 节 什么是 STM32Cube? 并将其替换为简介中的链接。 |
重要提示–请仔细阅读
STMicroelectronics NV及其子公司(“ ST”)保留随时对ST产品和/或本文档进行更改,更正,增强,修改和改进的权利,恕不另行通知。 购买者应在下订单之前获取有关ST产品的最新相关信息。 意法半导体的产品将根据意法半导体在确认订单时的销售条款和条件进行销售。
购买者对ST产品的选择,选择和使用负全部责任,ST不承担应用协助或购买者产品设计的责任。
ST 在此不授予任何明示或暗示的知识产权许可。
如果转售的 ST 产品的规定与此处所述的信息不同,则 ST 对该产品授予的任何保证将失效。
ST 和 ST 标志是 ST 的商标。 有关 ST 商标的更多信息,请参阅 www.st.com/trademarks. 所有其他产品或服务
名称是其各自所有者的财产。
本文档中的信息取代并替换了该文档之前任何版本中提供的信息。
© 2021 STMicroelectronics – 保留所有权利
文件/资源
![]() |
ST UM2300 X-CUBE-SPN14 步进电机驱动软件扩展,适用于 STM32Cube [pdf] 用户手册 UM2300、X-CUBE-SPN14 STM32Cube步进电机驱动软件扩展、UM2300 X-CUBE-SPN14 STM32Cube步进电机驱动软件扩展、X-CUBE-SPN14步进电机驱动软件扩展、STM32Cube驱动软件扩展、电机驱动软件扩展STM32Cube, STM32Cube 扩展, STM32Cube |




