2021年9月2日 星期四

STM32的MCSDK (終於申請到了,要看完!)

最近斷了顆牙

整個人很不舒服

心情不太好

來寫寫STM32的壞話!哈哈~~


今天的主題是MCSDK

也是大家耳熟能詳的開發工具

不過最近發現

MCSDK的完整版本超難申請

但是一般版本對實際應用還是很夠用的

所以其實不是那麼需要在意

至於變得很難申請的原因

我猜是因為申請的人回報bug的情況並不多吧?

或是我的應用根本就不需要Y版本


上一代的MCSDK因為不是Y版本

所以我稱他為X版本

因為Y的前一個字母是X

X版本的final版本是v5.4.7

但是完整版只開放到v5.4.6就沒有了 (後註)

大概是該修正的bug都修得差不多,也穩定了

完整程式的部分就不想再給使用者亂調整

免得自己客服做不完


最新的Y版本開始加入了AC馬達的調製

對於每次都以BLDC PMSM去申請的站長來說

大概不是聚焦在AC馬達上

所以不太想理我

申請超過20次都沒申請到 v5.Y.2


有趣的是

v5.Y.0是當初是完全不用審核就能下載

v5.Y.1雖然要審核,但是也差不多兩三次就申請過了

站長我很老實

不太喜歡用假的應用去申請

畢竟我對AC馬達就真的不熟

也沒特地想應用

在變頻器多到到處都有的情況下(有的還便宜到爆)

實在也提不起勁去研究


這次卡在v5.Y.2的版本

如果有同好已經申請過的

請讓我知道一下您申請通過的是哪一類的專案

(車用倒是很有可能會過)


好啦!只是發發牢騷

雖然完整版本下載不到

v5.Y.2的一般版本還是很好用的


**************************************


順便說明一下X版本與Y版本的差異

第一個差異當然就是前面提到的

加入了ACIM (就是交流感應馬達)

不過站長不玩交流馬達

所以有玩的人可以上來分享一下


第二個差異是Monitor功能進化成 Motor Pilot

原先的 Monitor 可以用 115,200 bps來通訊馬達指令

但是必須在MotorWorkbench裡開啟

有點麻煩

進化後的 Motor Pilot 不但是獨立介面

還可以用 1,843,200 bps 的超高速率進行馬達指令的通訊


但是變快了就代表對通訊品質的要求提高了

如果你發覺自己的板子不太容易連得上

可能就要去換一台電腦了

升級一直都是很讓人困擾的事

因為你要升級的往往不只是軟體

連帶電腦、下載器、通訊隔離器通通要跟著換

如果目標產物利潤不昰很好

這樣的升級就變得興致缺缺

不過最近電動車用市場正夯

應該還是會有很多人前仆後繼一直投入吧?



**************************************


以上

不專業抱怨文請各位看倌笑納

感謝撥冗觀賞


**************************************

2021/9/16 更新

大概是STM32的耳根被我念到其癢無比

今天一口氣回覆了超過10篇申請信件

其中當然是通過了我的申請信件

所以請各位大德

一次申請不過別灰心

多申請幾次一定有機會

如果按照革命成功的次數

我大概已經成功三次了!


**************************************

2021/9/29 更新

才申請到5.Y.2
5.Y.3又更新了

然後意外地發現
5.4.7竟然也有FULL版
而且是跟著5.Y.3一起出的
確定之前沒有

所以說
官方還是需要鞭策的
有圖有真相



**************************************

2021/10/12 更新

今天又收到審核通過的信
5.Y.3
5.4.7
兩個FULL版本都下載到了
按照申請日期推算
大概過了兩周才通過
所以想要申請的人
請有耐心一點等候

2021年6月28日 星期一

充電一下--中文輸入法不見了!

你是否跟我一樣

常常網頁開一開

程式安裝稍微等待久一點

工作視窗再多開幾組

忽然

中文輸入法就不見了!

怎麼找都找不回來

只好先把文件存檔

然後重新開機

最後中文輸入法又出現了


但是

又繼續工作一小段時間

中文輸入法又罷工

又要重新開機......


煩死了!!

到底是怎樣??


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


好吧

要耐煩!

找一下解決方法


網路上有人說

新增一個不一樣的中文輸入法(如倉頡)

原來的就會出現了

試了一下

嗯......沒有解決

再找一個

(你可能可以解決,恭喜你呀!)


又有人說

