2020年7月28日 星期二

STM32的Cube生態系

大家好
最近過得好嗎?

今天要來分享一下STM32在Cube系列中對馬達控制所做的努力
如果你本身也在從事馬達控制相關的行業
歡迎您一同來交流分享
我不是STM官方
單純站在一個使用者的角度來討論
如果有錯誤的地方
也請不吝指教

==========================================================

Cube系列是STM32最近幾年軟體開發平台整合的重點
為了可以更好地將所有的元件做系統化的連結
提供更方便、更符合使用者需求的開發環境
因此才有了Cube這一整個系列的軟體工具

==========================================================

從早期蒐集MCSDK開始
到Cube的加入
一路走來也有七八年的時間了
STM32在這部分的整合一直很用心
認真說
剛開始的MCSDK很工程師style
雖然有雛形出來了
但使用上還是有很多的不便
特別是拿到完全不知道特性的馬達
根本不曉得該怎麼切入
然而到了4.x版本中後期
銜接到5.x版本的這段時間
MCSDK開始變得好用
很大一部分原因就是有了Cube的加入
還有Motor Profile的加入與改良

==========================================================

現在 (2020.07.29)
基本上整個馬達的開發環境應該算是健全了


推薦幾款開發工具的官方連結
有興趣的人可以去下載來玩看看

X-CUBE-MCSDK (New Version 5.4.4)

STM32CubeMX (New Version 6.0.0)

STM32CubeIDE (New Version 1.4.0)

STM32CubeProgrammer (New Version 2.5.0)


==========================================================

X-CUBE-MCSDK (New Version 5.4.4)

這款老牌的馬達開發環境
應該所有STM32愛用者有在玩馬達控制的都不陌生
目前最新的版本已經更新到5.4.4
而最新的版本支援了什麼?

第一個最重要的
就是馬達特調晶片的加入 (G4 系列 MCU)
(謎之音:那不是去年的事了?ESC板子就是用G4呀!)
好啦好啦!我當然知道去年就加入了
但是今年才完善的呀!
不管是對開發板的支援還是PID控制的調整
都比以前要順得多

第二個重要的
就是Position Control的加入
這在5.4.3的版本中就有了
但同樣在5.4.4的版本更加完善
將大多數 G4 系列可以對應的板子都加進來
不過如果您用了5.4.3以後的版本
就不能改回5.4.1以前的版本
原因也在於Position Control的加入
讓原來的馬達參數結構有了一些變化
所以只要換上新的版本後就回不去了
要更新跑道的人記得先將舊版本備份唷!

第三個重要的
就是CubeIDE的加入與完善
之前一直在用MDK5(Keil C)
(SW4、CubeIDE編譯門檻頗高)
這一次用CubeIDE真是無縫銜接
不會再出現一大堆無法編譯
卻搞不懂該怎麼調整的程式碼或環境設定
新版本程式碼一產生就可以編譯成功
直接下載到板子上
然後馬達就動起來了
一整個超感動!

然後跟之前一樣
也是有分一般的版本及完整的版本
差別在馬達控制函數有沒有開放給自己改
當然FOC底層的程式碼還是看不到的
但是可以引用的參數就有開放調整
不是完全寫死的
如果您是進階一些的馬達控制開發人員
建議要申請完整版來試唷!

==========================================================

STM32CubeMX (New Version 6.0.0)

你沒看錯
CubeMX真的已經進化到6開頭的版本了
不過對馬達控制來說
5.6.x的版本應該就很好用了
H7系列是一個新境界
但對馬達控制並不是那麼適合

什麼是CubeMX?
簡單說就是幫你設定好IO功能的開發環境
現在的User Manual動輒數千頁
要看完再來設定MCU都已經天荒地老了
所以圖像化的設定環境已經是趨勢
MCSDK更是不能沒有CubeMX
少了就完全無法產生程式碼了
所以安裝完MCSDK的人
記得要接著安裝CubeMX

==========================================================

STM32CubeIDE (New Version 1.4.0)

這個就是官方提供的免費編譯環境
如果你不想買Keil C或IAR C
那可以試試看用CubeIDE
雖然程式空間轉出來比Keil C多了快一倍(FOC的部分)
(也許是我不知道該怎麼設定編譯環境,總之以初始設定轉出來真的多一倍)
但其他IO應用倒是還好
如果沒有效率上的特別要求
一定要試試免費又好用的CubeIDE
而他所整合的周邊監看環境也很好用
如果你的應用剛好需要
可以試著用監看環境協助你調整一下程式

而我認為最大的好處
其實是程式閱讀的部分
可以在程式碼直接看到函式內容
也可以在Outline視窗中直接看到所有變數、函式的名稱
點選就可以直接找到相關內容
這部分Keil C真的沒得比
同時因為是官方軟體
所以連同CubeMX也整合進來
以往要開兩套軟體交替設定IO、GenCode
設定後MDK5還要Reload程式碼才能編譯
現在就在CubeIDE裡一次搞定
雖然還是會有一些過場動作
(詢問要不要GenCode、Reload程式碼時的視窗更新...)
但是整合在一起
用起來的感覺就是不一樣
你也試試看就知道我在說什麼了

==========================================================

STM32CubeProgrammer (New Version 2.5.0)

因為新的IC更新
所以燒錄工具也就跟著更新
雖說在CubeIDE介面也能燒錄程式
但是自動連續燒錄的功能
就只能在CubeProgrammer中完成了

什麼叫做自動連續燒錄?
就是字面的意思
當你有一批板子要量產
可是MCU的程式是空的
你只要把要燒錄的程式載入CubeProgrammer
然後STLINK插上板子後按一下Enter鍵
程式就自動下載進去了
接著重複同樣的動作:
拔下STLINK => 在另一片板子插上STLINK => 按Enter
很快就把一群板子燒錄完成

不要在意[按下Enter]這個動作
感覺好像不那麼Auto
但是他又不曉得你換個插頭需要多久
畢竟下載功能最初設計時就沒有自動偵測IC接上的功能
還是要透過手動的方式來告知
這樣已經很快很快了
如果128KB燒到滿
也是兩三秒鐘就可以換一片燒錄
更換板子的速度都沒這麼快呢!

==========================================================

以上[非專業]介紹的STM32Cube系列
希望各位同好有Get到他們的優缺點
有興趣的人
找片價廉物美的開發板
馬上就來試試看吧!

(很久以前的開發板也可以拿來試唷!)
(一種舊板子大復活的感覺...)