【釋放創造力的利器】TM32開放式開發環境


過去不等於未來;沒有失敗,只有暫時停止成功;採取更大量的行動。
一個人只有在全力以赴的時候才能發揮最大的潛能。
現在不玩命,將來命玩你, 現在不努力,未來不給力。
一生中你唯一需要回頭的時候,是為了看自己到底走了多遠。
一旦立下目的,不達目的絕不罷手,方可成功。

五年來,軟硬體開發環境變化巨大,市場需要更短的研發週期,STM32開放式開發環境為軟硬體開發平台,堆疊式插接電路板整合各種模組化硬體,同時模組化軟體覆蓋從驅動程式到應用層的全部軟體,能將創意快速變成產品原型,順利轉化成最終設計。

市場上湧現各種價格親民的經濟型微控制器,助力新一代開發者創造令人興奮的新型嵌入式應用。現今的開發工具非常好用,軟硬體均呈現模組化趨勢,插接安裝簡單容易,大幅縮短產品設計評估和原型開發週期。STM32開放式開發環境為軟硬體開發平台,堆疊式插接電路板整合各種模組化硬體,同時模組化軟體覆蓋從驅動程式到應用層的全部軟體,?明設計人員將創意快速變成產品原型,順利轉化成最終設計。

STM32開放式開發環境是什麼?

STM32開放式開發環境是意法半導體的嵌入式系統原型設計開發環境,以簡化嵌入式專案設計為目標,透過開源形式提供全部重要的功能模組,元件包括:

– STM32 Nucleo開發板(STM32微控制器)和STM32 Nucleo擴充板(感測器、通訊介面、馬達控制和致動功能),提供尖端商用產品的各種硬體功能。

– STM32Cube軟體工具的STM32微控制器軟體庫和簡單易用的軟體庫配置器(STM32CubeMX )。

– STM32Cube擴充軟體庫,支援STM32 Nucleo擴充板上的各種元件,包括馬達驅動器、低功耗藍牙模組、MEMS感測器等。

– 功能包:一套採用STM32 Nucleo開發板和STM32Cube軟體為一些最常使用之用例開發功能性常式(代碼示例)。

– 每個軟硬體功能模組都配備描述詳盡的技術資訊。

– 活躍且快速發展的線上開發社群

STM32 Nucleo開發板

STM32 Nucleo開發板是STM32開發環境的基礎元件,板子搭載一顆ARM Cortex-M32位元處理器內核心的STM32微控制器。STM32開放式開發環境所用的STM32 Nucleo開發板是64針腳(圖1)微控制器。目前STM32 F4和STM32 L0微控制器相容所有的STM32 Nucleo擴充板和擴充軟體。

圖1 :  STM32 Nucleo-64開發板

 

圖1 : STM32 Nucleo-64開發板

 

開發環境使用STM32Cube HAL(硬體抽象層)API的STM32Cube軟體庫,大幅降低在不同系列的STM32產品(目前有20餘款STM32 Nucleo開發板)中移植軟體專案所需的程式設計工作量。

STM32 Nucleo-64開發板硬體

產品特性

– 採用LQFP-64封裝的STM32微控制器

– 透過38針腳的Morpho連接器可以使用STM32的所有針腳

– 四個Arduino連接器(位置非對稱排列,引導用戶正確插接Arduino相容擴充板)

– 整合ST-LINK/V2-1調試器/代碼燒錄器和mini USB埠,無需安裝額外的調試工具,板子可直連PC,進行調試和燒寫代碼操作。此外,USB介面支援虛擬COM埠和大型存放區介面(相容ARM mbed)

– 2個按鍵(微控制器重定訊號和開發者專用按鍵)

– 3個LED燈(5V電源、開發者專用、ST-Link調試器狀態)

用戶可以為板子選用不同的電源:

– 5V USB供電

– 5V外部電源

– 外部電源VIN (7-12V)

STM32 Nucleo開發板上的5V電源還用於驅動以Arduino或morpho連接器連接主機板的擴充板,同時透過板載穩壓器為STM32提供3.3V 電源。

STM32 Nucleo開發板功能性極強,板載代碼燒寫/調試工具非常實用,設計人員可以立即著手開發專案,而無需添置昂貴的開發工具。

 

基於STM32Cube的嵌入式軟體和工具

在選擇最適合的STM32 Nucleo開發板後,下一步為下載相關軟體庫,熟悉STM32技術特性和外部週邊。最快捷的入門方式是下載軟體庫配置器STM32CubeMX。在此工具圖形化使用者介面內,用戶只要直接選擇正在使用的STM32 Nucleo開發板(圖2),配置器就會按照板子所連接的硬體設備(例如LED、按鍵、UART針腳分配)自動配置STM32外部週邊。

 