找工作排程器讓輸入法執行就好了

ㄟ!這個讚!

不過工作排程器在哪?

排程器又將輸入法放在哪?

(我的系統是 win7 pro)

[開始] -> [附屬應用程式] -> [系統工具] -> 工作排程器

(win10的話在 windows系統管理工具)

這樣就找到工作排程器啦!

接下來找輸入法

左邊欄位 [工作排程器(本機)] -> [工作排程器程式庫] 

-> [Microsoft] -> [Windows] -> [TextServicesFramework]

到此選項後

中間頁面會出現 MsCtfMonitor [就緒]

啊這個 [就緒] 就是輸入法待命中 (沒在工作的意思)

他被某某程式叫去旁邊罰站

此時點選最右邊的 [執行] 按鍵

中間頁面就會變這樣 MsCtfMonitor [執行中]

再來就會看到正常工作的輸入法啦!


2020年11月23日 星期一

充電一下 -- 安裝 E1 Emulator遇到 [Renesas E-Series USB Driver 驅動程式並不預期在這個平台上工作] 的問題

 這是一個非常令人沮喪的問題

最終也是令人十分振奮的結果

故事是這樣子的:

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

因為系統不斷更新且新裝置對電腦的要求越來越高

公司裡在經過幾輪的電腦更換後

發生了 E1 下載器無法安裝的問題

在瑞薩官網下載了 E1USBDRIVER.exe 進行安裝

卻無論如何都無法安裝成功

安裝好 USB driver 後將 E1 接上電腦

最後總是出現 Renesas Emulator (無法辨識) 的裝置

不管重新插拔裝置或是改變安裝流程(先插E1再安裝驅動程式)

都無法改變 <<Renesas Emulator (無法辨識) 的裝置>> 這個結果

網路上有人說是裝置衝突

也有人說是BIOS版本問題

更有人說是安裝了虛擬光碟的緣故

可是都跟我的故障原因一點關係也沾不上邊

官網也找不到有人討論這樣的問題

只好自己想辦法

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

先假設因為官方提供的驅動程式版本太新

導致我的 E1 無法被新版本的驅動程式辨別

那麼改用舊版本的驅動程式是不是可以呢?

找了一下電腦裡 Program Files (x86)\Renesas\ 資料夾內

還有一個 FDT4.09 的資料夾

這是瑞薩的官方燒錄軟體

裡面有個 Drivers\for_64bit 的資料夾

竟然就是 E1 舊版本的驅動程式

於是我就直接從這裡重新安裝驅動程式 (執行dpinst.exe)

發現竟然安裝成功了!

本來開心地以為 E1 已經安裝好了

但是到裝置管理員查看時發現

還是 <<Renesas Emulator (無法辨識) 的裝置>> 這個結果

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

我不信邪 (我姓李 Xp)

用了 Driver Booster 這套工具

將所有 Renesas USB 裝置資料全部清除

然後又重新安裝了 Program Files (x86)\Renesas\FDT4.09\driver\for 64bit\dpinst.exe

這一次依然是顯示安裝成功的訊息

但不一樣的是:

系統竟然找到了 E1 並真的安裝成功

我找了片有 RX62T MCU 的板子進行下載

HEW環境提示我 E1 的韌體版本太舊需要更新

更新後就是活龍一尾啦!

可喜可賀~~

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

雖然只有短短幾行文字

卻是奮戰一整個上午的結果 (約三~四小時)

如果有人跟我遇到一樣的問題

希望能幫你縮短一些除錯的時間

讓你的 E1 早日復活


2020年10月5日 星期一

充電一下--Thunderbird 更新後,信件消失/遺失/不見

 Thunderbird是一款免費的郵件管理軟體

擁有非常多的粉絲

不過到 V68 以後的版本

沒有支援繁體中文


由於我的電腦有安裝軟體自動檢查版本更新的工具

所以忘了 Thunderbird 不用更新這件事

不小心把 Thunderbird 變成了英文版


事實上

就算改用英文版也沒什麼大問題

但一堆裡面設定的英文欄位就變得很困擾

更詭異的是

有的信件匣還是原來的中文

有些又被改成英文

寫信的欄位也有了不少變化

用起來很不習慣


因此

我又重新安裝了舊版本的 Thunderbird 

想說應該安裝完就可以回復以前的使用習慣

剛開啟舊版本的 Thunderbird 

看到熟悉的中文介面很開心

此時英文版竟然也同時存在

