日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2025/3/15 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32H743+CubeMX-SPI与DRV8889串行通讯,驱动步进电机 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、前言
  • 二、硬件設(shè)計(jì)
    • 2.1、PCB原理圖設(shè)計(jì)
    • 2.2、PCB Layout
  • 三、CubeMX
    • 3.1、RCC
    • 3.2、DEBUG
    • 3.3、Clock Configuration
    • 3.4、SPI
    • 3.5、GPIO
    • 3.6、TIM
    • 3.7、Project Manager
  • 四、Keil
    • 4.1、Target
    • 4.2、Output
    • 4.3、C/C++(AC6)
    • 4.4、Debug
    • 4.5、添加DRV8889驅(qū)動(dòng)代碼
    • 4.6、添加include路徑
  • 五、代碼
    • 5.1、main.h
    • 5.2、bsp_DRV8889.c
    • 5.3、tim.c
    • 5.4、main.c
  • 六、DEBUG
    • 6.1、觀察實(shí)時(shí)變量
    • 6.2、觀測(cè)步進(jìn)電機(jī)

一、前言


DRV8889其實(shí)就是一款步進(jìn)驅(qū)動(dòng)器芯片,由大名鼎鼎的TI制造。這款步進(jìn)驅(qū)動(dòng)芯片體積相當(dāng)小,比1元的硬幣還要小一點(diǎn)。我用DRV8889設(shè)計(jì)了一款1托2的步進(jìn)電機(jī)驅(qū)動(dòng)器(使用兩個(gè)DRV8889即可),整個(gè)項(xiàng)目的軟件與硬件都自己完成,最后發(fā)現(xiàn)其效果還不錯(cuò)。值得注意的是,這個(gè)步進(jìn)驅(qū)動(dòng)芯片不集成步進(jìn)電機(jī)的加減速算法。例如梯形速度曲線算法,S型速度曲線算法都需要自己實(shí)現(xiàn)。為什么需要速度曲線算法?說(shuō)白了就是為了避免步進(jìn)電機(jī)丟步。

后續(xù)我會(huì)更新梯形速度曲線算法的源代碼與教程,還有S型速度曲線算法的源代碼與教程。老實(shí)說(shuō),S型曲線算法比較復(fù)雜一些,大部分的應(yīng)用使用梯形運(yùn)動(dòng)曲線即可。

這篇博文主要介紹使用我編寫的DRV8889驅(qū)動(dòng)代碼(bsp_DRV8889.h與bsp_DRV8889.c),使得MCU與DRV8889通過SPI接口正常通訊,完成寫入DRV8889的寄存器與讀取DRV8889寄存器的功能,為驅(qū)動(dòng)步進(jìn)電機(jī)做好準(zhǔn)備。以下是DRV8889-Q1的功能介紹。

Note : 并不是說(shuō)有了DRV8889驅(qū)動(dòng)代碼就不需要看datasheet了,一定要多看datasheet(雖然是英文版,也要多看),尤其是寄存器章節(jié)


官方網(wǎng)址: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

二、硬件設(shè)計(jì)


簡(jiǎn)單介紹一下硬件設(shè)計(jì)。

2.1、PCB原理圖設(shè)計(jì)

DRV8889提供了原理圖的參考設(shè)計(jì),直接使用就好了。

  • 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底部散熱孔的設(shè)計(jì)。

三、CubeMX


3.1、RCC

3.2、DEBUG

3.3、Clock Configuration

3.4、SPI


3.5、GPIO

3.6、TIM

先用定時(shí)器產(chǎn)生PWM波,控制步進(jìn)電機(jī)轉(zhuǎn)起來(lái)。

3.7、Project Manager

生成代碼。

四、Keil


4.1、Target

我最近做項(xiàng)目都是使用V6.14,同學(xué)們也可以繼續(xù)使用V5。Use MicroLIB一定要勾選!!!!

4.2、Output

4.3、C/C++(AC6)

我的優(yōu)化等級(jí)一般選擇3級(jí),這個(gè)按大家的習(xí)慣來(lái)就好了。

4.4、Debug

4.5、添加DRV8889驅(qū)動(dòng)代碼

4.6、添加include路徑

五、代碼


我是使用MDK的中間件EventRecorder來(lái)重定向printf,也可以使用USART來(lái)重定向printf都可以的。一定要實(shí)現(xiàn)printf重定向。

5.1、main.h

5.2、bsp_DRV8889.c

一般情況下,用戶只需要修改相電流,脈沖細(xì)分?jǐn)?shù),還有轉(zhuǎn)向。

當(dāng)前我設(shè)置相電流是18.75%,脈沖細(xì)分?jǐn)?shù)1/8(最大支持1/255),電機(jī)正轉(zhuǎn)(CW)。其實(shí)電機(jī)的轉(zhuǎn)向是根據(jù)DIR引腳決定的,這里只是封裝了一下。

5.3、tim.c

使用定時(shí)器17的定時(shí)器溢出來(lái)翻轉(zhuǎn)STEP引腳,從而產(chǎn)生PWM脈沖給步進(jìn)驅(qū)動(dòng)器IC,當(dāng)前使用的是一種調(diào)試手段,實(shí)際項(xiàng)目需要使用定時(shí)器的PWM模式輸出PWM脈沖給步進(jìn)驅(qū)動(dòng)器IC。

5.4、main.c


六、DEBUG


6.1、觀察實(shí)時(shí)變量

TRQ_DAC = 0x0D表示相電流設(shè)置了18.75%。
MICROSTEP_MODE = 0x05表示脈沖細(xì)分?jǐn)?shù)為1/8。表示寫入DRV8889寄存器成功了。

6.2、觀測(cè)步進(jìn)電機(jī)

步進(jìn)電機(jī)在轉(zhuǎn)動(dòng)了。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的STM32H743+CubeMX-SPI与DRV8889串行通讯,驱动步进电机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。