下一步,可能需要詳細配置每個外部週邊,例如,設置UART同步/非同步通訊模式、串列傳輸速率、寄偶校驗和停止位。

 

圖2 :  STM32CubeMX: 從板子選型到外部週邊配置,只需幾步簡單的操作。

 

 

 

圖2 : STM32CubeMX: 從板子選型到外部週邊配置,只需幾步簡單的操作。

最後,STM32CubeMX將生成代碼,創建一個完整軟體專案,且相容所用代碼編譯工具鏈(例如IAR、Keil或Eclipse),同時配置先前在圖形化使用者介面內所選的全部硬體和外部週邊,並相容所用之代碼調試/燒錄工具。

 

這個圖形化使用者介面工具讓使用者從零開始創建項目,幾分鐘內完成專案所需的全部配置,然後立即動手創建自己的軟體專案,直接在main.c檔裡寫代碼。

圖3 :  STM32Cube軟體庫的層次

圖3 : STM32Cube軟體庫的層次

 

所生成的代碼位於STM32Cube嵌入式軟體之上,STM32Cube有兩個主層(圖3):

—硬體抽象層:允許上面的軟體層(例如,中介軟體層)執行各自的功能,而無需開發人員深入瞭解如何使用微控制器

—中介軟體:一整套中介軟體組件(RTOS, USB, TCP/IP, …)

軟體設計採用模組化方法,用戶在專案開發過程中可以隨時增加軟體模組,輕鬆地跨系列移植全部專案。

STM32 Nucleo擴充板

為連結STM32 Nucleo擴充板,STM32 Nucleo-64開發板配備兩種連接器:

—相容Arduino標準的Arduino連接器(微控制器的32個針腳都在這個連接器上)。

—Morpho 連接器,可以連接STM32微控制器的全部針腳(76個引腳都在這個連接器上)。

STM32 Nucleo擴充板讓設計人員猶如搭積木一般,在主機板上插接多種不同功能的子板,創建一個完整的應用系統。目前意法半導體上有20餘款擴充板(圖4)販售中,按功能劃分,可以分為五類:

—感測:MEMS 9軸運動感測器;壓力感測器、環境感測器、接近檢測感測器;MEMS麥克風

—連接:低功耗藍牙、Wi-Fi、NFC和Sub-GHz射頻

—馬達控制/致動:直流馬達驅動器、步進馬達驅動器、3相直流無刷馬達驅動器

—輸入/輸出:I/O模組(家庭自動化和工業自動化)

—訊號調節:運算放大器

 

圖4 : 各種型號的STM32 Nucleo擴充板

 

 

 

圖4 : 各種型號的STM32 Nucleo擴充板

 

STM32 Nucleo板的功能擴充方法類似Arduino和Raspberry Pi解決方案,便於設計人員快速開發產品原型。透過這些連結工具,可以將擴充板堆疊插接在主機板上,為系統增添新的功能,唯一不足之處是,堆疊式連結方法受限於微控制器外部週邊的使用方式,這個問題的解決方法是,使用I2C和SPI匯流排替代UART等速度慢的資料匯流排,這樣可提升同一匯流排上所連結設備的數量。

此外,Arduino連接器不對稱排列設計可有效防止STM32 Nucleo擴充板連接方向錯誤,降低電源連接錯誤損壞設備的風險。擴充板使用STM32 Nucleo開發板上LDO穩壓器,透過板上5V電源生成的3.3V電源,使用者可以使用跳線(JP5),為開發板選擇USB 5V電源或外部E5V電源。有些擴充板需要更高的電壓,例如,馬達驅動器和I/O擴充板,因此,開發板上還增加一個電源連接器,利用外部電源驅動負載,提供更高的電壓Vbus(最高45V)。

為安全起見,多數擴充板是為低功率應用設計,50V以下電壓在電源極性接反或短路時可以降低板子燒毀之風險,所以適合初學者和學生使用。

這些低功耗的擴充板還可以單獨連結高壓高功率的馬達控制擴充板,但是,我們只建議馬達控制專業人士選用這種配置。為了便於區分,我們將高功率STM32 Nucleo擴充板塗成綠色,其餘的擴展板皆為藍色。高功率馬達控制擴充板兼具高壓高功率擴充板和低壓擴充板的雙重優點,在馬達控制應用中輕鬆增加資料通訊功能,例如:使用射頻技術遠端驅動高壓馬達,或使用低功耗藍牙,又或Wi-Fi獲取馬達驅動資訊和遠端記錄失敗資料。