為了怕自己開錯捷徑

便把英文版的捷徑從工作表取消釘選

接下來就是災難的開始......


當我開啟舊版本的信件後

發現收件匣內一封信也沒有

而英文版的執行檔

無論如何都找不到

因為不管我開啟 Thunderbird 資料夾內哪一個執行檔

出現的都是中文版的介面

裡面的信件空空如也

天阿!

好幾年的信件呀!

還有最近正在聯繫的工作細節

......

這根本不只是災難可以形容呀!


上網搜索

發現有一個叫做inbox的檔案

被存放在USER/NAME/AppData/Roaming/Thunderbird/Profiles

裡面某一個資料夾中

並非安裝 Thunderbird 的原始資料夾

當我點進去某一組像是亂碼名稱的資料夾時

發現我所點開的inbox檔案大小竟然也是 0KB

Oh!  My God !!

就在我以為每一個像是亂碼的資料夾內

都是0KB的inbox檔案時

忽然在某個結尾是xxxx-release的資料夾內

發現一個138MB的inbox檔案

不過因為我不管如何開啟Thunderbird都是沒有信件的狀態

所以便將這個inbox複製到日期最近的一個資料夾內

取代掉原來0KB的inbox檔案

再一次開啟時

看到了久違的信件

雖然過程只經歷了短短的一個多小時

內心的感覺卻像是洗了趟三溫暖

掉入地獄又重返人間的感覺真是超刺激


網路上大多數是提到

inbox.msf的內容錯誤

移除後重新建立新的收件匣

可以將聯結的訊息回復

不過我的狀況是inbox的內容是對的

但inbox變成了新安裝版本的空資料夾

連結也都全部指向這個空資料

所以才看不到信件


複製檔案取代了原有的空資料

其實還是有些冒險

因為我並不確定信件的格式

是否可以被舊版本的Thunderbird所讀取

因為某些軟體更新後會修改檔案的資料格式

比方調整欄位或資料排放的順序

如此一來就算我還原了inbox這個檔案

也不能正確地開啟信件

好在最後的結果是順利找回信件

可喜可賀

也把這個還原的過程記錄下來

希望可以幫助到和我遇到同樣問題的使用者






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到他們的優缺點
有興趣的人
找片價廉物美的開發板
馬上就來試試看吧!

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

2019年10月6日 星期日

充電一下--設定 windows 更新失敗。正在還原變更。請勿關閉您的電腦

現在幾乎家家戶戶都有電腦

而且絕大多數都是安裝微軟的 Windows 作業系統

而 Windows 有個功能叫做 Windows Update

用來檢視您的作業系統是否跟上時代的潮流

是否相容目前市面上大多數的軟硬體配備

避免您在安裝新硬體或是新程式的時候出現問題

更避免您的電腦存在被駭客攻擊的安全性漏洞

這是一個很人性化的功能

既會自動搜索需要的更新程式

又能排程在不影響電腦工作的時候進行

通常是在您電腦關機時才進行安裝

不過您遇到過 Windows 更新失敗進入無窮盡循環的情況嗎?

*****************************************************************

公司近日買了一台新電腦

因為我的電腦一天會出現好幾次藍白畫面

已經嚴重影響到工作進度

而且進行程式的編譯

常常第一次要花費十幾分鐘才能完成

這對重視效率的我來說

是完全不能接受的事

礙於公司的經費問題

直到最近才真正換了新的電腦

DELL / Windows7 / 8G DDR / SSD硬碟

開機20秒完成

關機也20秒完成

效能測試 OK

於是開始移植原先使用的工作軟體到新電腦上

剛安裝的幾個環境都挺順利的

特別是剛剛提到編譯要花十幾分鐘的程式

到了新電腦只花了不到三分鐘就完成了

初估至少快了四~五倍的時間

心想這應該可以縮短超多的工作時間了

不過就在移植了六、七個環境後

電腦開始出現要更新的訊息

而且一次就要更新137個檔案!

天阿!新電腦的作業系統是有多老舊呀!

竟然要安裝這麼多更新檔

不過身為工程師

對細節特別講究

反正新電腦的速度那麼快

就讓他安裝吧!

我還是可以繼續做其他的事

*****************************************************************

就在第一次更新關機後

電腦重新啟動

然後出現 Windows 設定中

然後.......竟然不是設定完成進入系統

而是『設定 windows 更新失敗。正在還原變更。請勿關閉您的電腦』

