1. 程式人生 > >Matlab&Simulink開發STM32F4

Matlab&Simulink開發STM32F4

來源:在接觸MATLAB的幾年中,發現MATLAB在功能上越來越強大,在結合simulink上開發許多的嵌入式原型產品發揮了很大的實時模擬能力,由於平時在實驗室裡接觸過很多開源的東西,在心裡面很喜歡這樣的開源文化,偶然中,在網上看見國外的Maker與Hacker愛好者用matlab開發Arduino和樹莓派等開源硬體,就思考就合周邊的東西試想能不能用MATLAB開發,這樣也進一步讓自己在實踐中更好的學習MATLAB和Simulink,果然在ST官方找到有結合MATLAB進行開發的開發庫。

【1】開發庫選擇 在網上找支援matlab的stm32開發庫時,接觸了三種開發庫: 1.ST官方的STM32-MAT/TARGET,支援F3,F4系列:http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stm32-mat-target.html 下載頁面:

2.印度的aimagin公司開發的兩種開發庫: 下載地址:https://www.aimagin.com/download/ 2.1較老版本的RapidSTM32 Blockset
     在看英文資料的過程中,貌似說只能開發F0系列。在用RapidSTM32 Blockset進行matlab開發環境配置時,雖然後面在遇見了許多的問題後,執行開發庫自帶的demo歷程時在simulink介面進行模型編譯時沒有出錯,但是在把stm32f1XX的開發板在電腦上識別後,在matlab命令列裡面輸入命令一直未能成功識別到開發板。     經過仔細的看官方的開發資料和進行多次配置,都未能成功。總結原因如下:1)電腦的系統畢竟不是正版,而且matlab也只是國內大家都普遍使用的破解版,可能這是主要原因(後面和這方面的愛好者交流到,有人成功過~)。2)這個開發庫時公司開發的,可能要結合到該公司的開發硬體才能配合使用。在淘寶上好奇的搜到了這種開發板居然叫價一千多。(當然是沒有銷量咯安靜
) 2.2教新版本的Waijung BlockSet
aimagin公司近幾年開發的這款開發庫,支援F4系列的STM32的開發,但是我在用STM32 DiscoveryF407進行模擬時,只在把Model模型編譯後成功通過ST-Link下載到開發板上,實現了讓PA12輸出高電平點亮LED,後面就一直未能成功編譯並下載,MATLAB也突然的出現faile後退出,後面經過多次嘗試都不成功,就轉戰到用官方的基於matlab的模擬開發庫。
圖為成功檢測到電腦安裝了所有必要的軟體後成功安裝的Waijung BlockSet的simulink開發庫。 以上兩個開發庫都不用再電腦上安裝*.exe這樣的一個程式,直接在matlab環境下設定matlab的工作環境到開發庫的檔案路徑下,在命令列下或是直接選中install**這樣一個M檔案,選擇‘run’後就會直接安裝,其中有許多要注意的軟體和底層環境要注意,否則不能成功安裝。 【2】重點介紹:ST官方的STM32-MAT/TARGET開發庫 1.安裝STM32CubeMX  --用於生成配置檔案 STM32CubeMX是ST官方開發的支援快速MDK-ARM工程檔案生成的軟體,可以直接編譯成功後下載到目標開發板,省去了手工配置底層程式碼的工作,利用視覺化圖形視窗進行高效配置。利用官方的matlab開發庫進行開發工作,要首先呼叫這個軟體生成的配置檔案,下載地址:http://www.st.com/web/cn/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?icmp=pf259242_prom_stm32cube-long-promo_feb2014 STM32CubeMX支援F0,F1,F3,F4,F7系列和L0,L1等的開發。