STM32Cube擴充軟體

STM32 Nucleo擴充板可以像搭積木一樣插接到開發板上,幾分鐘就能組建一個硬體平台。不過,軟體才是設計專案中最耗時的環節,通常佔用研發週期70-80%的時間。STM32Cube將積木式組裝方法帶到軟體設計中。軟硬體是STM32開放式開發環境的特性之一,因此,每個STM32Cube擴充套裝軟體都為使用者提供常式,其中包含各種軟體庫,例如:馬達控制、低功耗藍牙協議棧或NFC射頻處理功能,全部都是開源軟體。

STM32Cube擴充套裝軟體附加的常式十分實用,能夠?明設計人員快速熟悉設備軟體庫。以下面的步進馬達驅動軟體展示專案為例,使用者可將其中所需功能複製到自己的軟體專案:

//—– Init of the Motor control library

/* Start the L6474 library to use 1 device */

/* The L6474 registers are set with the predefined values */

/* from file l6474_target_config.h*/

BSP_MotorControl_Init(BSP_MOTOR_CONTROL_BOARD_ID_L6474, 1);

/* Attach the function MyFlagInterruptHandler (defined below) to the flag interrupt */

BSP_MotorControl_AttachFlagInterrupt(MyFlagInterruptHandler);

/* Attach the function Error_Handler (defined below) to the error Handler*/

BSP_MotorControl_AttachErrorHandler(Error_Handler);

//—– Move of 16000 steps in the FW direction

/* Move device 0 of 16000 steps in the FORWARD direction*/

BSP_MotorControl_Move(0, FORWARD, 16000);

/* Wait for the motor of device 0 ends moving */

BSP_MotorControl_WaitWhileActive(0);

/* Wait for 2 seconds */

HAL_Delay(2000);

//—– Move of 16000 steps in the BW direction

/* Move device 0 of 16000 steps in the BACKWARD direction*/

BSP_MotorControl_Move(0, BACKWARD, 16000);

/* Wait for the motor of device 0 ends moving */

BSP_MotorControl_WaitWhileActive(0);

因為採用STM32Cube軟體庫的模組化結構,每個擴充板軟體模組都可以作為中介軟體添加到使用者專案,增加操作可以在專案開發過程中隨時進行,也可以新增到已經存在的複雜項目內(圖5)。

圖5 :  STM32 Nucleo擴充板軟體庫作為中介軟體增加到開發專案內

圖5 : STM32 Nucleo擴充板軟體庫作為中介軟體增加到開發專案內

功能包軟體專案和附加軟體庫

當需要不只一個功能模組時,最快速的方式是使用功能包軟體原始程式碼專案,因為這個套裝軟體將不同的STM32 Nucleo擴充板的軟體庫整合成一個立即可用的完整項目。例如當STM32 Nucleo開發板連接NFC和低功耗藍牙(BLE)擴充板時,可以下載功能套裝軟體,進行BLE與NFC配對。

 

除STM32開放式開發環境外,意法半導體還提供各種附加軟體庫(圖6),讓開發者在其應用專案內能夠使用幾年年不易實現的先進功能,例如感測器資料整合、運動識別、藍牙語音、聲學波束成形、聲音定位等,因為這些軟體庫使用非常專業的IP技術,所以不提供完整的原始程式碼(STM32開放式開發環境軟體100%提供原始程式碼)。但是,用戶可以從意法半導體網站下載相關許可證,然後在幾分鐘啟動軟體後,即可正常使用這些軟體。

 

圖6 : 在STM32開放式開發環境之上的Open.X 軟體庫和Open.Framework

圖6 : 在STM32開放式開發環境之上的Open.X 軟體庫和Open.Framework

 

同樣地,開放式功能包也有常式,例如在BLUE MICROSYSTEM 1演示應用(圖7)中,STM32F4讀取MEMS加速度計/陀螺儀/磁強感測器資料(RAW格式和感測器資料整合演算法輸出)、溫濕感測器以及壓力感測器的資料,通過低功耗藍牙協定將資料發送到智慧型手機上的應用程式(圖8)。只要將所需的程式碼片段複製到自己的軟體專案內,就可以在不同的應用中反復使用代碼。同一個展示應用,假如軟體設計人員想要從零開始創建,則需要從查看每個設備資料手冊資訊開始,開發和調試可能需要幾個月的時間。

 