這是什麼情況!

而且這一還原就耗掉半個多小時

如果是原來的電腦

大概半天就不見了.......

更慘的是

還原後要關機又會再更新一次

更新完重新開機又再還原一次

就這樣經歷了三輪

還是一個半天不見了!!!

你問我為什麼讓他經歷了三輪?

因為我姓李、不信邪......XD

*****************************************************************

不過雖然經歷了三輪

並不代表我完全沒有做任何的努力

第二次重新啟動時

我就已經找了相關的解決方法

最後得到的結論是重灌就一定能解決

不然問題可能存在137個檔案的任何一個檔案裡

更可能跟這137個檔案一點關係都沒有

而是電腦本身的相容性出了問題......

身為一個嚴謹的工程師

不能忍受一台新電腦表現出外強中乾的孬樣

而身為一個浪漫的詩人

更不能忍受這種掃興耍廢的違和感

網路上一大堆的介紹都只說了:

很花時間!別鬧了!重灌比較快!

我堅持一定要找出原因......

回歸解決問題的第一步

我將大問題拆成小問題

137個檔案或許有點多

那我一次更新5~10個檔案總不會也出問題吧?

於是我進入控制台的 Windows Update 中

自己手動選擇要更新的檔案

為了驗證這個想法的方向是對的

一開始我選了檔案大小不到1MB的更新檔先安裝

一次更新10個就好

*****************************************************************

第一次更新就有一個檔案安裝失敗 (KB971033)

不過卻沒有影響開關機

也沒有進行安裝設定又還原的動作

我覺得我應該找對方向了

於是又選了10個檔案進行更新

很遺憾這次又有一個檔案更新失敗 (KB3075220)

不過也沒有影響開關機

第三次我放大膽子

一次選了15個檔案(其中包含超過1MB但不足10MB的檔案)

這一次竟然全部安裝成功!

心想問題的範圍應該縮小了

又選了17個檔案進行更新

不過這一次很神奇

安裝時的總檔案大小在一開始顯示138.6MB

可是安裝到一半忽然跳成126.9MB

安裝完成後出現一個安裝失敗(KB3019978)、一個不需要(自動消失?)

我沒記下選取的檔案

所以也沒發現是哪一個被消失了

第五次選的全部安裝成功(但有一個不需要自動消失)

第六次又出現一個安裝失敗(KB2919469)

就這樣反反覆覆重新啟動電腦十次

最後兩次安裝失敗的檔案有些是比較大型的檔案

KB4516048--306.6MB

KB4516065--288.9MB

Intel Corporation ......(balabala......)

KB4490628

就這樣把所有的更新檔又安裝了一輪

剩下四個頑強的更新檔更新失敗還不會消失

又繼續出現在更新的清單中

好吧!已經開了頭就有頭有尾吧!

接下來就是單獨安裝

KB4490628 經過兩次單獨安裝後安裝成功!

KB4516048、KB4516065 在第二次的單獨安裝也成功!

*****************************************************************

在這些檔案完成更新後

又有新的更新檔案延伸出來

這些檔案並沒有為難我

讓我很順利地完成了安裝

然而 Intel Corporation ...... 這個更新檔安裝了三次依舊沒有完成安裝

後來查了錯誤碼 80070103 所代表的意思

簡單說就是現在所使用的驅動程式比 Windows Update 所提供的還要更好

所以就別安裝了

然後電腦出現了一個很詭異的現象

就是(KB4503548 -- 適用 Windows7 x64 的 Microsoft .NET Framework 4.8 -- 35.0MB) 這個更新檔

竟然在安裝完成後,連續三次出現在更新清單中

就在我安裝完 KB4516048 及 KB4516065 之後

更有甚之

之後新出現的 KB4524157 安裝完成後

KB4503548 又陰魂不散地冒出來要更新了!!!

最後解決的方法也還是自己隱藏掉這個檔案

*****************************************************************

經由上面一連串的更新檔安裝後

我得到了一個合理的結論

Windows 的每一個更新檔有相互依存的關係

如果安裝的先後順序不對

就會發生很嚴重的更新問題

舉例來說

今天出的更新檔修正了 A 問題

兩天後又出了一個修正 A+B+C 的相容問題

如果你前面的 A 問題沒有先進行修正

某些應該存在 A+B+C 的參數可能是錯誤或不存在

此時若先安裝了後面一個更新檔