此外還有專門開發某一個系列的軟體,如開發F4系列晶片的STM32CubeF4,讀者後面可以專門選一個開發。 1.1軟體主介面
在這裡選中引腳,設定基本的數字或模擬輸入/輸出。 1.2時鐘選擇 --視覺化
2.安裝STM32-MAT/TARGET 在上面的連結中下載後得到一個安裝包,點選裡面的exe程式安裝後得到***\STM32-MAT\STM32這樣一個開發庫。
這裡可以看見,ST官方的開發庫是基於matlab的Real-Time Workshop功能進行開發,然而在MATLAB R2012以前的版本中是需要單獨安裝Real-Time Coder和MATLAB Coder這些工具箱,如果是用matlab r2014開發就省去了這些繁雜和痛苦的安裝。 直接雙擊startup.bat指令碼就直接打開了電腦上安裝的matlab開發環境。
在第一次執行時需要在matlab中設定pathtool。
選中後,儲存!!!!!
【3】基於模型編譯的嵌入式開發 通過一步一步的完成這些工作後,我們就可以在simulink中新建一個模型檔案,配置生成嵌入式c程式碼,最後得到完整的MDK-ARM工程檔案。然而筆者開這一步倒弄的很久,一方面是自己的對simulink的接觸不夠,沒有看關於simulink使用的技術文件,二是對基於模型的嵌入式程式碼生成之前完全沒有接觸過,三是對設定模型的引數不清楚,比如離散模型,連續模型,變步長等等。這也是筆者覺得應該寫一篇這樣的對新東西的開發進行探索的博文,可以和大家更好的交流。 開啟simulink後如果沒有看見左側的庫瀏覽欄目裡面有關於STM32的開發庫,那可能是沒有成功安裝好,或者是暫時的沒有出現,嘗試重啟一下電腦試試。安裝成功後的效果如下,
通過瀏覽左側的Target Support Package -STM32 Adaper,一些如GPIO,ADC,DAC,I2C,SPI,USART,CAN都得到了matlab的支援,可以快速在物理層面上搭建嵌入式原型,可以先模擬,再下載。 3.1下面新建一個流水燈的mode檔案,進行模型驗證,編譯,c程式碼生成和工程檔案編譯。 最終的效果如下,
3.2在STM32CubeMX中新建一個GPIOS的ioc配置檔案 這裡設定PA1-PA5進行數字輸出
別忘了對輸出模式的配置,如上拉,下拉,推輓什麼的。
3.2基本模組 在左側拖入一個MCU CONFIG模組,雙擊進行設定。
1:可以直接點選"New ioc file"直接開啟STM32CubeMX ;  2:選擇建立好的ioc檔案 3.3從左側拖入GPIO Write模組,進行埠電平輸出,設定所用引腳。
其他幾個引腳如是設定好,選擇一個計數器作為輸入源,設定大家想要的取樣時間,也可以參照上面的效果圖設定好。 3.4模型驗證 點選run後,模型驗證會出現一堆錯誤和警告,原因是沒有設定模型的模擬引數,以下教大家一步一步設定好。 solver: 變步長 fixed-up ,離散引數
Data Import/Export:不要選擇,筆者在模型驗證階段,這個細節是經常被忽略了,最後也是在這裡得到解決!!!!!
Optimization下的Signals and Parameters設定:
Simulation Target:
!!!! NOTE: Code Generation: 系統物件檔案選擇,因為matlab不單單支援stm32的開發,對DSP和其它以ARM為核心的微控制器都有支援,這裡要選擇好!!!
選擇stm32.tlc這一嵌入式物件檔案,其它
STM32選項設定,
1處都要選上,如果編譯過程中檢測不到STM32CubeMX的路徑,點選2處進行更新!!!! 【4】驗證、編譯
1處輸出都沒有,觀察驗證的結果。
模型驗證成功!!!!! 對模型進行編譯,生成嵌入式目的碼,點選Build Model, [1首先是針對模型的標頭檔案和原始碼的生成,
[2]工程檔案生成
最終效果!!!!! 【5】Keil工程

Keil工程編譯,零錯誤。
下載到開發板,現象如下, STM32F4開發板
間隔0.4秒的流水燈效果(因為前面的取樣時間為0.4秒)
筆者通過對用matlab模擬開發STM32的一個接觸,感受太深。首先資料是全英文的,看得是頭大,很多細節的引數怎麼設定都是一步一步摸索,上面把具體的引數設定都貼圖了,希望可以幫助到大家。在請教師兄時說這個開發的效率還不如手工,確實有時候是這樣,但是對新知識的追求和愛倒弄東西的情懷怎能阻擋自己,這種做事情的模擬思維是非常關鍵,特別是做大專案,前期有一個模擬,可以預測實際中出現問題的關鍵所在,對於及時的解決問題可是非常有針對性,節約大量的時間和資本。