STM32H743+CubeMX-SPI与DRV8889串行通讯,驱动步进电机

一、前言


DRV8889其实就是一款步进驱动器芯片,由大名鼎鼎的TI制造。这款步进驱动芯片体积相当小,比1元的硬币还要小一点。我用DRV8889设计了一款1托2的步进电机驱动器(使用两个DRV8889即可),整个项目的软件与硬件都自己完成,最后发现其效果还不错。值得注意的是,这个步进驱动芯片不集成步进电机的加减速算法。例如梯形速度曲线算法,S型速度曲线算法都需要自己实现。为什么需要速度曲线算法?说白了就是为了避免步进电机丢步。

后续我会更新梯形速度曲线算法的源代码与教程,还有S型速度曲线算法的源代码与教程。老实说,S型曲线算法比较复杂一些,大部分的应用使用梯形运动曲线即可。

这篇博文主要介绍使用我编写的DRV8889驱动代码(bsp_DRV8889.h与bsp_DRV8889.c),使得MCU与DRV8889通过SPI接口正常通讯,完成写入DRV8889的寄存器与读取DRV8889寄存器的功能,为驱动步进电机做好准备。以下是DRV8889-Q1的功能介绍。

Note : 并不是说有了DRV8889驱动代码就不需要看datasheet了,一定要多看datasheet(虽然是英文版,也要多看),尤其是寄存器章节
在这里插入图片描述
在这里插入图片描述
官方网址:https://www.ti.com.cn/product/cn/DRV8889-Q1?keyMatch=DRV8889-Q1&tisearch=search-everything&usecase=GPN#product-details##features

STM32工程:

链接:https://pan.baidu.com/s/19kXSnA7eRpuwnroSJk21LQ
提取码:bxek

二、硬件设计


简单介绍一下硬件设计。

2.1、PCB原理图设计

DRV8889提供了原理图的参考设计,直接使用就好了。

  • MCU_SLEEP接到MCU的PH2
  • MCU_DRVOFF接到MCU的PH3
  • MCU_DIR接到MCU的PH4
  • MCU_STEP接到MCU的PA2
  • SPI1_SCK接到MCU的PA5
  • SPI1_MISO接到MCU的PA6
  • SPI1_MOSU接到MCU的PA7
  • SPI1_NSS接到MCU的PA4
  • MCU_FAULT接到MCU的PC4

在这里插入图片描述

2.2、PCB Layout

电容尽量接近IC,还有注意一下IC底部散热孔的设计。
在这里插入图片描述

三、CubeMX


3.1、RCC

在这里插入图片描述

3.2、DEBUG

在这里插入图片描述

3.3、Clock Configuration

在这里插入图片描述

3.4、SPI

在这里插入图片描述
在这里插入图片描述

3.5、GPIO

在这里插入图片描述

3.6、TIM

先用定时器产生PWM波,控制步进电机转起来。
在这里插入图片描述

3.7、Project Manager

生成代码。
在这里插入图片描述
在这里插入图片描述

四、Keil


4.1、Target

我最近做项目都是使用V6.14,同学们也可以继续使用V5。Use MicroLIB一定要勾选!!!!
在这里插入图片描述

4.2、Output

在这里插入图片描述

4.3、C/C++(AC6)

我的优化等级一般选择3级,这个按大家的习惯来就好了。
在这里插入图片描述

4.4、Debug

在这里插入图片描述

4.5、添加DRV8889驱动代码

在这里插入图片描述

4.6、添加include路径

在这里插入图片描述

五、代码


我是使用MDK的中间件EventRecorder来重定向printf,也可以使用USART来重定向printf都可以的。一定要实现printf重定向。

5.1、main.h

在这里插入图片描述

5.2、bsp_DRV8889.c

一般情况下,用户只需要修改相电流,脉冲细分数,还有转向。

当前我设置相电流是18.75%,脉冲细分数1/8(最大支持1/255),电机正转(CW)。其实电机的转向是根据DIR引脚决定的,这里只是封装了一下。
在这里插入图片描述
在这里插入图片描述

5.3、tim.c

使用定时器17的定时器溢出来翻转STEP引脚,从而产生PWM脉冲给步进驱动器IC,当前使用的是一种调试手段,实际项目需要使用定时器的PWM模式输出PWM脉冲给步进驱动器IC。
在这里插入图片描述

5.4、main.c

在这里插入图片描述
在这里插入图片描述

六、DEBUG


6.1、观察实时变量

TRQ_DAC = 0x0D表示相电流设置了18.75%。
MICROSTEP_MODE = 0x05表示脉冲细分数为1/8。表示写入DRV8889寄存器成功了。
在这里插入图片描述

6.2、观测步进电机

步进电机在转动了。
在这里插入图片描述

  • 13
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wallace Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值