就會導致作業系統連帶將 B 與 C 兩個裝置給癱瘓了

系統判斷這樣的問題無法解決

於是自動又幫您還原回去原來沒有安裝 A 及 A+B+C 的狀態

可是為什會出現這樣的問題?

第一

你的作業系統不是每天都在準備更新的狀態

所以先下載回來的檔案往往是最近更新的檔案

因此電腦也會將先下載回來的檔案優先進行更新

導致安裝的先後順序發生問題

第二

更新檔案的大小會影響下載的穩定

檔案越大的越容易在下載過程發生錯誤

特別是網路品質不太好的地方

因此我先選用檔案較小的進行更新是有特別的用意的

如果你的更新檔是數百MB的龐然大物

遇到更新失敗時請利用網路不塞車的時間進行更新

應該可以順利更新完成

第三

當硬體驅動程式版本太久沒更新的情況下

微軟的更新檔也很可能會發生無法更新的問題

針對硬體較新版本的驅動程式所修正的更新檔

很可能造成使用硬體的不穩定

但 Windows Update 本身並沒有檢查硬體的驅動版本是否需要更新檔

就自作主張幫你的電腦更新了

這是一直無窮迴圈鬼打牆的最可能的原因之一

所以才會有錯誤碼 80070103 的存在

此時需要有智慧的您手動將這個更新檔永久隱藏

不然這個更新檔就會一直自動出現在你的更新清單中

*****************************************************************

如果下次您有遇到這樣的問題

不妨耐著性子好好地面對處理

一定可以讓你的功力一下子提升很多

不單單只是電腦

還有處理事情的思路與解決問題的手段

都會連帶一起提升唷!

KP經常引用曾國藩說的一句話:

『做大事,最重要的是耐煩。居官以耐煩為第一要義。』

在此勉勵大家,一起『耐煩』!





延伸閱讀:
後來發現KB4516048--306.6MB這一類大型檔案
可以在 Microsoft®Update Catalog 中手動下載
下載時可能會被 Chrome 視為封鎖檔案
記得在Download處按右鍵另存連結
並在下載檔案的地方選擇保留(預設是捨棄)
祝大家更新順利~~~

2019年9月27日 星期五

STM32 的 X-CUBE-MCSDK 初體驗 (使用B-G431B-ESC1)

公司裡最近開始投入STM32的行列

特別是在馬達控制這一段

原先站長就已經蒐集了很多的相關資料

從SDK3.0,SDK4.3,SDK5.0直到現在的SDK5.4

然而從來沒有真正使用板子去完成一次馬達調適的功能

週三(9/25)是第一次使用 B-G431B-ESC1 的開發板

這幾天試下來很有心得

過程中還好幾次跟 Boss 發生超級激烈的討論

所幸結果是甘甜的

接下來把測試過程詳實記錄在此

希望可以減少新手使用上的盲點

尤其是只靠自己摸索而沒有機會去上培訓課程的人

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

B-G431B-ESC1 是一片為無人機(Drone)開發的馬達驅動板

大小只有半張名片不到

上面密密麻麻都是SMD的零件

信號用電阻電容基本上都是0402的規格

總之是一片零件密度非常高的板子

但這片小小的板子卻存在非常強大且完整的功能

它可以用 FOC 驅動馬達

也可以用六步方波去驅動

可以用hall sensor或encoder去偵測角度

也可以 sensorless 驅動就好

由 PLL 或 Cordic 去推算角度

供應電壓從 DC8~28V

驅動電流可以高達40A

不過功能這麼強大的板子

使用手冊卻很陽春

如果沒有之前使用 STM32 其他系列 MC Workbench 的經驗

要自己摸索出正確的使用方式是有點門檻的


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

第一次進行測試先要準備幾樣東西:

0. B-G431B-ESC1 with Vcc/Gnd/U/V/W cables

1. USB_mini cable

2. BLDC motor (Any type)

3. Power Supply (12V/24V)

4. 安裝 x-cube-mcsdk 
   (預載編譯環境 MDK5 及 STM32CubeMX)


分別說明一下這幾樣東西要怎麼準備

首先要把 B-G431B-ESC1 板子上的 Vcc/Gnd/U/V/W 接點拉線出來

可以在 UM2516 這份文件上找到接點的位置

並準備一條 mini type 的 USB cable

這種 USB cable 是在 USB3 出來之前手機最常用的充電下載線

也就是如果你有過去淘汰不用的手機所留下的充電線

