前言
當前 STM32 系列豐富多彩,多達 1000 多種的料號。同時,ST 針對電機 FOC 控制推出了 MC SDK V5.x 的馬達控制軟件系統。該軟件可以結合 Cubemx 生成馬達控制初始化代碼。由于 MC Workbench 軟件芯片選擇有限,不可能包含所有 ST 的產品料號,因此客戶需要使用該軟件時,會發現備選的芯片料號并未包含在 workbench 中。
本文針對這種場景,詳細說明如何結合 CubeMx 與 MC Workbench 生成 workbench 中所未包含芯片的控制程序,客戶通過該說明可以使用全系列 STM32 產品用于電機的 FOC 控制,為客戶帶來便利。
本文涉及到的開發板、驅動板、馬達分別是:Nucleo-STM32G474RET6 (控制板) + X-Nucleo-IHM16M1(功率板)+GBM2804H-100T(電機)以及 STM32G030K6T6 主芯片等。
1、在 MC Workbench
找不到相應 MCU 型號的示例-- STM32G030K6T6
1.1 MC Workbench 中 MCU 的選擇
使用 MC Workbench 生成電機控制工程時,選擇列表中提供的同系列中的 MCU。比如我們需要使用列表中沒有的
STM32G030K6T6 時,可以選擇列表中的 STM32G071RB(LQFP64)。接下來分別配置電機參數,電源,電壓/電流/溫
度保護,啟動參數,電流采樣等等后,生成電機控制工程。此步驟可參考 ST 往期的技術培訓。
1.2 STM32CubeMX 中的操作
生成工程后,打開 STM32CubeMX 軟件,選擇最終要使用的 MCU,如 STM32G030K6 來創建新工程。
1.3 導入上面的*.ioc 文件
選擇 File->Import Project,導入之前 1.1 中創建的 ioc 工程。
檢查下導入提示的 Import Status,如有錯誤或者警告,請根據 Error and Warning messages 進行調整。
1.4 檢查并生成工程
可以看到導入后的 STM32CubeMX 項目中已經包含有電機控制部分的 Middleware。
接下來選擇 GENERATE CODE,生成工程。
新工程的文件夾目錄如下,從該文件夾和上面的 IAR 工程空間都可以看到電機控制部分的 Middleware 已經包含進來了。
后面的編譯下載工作此處不再贅述。
1.5 注意事項
如果電腦中安裝多個 CubeMX 版本,需要注意在使用過程中必須保持版本的統一,否則導入不成功。
2. 2. 在 MC Workbench
有型號但沒相應封裝的 MCU 示例
-- STM32G474RET6
2.1 新建工程
如果有 Demo 板和電機,則選擇對應的 Demo 板與電機型號,如果沒有直接選擇 customer board,這邊我們看到沒有Nucleo-STM32G474RET6,因此我們選擇 customer board
2.2 配置電機與功率板相關配置
分別配置電源,電壓保護,電機,電流采樣,功率管;因為我們使用了現成的功率板與電機,這邊我們使用默認參數即可,如果是自己電機與功率板,請參考 ST 往期的技術培訓。
2.3 芯片選擇與配置
我們看到在 MC workbench 中并沒有STM32G474RET6 這個芯片型號,因此我們需要選擇與之相近的單片機。
原則是 Flash 大小相同優先選擇,型號相似次之,最后兼顧同一系列。這里我們可選擇 STM32G474QE 作為參考型號。
2.4 數字端口配置
這邊我們使用的功率器件為單一 PWM 與控制使能方式,結合硬件連接為如下配置:
如果是 PWM 互補的方式則還需要配置下橋控制引腳。
同樣的配置與硬件采樣相關的模擬端口
2.6 生成代碼
生成 STM32G474QE 的電機控制代碼,生成的 G474QE.ioc 用于后面 CubeMx 操作。
生成 CubeMx 工程文件
2.7 新建 CubeMx 工程
新建 STM32G474RET6 的工程
2.8 導入上面的 G474QE.ioc 文件
2.9 生成工程
2.10 驗證是否正常工作
編譯下載后,使用 Workbench 控制電機轉動
3.傳統的文件拷貝方式示例
-- STM32G474RET6
如果上面兩種簡易方式已經可以滿足移植要求了,下面的內容可以忽略,當然如果需要熟悉各個外設在電機控制中具體配置過程,下面內容可以做參考
3.1 前期準備
如 2.x 中所描述的生成 STM32G474QE 的電機工程,這邊不再贅述。
3.2 新建 CubeMx 工程
新建 STM32G474RET6 的工程
3.3 配置 ADC
配置 ADC1 配置引腳
可以直接打開 MC Workbench 生成的 STM32G474QE 的*.ioc 文件做為參考
配置 ADC1 配置功能
這邊注意 ADC1 左對齊,觸發信號為 Tim1 Trigger Out Event,只有 Inject 模式沒有 Regular 模式
使能 ADC1/2 中斷
配置 ADC2 引腳與功能
這邊 ADC2_IN14 是復用在 ADC1_IN14 的引腳上
配置 ADC2 功能
ADC2 有兩個通道用于電壓與溫度傳感采樣,使用 Regular 模式,用于電流采樣的使用 Inject 模式,這點區別于 ADC1的配置
3.4 配置 Timer1
配置 TIM1 輸出管腳
這邊只使用上橋的 PWM 輸出,因此只配置上橋輸出 PWM 波,其中 CH4 用于 ADC 觸發,無外部 PWM 輸出。
配置 TIM1 功能
這邊有些宏定義,可以參考 MC Workbench 生成的工程,注意定義為相同名字
使能 TIM1 的中斷
3.5 配置調試串口
3.6 使能 STM32G4 特有的 Cordic 外設
3.7 重新分配管腳
將管腳定義為硬件控制的引腳,增加輸入輸出引腳
3.8 管腳名稱重定義
重新定義管腳名稱,符合 MC Workbench 生成的命名
3.9 規劃 NVIC 的中斷優先級
這邊特別注意中斷優先級別的設定,將影響到程序運行。
3.10 不生成電機相關的中斷程序
因為電機相關的中斷程序中電機庫中已經有了,這邊不使用 CubeMx 生成中斷代碼
3.11 系統其他的配置
分別配置 RCC 為外部晶振,GPIO 口的默認設置,Sys 的調試部分
3.12 時鐘配置
這邊我們外部晶振為 24MHz,System 時鐘配置為 170MHz
3.13 生成工程
3.14 對生成工程進行修改、添加
拷貝文件
將 MC Workbench 生成的文件夾下的 MCSDK_v5.4.3 拷貝到 CubeMx 直接生成的 G474_MC 文件夾下,另外 Inc 與Src 文件也同時拷貝進去,需要選擇不覆蓋同名文件。
打開 CubeMx 生成的工程,在工程中添加 Group 以及增加文件到工程中。
增加 API 以及控制文件到工程中
增加頭文件包含目錄
修改 Main.c 文件
包含頭文件以及增加電機控制初始化函數
3.15 驗證是否正常工作
編譯下載后,使用 Workbench 控制電機轉動
THE END
審核編輯 :李倩
-
芯片
+關注
關注
459文章
51925瀏覽量
433551 -
WORKBENCH
+關注
關注
0文章
24瀏覽量
11209 -
控制程序
+關注
關注
1文章
51瀏覽量
9219 -
CubeMx
+關注
關注
0文章
31瀏覽量
1549
原文標題:工程師筆記|使用 CubeMx 生成未在 MC SDK V5.4.4 中包含的芯片的電機控制代碼
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
workbench6.3.2生成的代碼,無法用pilot電機參數識別,無法通訊怎么解決?
為什么MotorControl Workbench無法生成代碼?
通過docker下載的DL Workbench,DL Workbench在導入模型時停止響應是怎么回事?
無法將自定義COCO數據集導入到OpenVINO? DL Workbench怎么解決?
請問DLPDLCR4710EVM-G2如何進行控制程序的二次開發?
STM32CubeMX生成的代碼,是怎樣的HAL架構?

RA-T馬達工程串口直接啟動Workbench調試方案

揭秘NVIDIA AI Workbench 如何助力應用開發

評論