圖7 :  BLUE MICROSYSTEM1 開源功能包展示應用使用了MEMS運動感測器、環境感測器(溫度、濕度、壓力感測器)和最新的低功耗藍牙技術。

圖7 : BLUE MICROSYSTEM1 開源功能包展示應用使用了MEMS運動感測器、環境感測器(溫度、濕度、壓力感測器)和最新的低功耗藍牙技術。

 

圖8 : 當使用藍牙或低功耗藍牙的展示板時,可以使用智慧型手機或平板電腦應用查看感測器資料。

圖8 : 當使用藍牙或低功耗藍牙的展示板時,可以使用智慧型手機或平板電腦應用查看感測器資料。

 

應用專案範例

當使用STM32 Nucleo擴充板的軟體專案示例或現有的開源功能包創建複雜的演示程式和系統時,建立速度快速且容易。下面是一個玩具小汽車的演示範例,3D遙控器通過低功耗藍牙(圖9)控制小汽車運動。基本軟硬體模組包括:

 

STM32 Nucleo玩具小汽車(硬體):NUCLEO-F401RE、X-NUCLEO-IHM02A1(雙步進馬達驅動器)、X-NUCLEO-IDB04A1(低功耗藍牙)

 

STM32 Nucleo玩具小汽車(軟體):X-CUBE-SPN2 (步進馬達驅動器軟體庫基礎常式)、X-CUBE-BLE1(BLE軟體庫基礎常式)

 

3D遙控器(硬體):NUCLEO-F401RE、X-NUCLEO-IKS01A1(MEMS感測器)、X-NUCLEO-IDB04A1(低功耗藍牙)

 

3D遙控器(軟體):BLUEMICROSYSTEM1(透過低功耗藍牙發送感測器RAW資料和感測器整合資料的功能包)

 

圖9 :  STM32 Nucleo玩具小汽車:玩具小汽車展示板和3D遙控器都是採用STM32 Nucleo電路板

圖9 : STM32 Nucleo玩具小汽車:玩具小汽車展示板和3D遙控器都是採用STM32 Nucleo電路

 

對於穿戴式裝置和物聯網硬體等應用,評估板的外觀尺寸有時候是一個不小的問題。為了滿足物聯網硬體開發者的需求,意法半導體產品陣容開始增加尺寸極其緊湊的小展示板(圖10),板上的元器件與STM32 Nucleo電路板完全相同。這樣,在STM32開放式開發環境內開發的軟體工程專案可以100%移植到這些小板子上。

圖10 : 功能包Blue Micro System1從STM32 Nucleo電路板移植到小評估板(用於物聯網和穿戴式裝置)

圖10 : 功能包Blue Micro System1從STM32 Nucleo電路板移植到小評估板(用於物聯網和穿戴式裝置)

 

@中標不僅STM32開放式開發環境,還支援相容STM32 Nucleo的Arduino電路板

STM32 Nucleo擴充板中還有板載Arduino連接器的Arduino Shield 電路板。因為硬體介面相互相容,開發人員可以繼續使用以前開發的電路板和設備驅動軟體和固件庫。在意法半導體官網和其它開源軟體工程社群中,有一些Arduino電路板配合STM32 Nucleo擴充板,可直接使用現成項目:典型的Adafruit TFT觸控shield板與STM32 Nucleo擴充板相連,STM32CubeF4套裝軟體會提供該軟體專案。

釋放使用者的創造力

五年來,軟硬體開發環境變化巨大,市場需要更短的研發週期,越來越多的傳統消費產品技術(例如:MEMS、NFC、低功耗藍牙)被用於工業設備。從3D建模到PCB電路圖,更完備的工程項目出現在開放原始碼軟體工程社區(無人機、3D印表機、感測器資料整合、複雜的音訊功能和USB供電等)。

STM32開放式開發環境讓開發者的生活更輕鬆,提供易於定制基本的和複雜的軟硬體功能模組。在系統設計內增加一個射頻模組,用於遙控設備或傳送資料,不再要求開發者有深厚的射頻專業背景,只需將STM32 Nucleo擴充板連接到系統,依照系統要求設置軟體專案,幾分鐘即可完成。

STM32開放式開發環境為軟硬體開發平台,整合基於尖端商用產品的各種擴充板,模組化軟體覆蓋從驅動程式到應用層的全部軟體,說明設計人員將創意快速變成產品原型,順利轉化成最終設計。

 

刊頭圖片(來源: thezoereport.com)

本文引用來源:
https://smartauto.ctimes.com.tw/DispArt-tw.asp?O=HK1145W2PBUARASTDU

發表迴響