直接拿來用就可以了

最好是有帶磁環(磁珠)的電纜

不然就是長度在 30cm~50cm 之間的 USB cable 比較恰當

馬達可以隨意一個你正在使用的 BLDC motor

不管高壓/低壓/電流大小

只要有 BLDC motor 就可以

電源供應器(Power Supply)最好用可以調整電壓電流的

建議可以輸出0~30V/0~5A以上的較為合適 (150W以上)

前面的工作都準備完成就可以開始安裝 x-cube-mcsdk (v5.4.1)

檔案會是zip壓縮檔,大小約112MB

由於站長是 Keil C 的愛用者

因此這裡用 MDK5 的環境來做介紹

而腳位定義與 MCU 周邊功能會使用到 STM32CubeMX

所以也要先安裝好才開始進行測試


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

第一次操作 Motor Profiler 與 MC Workbench

安裝好 x-cube-mcsdk 之後

桌面會有 Motor Profiler 與 MC workbench 兩個捷徑

如果要調適馬達參數

我們要先使用 Motor Profiler 這個工具

使用前請先將 USB_mini cable 連接到 B-G431B-ESC1 開發板

將馬達三條出力線任意接上 B-G431B-ESC1 拉線出來的 U/V/W

最後將電源供應器的輸出調節在 DC12V/2A 這個條件上

並接上 Vcc/Gnd 的線

執行 Motor Profiler 會出現板子的選用

第一個出現的就是 B-G431B-ESC1

點選板子後要輸入馬達基本參數

極對數在 Motor Profiler 有提供教學

在此不多做說明

看不懂的可以留言問我

如果你完全不曉得你所使用的馬達參數

有幾個方向你可以參考看看

首先就是馬達的大小

如果比拳頭小的通常轉速很快

設定轉速條件可以 5000RPM 以上

如果比拳頭大但比兩個拳頭小

轉速條件可以設在 3000RPM 進行測試

更大的馬達通常不容易拿到

如果拿得到也通常會提供完整參數

電壓電流暫定12V/2A

這是一個最保險且不容易損壞板子與電源供應器的條件

不過如果你的馬達比大拇指還小

建議還是要調低一下電流

對低壓馬達來說,1A應該是最低限度

電流太小其實不好調適馬達

當這些條件都輸入完成後

就點選 connect 讓 Motor Profiler 與 B-G431B-ESC1 連線

連線成功就直接按 Start 進行馬達參數的調適

如果你的馬達在調適過程中完全沒有動

可以先重複調適 3~5 次

有時候是因為 USB 通訊的問題

也有可能是電腦作業系統的問題

並不是每一次連線都可以很順利的

因為馬達本來就是信號干擾源

假如你調適幾次後發現馬達都完全沒有動

可以考慮加大你的輸出電流

或是提高轉速上限

不同的轉速上限與電流峰值

會改變馬達調適的初始化開迴路驅動信號

假如動了又停住

沒辦法連續一直轉

就建議調低一下電流量

大多數的馬達在 1~2A 的電流範圍內應該都是可以調適轉起來的

只是這並不一定是馬達真正適用的參數

我們只是要先確認馬達會動的方法

如果馬達有成功連續運轉

並有慢慢減速到停止

那代表這組參數是可以用的

用 SAVE 鍵把馬達參數存起來

記住這個馬達的名字 (這裡先取名為TEST_MOTOR)

接下來在 MC workbench 中會用到

如果您想試試看馬達運轉的情況

用 PLAY 鍵進入簡易測試環境

這裡可以設定馬達緩啟動的條件

也可以測試轉速的穩定度

如果測試起來不滿意可以一直重新調適

直到跑出一組覺得還蠻順的馬達參數

但原則上只要能轉就算OK了

因為進入Workbench後還有很多細節可以調整

這裡只是先抓個馬達的基本參數

讓程式有調整的方向而已

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

進入Workbench後要點選New Project

在Inverter選單中會出現B-G431B-ESC1這片板子

稍微說明一下

官方的板子有幾種類型

第一種是 All in One 的類型 (主控與驅動做在同一片板子上)

這一類會放置在 Inverter 中

第二種是組合套件且有附馬達的類型 (主控板與驅動板分開)

這一類會放置在 MC kit 中

第三種是組合套件沒有附馬達的類型 (主控板與驅動板分開)

這一類會放置在 Power & Control 中

而我們所使用的B-G431B-ESC1是All in One的板子

所以在Inverter中可以找到

不管你選用哪一種類型的板子

在頁面的最下方要記得選擇剛剛你所調適好的馬達

也就是選 TEST_MOTOR (使用你剛剛存起來的名字)

再來就讓 Workbench 自動幫你建立專案了

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

專案建立之後要做的事很簡單

如果你想先試試看馬達的動作

而你的 B-G431B-ESC1板子從剛剛調適之後就一直沒有拔除USB cable的話

可以 open Monitor 進入通訊調適介面

選擇 B-G431B-ESC1 的VCP (例如 COM 3)

執行Connect動作後便可以對板子連線操作

在Basic畫面中可以啟動馬達、停止馬達、改變馬達轉速、馬達正反轉

在Advanced畫面中可以調整馬達的PID參數、緩啟動設定

在Registers畫面中更可以看到所有馬達在運行中的參數變化

如果現在馬達的運轉方式是你所滿意的條件

便可以回到前一個畫面將程式碼 Generation

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

使用 Generation 功能時需要先建立專案名稱 (副檔名會是.stmcx)

然後會要求指定編譯軟體

除了常見的 Keil C 、IAR C

也支援 SW4 以及 CubeIDE

假如你跟我一樣都習慣使用 Keil C 或 IAR C

也不用刻意要改用官方提供的 SW4 或 CubeIDE

因為實測從Keil C轉出來的Code與CubeIDE所轉出來的Code

程式空間(Code size)差了將近一倍

如果Keil C轉出來是35KB好了

CubeIDE轉出來差不多是 68KB

但奇怪的是

兩個檔案資料夾是Keil C的專案夾比較占空間

而且編譯時間比CubeIDE長了不只一倍

我猜是FOC運算函式庫在Keil C有用特別的硬體加速函式

讓程式碼大幅縮小

可是因為不是標準庫的編譯方式

導致時間上變長了

如果知道這一段怎麼處理的

應該也可以在CubeIDE上做到同樣的效果

不過那就是以後才要研究的新目標

當下還是先能夠調好馬達動作比較重要

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

產生程式碼之後還會跳進CubeMX再確認一次所有的IO設定

如果你有個人想做的額外動作

比方說把預留的Hall Sensor Port拿來當做Display的控制線

因為Sensorless驅動時不需要用 Hall Sensor Port

所以在此可以先做一個小小的變化

然後再GenCode一次

轉出來的專案可以直接下載到 B-G431B-ESC1

然後如果你按照預設的程式都沒有改變

下載後按一下板子上的按鍵

馬達就自己轉起來了

當然也可以用VCP跟他連線

只要打開Workbench中剛剛建立好的專案.stmcx

進入Monitor中就可以連線操作馬達了

不過這時候的連線跟剛剛調適時的連線有點不太一樣唷!

剛剛調適時的連線

是Motor Profile預載一個空馬達參數的架構

透過Motor Profile的調適流程將馬達參數計算出來

所有的參數都是可以即時修正的

但是只要斷電重來

所有的參數就遺失了

必須重新調適

然而經過燒錄後的程式

是將調適好的參數當成預設參數填入MCU中

每次重新上電就會自動執行這組參數

某些板子還支援兩顆馬達同時運作

此時就是放入兩組不同的馬達參數

以同樣的FOC架構去運行

假如你想要一片板子可以同時讓很多不一樣的馬達使用

當然也可以自己將各組馬達參數寫在程式中

以IO切換或通訊更新的方式來切換馬達參數

這樣就可以讓一片板子運行很多不一樣的馬達

但前提要板子的驅動能力是可以應付的

也就是瓦數相近且電壓範圍也相近的馬達才能這樣用

畢竟一顆馬達會用到的參數很多

如有任一參數引用錯誤的話

是非常有可能發生災難的

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

上面的調適流程如果夠熟悉

而板子的驅動能力又跟馬達有匹配的話

基本上只要10分鐘不到就可以讓一個馬達順利運轉起來

不過調適馬達並不是只要會轉

還要加載測試及各種意外狀況的模擬

這些就要額外多花時間去調整了

但這套工具真的大幅縮短了馬達前期調適的時間

讓馬達驅動可以快速進入應用階段的測試

對電機工程師來說真的是一個很大的福音

重點是價格還不貴

軟體又通通在官網就可以下載得到

強烈推薦給大家試用看看唷~~