市場(chǎng)上涌現各種價(jià)格親民的經(jīng)濟型微控制器,助力新一代開(kāi)發(fā)者創(chuàng )造令人興奮的新型嵌入式應用。如今的開(kāi)發(fā)工具非常好用,軟硬件均呈現模塊化趨勢,插接安裝簡(jiǎn)單容易,使得產(chǎn)品設計評估和原型開(kāi)發(fā)周期大幅縮短。STM32開(kāi)放式開(kāi)發(fā)環(huán)境是業(yè)內獨一無(wú)二的軟硬件開(kāi)發(fā)平臺,堆疊式插接電路板集成各種模塊化硬件,同時(shí)模塊化軟件覆蓋從驅動(dòng)程序到應用層的全部軟件,幫助設計人員將創(chuàng )意快速變成產(chǎn)品原型,順利轉化成最終設計。 STM32開(kāi)放式開(kāi)發(fā)環(huán)境是什么? STM32開(kāi)放式開(kāi)發(fā)環(huán)境 是意法半導體開(kāi)發(fā)的嵌入式系統原型設計開(kāi)發(fā)環(huán)境,以簡(jiǎn)化嵌入式項目設計為目標,通過(guò)開(kāi)源形式提供全部重要功能模塊,組件包括: - 價(jià)格極低的STM32 Nucleo開(kāi)發(fā)板(STM32微控制器)和STM32 Nucleo擴展板(傳感器、通信接口、電機控制和致動(dòng)功能),提供基于尖端商用產(chǎn)品的各種硬件功能。 - 基于STM32Cube軟件工具的STM32微控制器軟件庫和簡(jiǎn)單好用的軟件庫配置器(STM32CubeMX )。 - STM32Cube擴展軟件庫,支持STM32 Nucleo擴展板上各種器件,包括電機驅動(dòng)器、低能耗藍牙模塊、MEMS傳感器等。 - 功能包:一套利用STM32 Nucleo開(kāi)發(fā)板和STM32Cube軟件為一些最常用用例開(kāi)發(fā)的功能性例程(代碼示例)。 - 每個(gè)軟硬件功能模塊都配備描述詳盡的技術(shù)文檔。 - 活躍的快速發(fā)展的在線(xiàn)開(kāi)發(fā)社區 STM32 Nucleo開(kāi)發(fā)板 STM32 Nucleo開(kāi)發(fā)板是STM32開(kāi)發(fā)環(huán)境的基礎組件,板載一顆基于ARM® Cortex®-M 32位處理器內核的STM32微控制器。STM32開(kāi)放式開(kāi)發(fā)環(huán)境所用的STM32 Nucleo開(kāi)發(fā)板是64引腳版(圖1)微控制器。目前STM32 F4和STM32 L0微控制器兼容所有的STM32 Nucleo擴展板和擴展軟件。 ![]() 圖1 – STM32 Nucleo-64開(kāi)發(fā)板 開(kāi)發(fā)環(huán)境使用基于STM32Cube HAL(硬件抽象層) API的STM32Cube軟件庫,大幅降低了在不同系列的STM32產(chǎn)品(目前有20余款STM32 Nucleo開(kāi)發(fā)板)中移植軟件項目所需的編程工作量。 STM32 Nucleo-64開(kāi)發(fā)板硬件具有以下特性: - 采用LQFP-64封裝的STM32微控制器 - 通過(guò)38引腳的Morpho連接器可以使用STM32的所有引腳 - 四個(gè)Arduino連接器(位置非對稱(chēng)排列,引導用戶(hù)正確插接Arduino兼容擴展板) - 集成ST-LINK/V2-1調試器/代碼燒錄器和mini USB端口,無(wú)需安裝額外的調試工具,板子可直連PC機,進(jìn)行調試和燒寫(xiě)代碼操作。此外,USB接口支持虛擬COM端口和大容量存儲接口(兼容ARM mbed) - 2個(gè)按鍵(微控制器復位信號和開(kāi)發(fā)者專(zhuān)用按鍵) - 3支LED燈(5V電源、開(kāi)發(fā)者專(zhuān)用、ST-Link調試器狀態(tài)) 用戶(hù)可以為板子選用不同的電源: - 5V USB供電 - 5V外部電源 - 外部電源VIN (7-12V) STM32 Nucleo開(kāi)發(fā)板上的5V電源還用于驅動(dòng)通過(guò)Arduino或morpho連接器連接主板的擴展板,同時(shí)通過(guò)板載穩壓器為STM32提供3.3V 電源。 STM32 Nucleo開(kāi)發(fā)板功能性極強,板載代碼燒寫(xiě)/調試工具非常實(shí)用,設計人員可以立即動(dòng)手開(kāi)發(fā)項目,而無(wú)需添置昂貴的開(kāi)發(fā)工具。 基于STM32Cube的嵌入式軟件和工具 在選中了最適合自己的STM32 Nucleo開(kāi)發(fā)板后,下一步是下載相關(guān)的軟件庫,熟悉STM32技術(shù)特性和外設。最快捷的入門(mén)方式是下載軟件庫配置器STM32CubeMX (www.st.com/stm32cubemx)。在這個(gè)工具的圖形用戶(hù)界面內,用戶(hù)只要直接選擇正在使用的STM32 Nucleo開(kāi)發(fā)板(圖2),配置器就會(huì )按照板子所連接的硬件設備(例如LED、按鍵、UART引腳分配)自動(dòng)配置STM32外設。 下一步,可能需要詳細配置每個(gè)外設,例如,設置UART同步/異步通信模式、波特率、寄偶校驗和停止位。 ![]() 圖 2 – STM32CubeMX: 從板子選型到外設配置,只需幾步簡(jiǎn)單的操作。 最后,STM32CubeMX將生成代碼,創(chuàng )建一個(gè)完整軟件項目,且兼容所用代碼編譯工具鏈(例如IAR、Keil或Eclipse),同時(shí)配置先前在圖形用戶(hù)界面內所選的全部硬件和外設,并兼容所用代碼調試/燒錄工具。 這個(gè)圖形用戶(hù)界面工具讓你從零開(kāi)始創(chuàng )建項目,幾分鐘完成項目所需的全部配置,然后立即動(dòng)手創(chuàng )建自己的軟件項目,直接在main.c文件里寫(xiě)代碼。 ![]() 圖3 – STM32Cube軟件庫的層次 所生成的代碼位于STM32Cube嵌入式軟件之上,STM32Cube有兩個(gè)主層(圖3): - 硬件抽象層:準許上面的軟件層(例如,中間件層)執行各自的功能,而無(wú)需開(kāi)發(fā)人員深入了解如何使用微控制器 - 中間件:一整套中間件組件(RTOS, USB, TCP/IP, …) 軟件設計采用模塊化方法,用戶(hù)在項目開(kāi)發(fā)過(guò)程中可以隨時(shí)添加軟件模塊,輕松地跨系列移植全部項目。 STM32 Nucleo擴展板 為連接STM32 Nucleo擴展板,STM32 Nucleo-64開(kāi)發(fā)板配備兩種連接器: - 兼容Arduino標準的Arduino連接器(微控制器的32個(gè)引腳都在這個(gè)連接器上)。 - Morpho 連接器,可以連接STM32微控制器的全部引腳(76個(gè)引腳都在這個(gè)連接器上)。 STM32 Nucleo擴展板讓設計人員像搭積木一樣,在主板上插接多塊不同功能的子板,創(chuàng )建一個(gè)完整的應用系統。目前意法半導體網(wǎng)站(www.st.com/x-nucleo) 上有20余款擴展板(圖4)在售,按功能劃分,可以分為五類(lèi): - 感測:MEMS 9軸運動(dòng)傳感器; 壓力傳感器,環(huán)境傳感器,接近檢測傳感器; MEMS麥克風(fēng) - 連接: 低能耗藍牙、Wi-Fi、NFC和Sub-GHz射頻; - 電機控制/致動(dòng): 直流電機驅動(dòng)器、步進(jìn)電機驅動(dòng)器、3相直流無(wú)刷電機驅動(dòng)器 - 輸入/輸出: I/O模塊(家庭自動(dòng)化和工業(yè)自動(dòng)化) - 信號調理: 運算放大器 ![]() 圖4 – 各種型號的STM32 Nucleo擴展板 STM32 Nucleo板功能擴展方法類(lèi)似于A(yíng)rduino和Raspberry Pi解決方案,便于設計人員快捷開(kāi)發(fā)產(chǎn)品原型。利用這些連接工具,可以將擴展板堆疊插接在主板上,給系統增添新的功能,唯一不足之處是,堆疊式連接方法受限于微控制器外設的使用方式,這個(gè)問(wèn)題的解決方法是,使用I2C和SPI總線(xiàn)替代UART等速度慢的數據總線(xiàn),這樣可提高同一總線(xiàn)上所連接設備的數量。此外,Arduino連接器不對稱(chēng)排列設計可有效防止STM32 Nucleo擴展板連接方向錯誤,降低電源連接錯誤損壞設備的風(fēng)險。擴展板使用STM32 Nucleo開(kāi)發(fā)板上LDO穩壓器通過(guò)板上5V電源生成的3.3V電源,用戶(hù)可以使用跳線(xiàn)(JP5)為開(kāi)發(fā)板選擇USB 5V電源或外部E5V電源。有些擴展板需要更高的電壓,例如,電機驅動(dòng)器和I/O擴展板,因此,開(kāi)發(fā)板上還增加一個(gè)電源連接器,利用外部電源驅動(dòng)負載,提供更高的電壓Vbus(最高45V)。 為安全起見(jiàn),多數擴展板是為低功率應用設計,50V以下電壓在電源極性接反或短路時(shí)可以降低板子燒毀風(fēng)險,所以適合初學(xué)者和學(xué)生使用。 這些低功耗的擴展板還可以單獨連接高壓高功率的電機控制擴展板,但是,我們只建議電機控制專(zhuān)業(yè)人士選用這種配置。為了便于區分,我們將高功率STM32 Nucleo擴展板涂成綠色,其余的擴展板全都是藍色。高功率電機控制擴展板兼備高壓高功率擴展板和低壓擴展板的雙重優(yōu)點(diǎn),在電機控制應用中輕松增加數據通信功能,例如,使用射頻技術(shù)遠程驅動(dòng)高壓電機或使用低能耗藍牙或Wi-Fi獲取電機驅動(dòng)信息和遠程記錄失敗數據。 STM32Cube擴展軟件 STM32 Nucleo擴展板可以像搭積木一樣插接到開(kāi)發(fā)板上,幾分鐘就能組建一個(gè)硬件平臺。不過(guò),軟件才是設計項目中最耗時(shí)的環(huán)節,通常占用研發(fā)周期70-80%的時(shí)間。STM32Cube將積木式組裝方法帶到軟件設計中。軟硬件一致是STM32開(kāi)放式開(kāi)發(fā)環(huán)境的特性之一,因此,每個(gè)STM32Cube擴展軟件包都為用戶(hù)提供例程,其中包含各種軟件庫,例如,電機控制、低能耗藍牙協(xié)議;騈FC射頻處理功能,全部都是開(kāi)源軟件。 STM32Cube擴展軟件包附加的例程非常實(shí)用,能夠幫助設計人員快速熟悉設備軟件庫。以下面的步進(jìn)電機驅動(dòng)軟件演示項目為例,用戶(hù)可將其中所需功能復制到自己的軟件項目: //----- 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的軟件庫的模塊化結構,每個(gè)擴展板軟件模塊都可以作為中間件添加到用戶(hù)項目,添加操作可以在項目開(kāi)發(fā)過(guò)程中隨時(shí)進(jìn)行,也可以添加到已經(jīng)存在的復雜項目?jì)?圖5)。 ![]() 圖 5 –STM32 Nucleo擴展板軟件庫作為中間件添加到開(kāi)發(fā)項目?jì)?br /> 除STM32開(kāi)放式開(kāi)發(fā)環(huán)境外,還有功能包軟件項目和附加軟件庫 當需要不只一個(gè)功能模塊時(shí),最快捷的方式是使用功能包軟件源代碼項目,因為這個(gè)軟件包將不同的STM32 Nucleo擴展板的軟件庫整合成一個(gè)立即可用的完整項目。 例如,當STM32 Nucleo開(kāi)發(fā)板連接NFC和低能耗藍牙(BLE)擴展板時(shí),可以下載功能軟件包,進(jìn)行BLE與NFC配對。 除STM32開(kāi)放式開(kāi)發(fā)環(huán)境外,意法半導體還提供各種附加軟件庫(圖6),讓開(kāi)發(fā)者在其應用項目?jì)饶軌蚴褂们皫啄瓴灰讓?shí)現的先進(jìn)功能,例如:傳感器數據整合、運動(dòng)識別、藍牙語(yǔ)音、聲學(xué)波束成形、聲音定位等,因為這些軟件庫使用非常專(zhuān)業(yè)的IP技術(shù),所以不提供完整的源代碼(STM32開(kāi)放式開(kāi)發(fā)環(huán)境軟件100%提供源代碼), 但是,用戶(hù)可以從意法半導體網(wǎng)站下載相關(guān)許可證,然后花費幾分鐘激活軟件,即可正常使用這些軟件。 ![]() 圖 6 – 在STM32開(kāi)放式開(kāi)發(fā)環(huán)境之上的Open.X 軟件庫和Open.Framework 同樣地,開(kāi)放式功能包也有例程,例如,在BLUE MICROSYSTEM 1演示應用(圖7)中,STM32F4讀取MEMS加速度計/陀螺儀/磁強傳感器數據(RAW格式和傳感器數據整合算法輸出)、溫濕傳感器以及壓力傳感器的數據,通過(guò)低能耗藍牙協(xié)議將數據發(fā)送到智能手機上的應用程序(圖8)。只要將所需的代碼段復制到自己的軟件項目?jì),就可以在不同的應用中反復使用代碼。同一個(gè)演示應用,假如軟件設計人員想要從零開(kāi)始創(chuàng )建,則需要從查看每個(gè)設備數據手冊信息開(kāi)始,開(kāi)發(fā)和調試可能需要幾個(gè)月的時(shí)間。 STM32開(kāi)放式開(kāi)發(fā)環(huán)境功能包和Open.Framework實(shí)現示例可以在相應的STM32 Nucleo擴展板網(wǎng)頁(yè)下載,而智能手機/平板電腦的圖形用戶(hù)界面應用軟件的源代碼需要直接向意法半導體銷(xiāo)售代表和授權經(jīng)銷(xiāo)商索取。 ![]() 圖7 – BLUE MICROSYSTEM1 開(kāi)源功能包演示應用使用了MEMS運動(dòng)傳感器、環(huán)境傳感器(溫度、濕度、壓力傳感器)和最新的低能耗藍牙技術(shù)。 ![]() 圖8 – 當使用基于藍牙或低能耗藍牙的演示板時(shí),可以使用智能手機或平板電腦應用查看傳感器數據(相關(guān)應用軟件可在Google Play或Apple AppStore下載)。 應用項目示例 當使用STM32 Nucleo擴展板的軟件項目示例或現有的開(kāi)源功能包創(chuàng )建復雜的演示程序和系統時(shí),創(chuàng )建速度簡(jiǎn)單快速。下面是一個(gè)玩具小汽車(chē)的演示示例,3D遙控器通過(guò)低能耗藍牙(圖9)控制小汽車(chē)運動(dòng);拒浻布K包括: STM32 Nucleo玩具小汽車(chē)(硬件): NUCLEO-F401RE、X-NUCLEO-IHM02A1(雙步進(jìn)電機驅動(dòng)器),、X-NUCLEO-IDB04A1(低能耗藍牙) STM32 Nucleo玩具小汽車(chē)(軟件):X-CUBE-SPN2 (步進(jìn)電機驅動(dòng)器軟件庫基礎例程)、X-CUBE-BLE1 (BLE軟件庫基礎例程) 3D遙控器(硬件): NUCLEO-F401RE、X-NUCLEO-IKS01A1 (MEMS傳感器),X-NUCLEO-IDB04A1 (低能耗藍牙) 3D遙控器(軟件):BLUEMICROSYSTEM1(通過(guò)低能耗藍牙發(fā)送傳感器RAW數據和傳感器整合數據的功能包) ![]() 圖9 – STM32 Nucleo玩具小汽車(chē): 玩具小汽車(chē)演示板和3D遙控器都是采用STM32 Nucleo電路板 對于穿戴設備和物聯(lián)網(wǎng)硬件等應用,評估板的外觀(guān)尺寸有時(shí)候是一個(gè)不小的問(wèn)題。為了滿(mǎn)足物聯(lián)網(wǎng)硬件開(kāi)發(fā)者的需求,意法半導體產(chǎn)品陣容開(kāi)始增加尺寸極其緊湊的小演示板(圖10),板上的元器件與STM32 Nucleo電路板完全相同。這樣,在STM32開(kāi)放式開(kāi)發(fā)環(huán)境內開(kāi)發(fā)的軟件工程項目可以100%移植到這些小板子上。 ![]() 圖10 – 功能包Blue Micro System1從STM32 Nucleo電路板移植到小評估板(用于物聯(lián)網(wǎng)和穿戴設備) 豈止STM32開(kāi)放式開(kāi)發(fā)環(huán)境,還支持兼容STM32 Nucleo的Arduino電路板 STM32 Nucleo擴展板中還有板載Arduino連接器的Arduino Shield 電路板。因為硬件接口相互兼容,開(kāi)發(fā)人員可以繼續使用以前開(kāi)發(fā)的電路板和設備驅動(dòng)軟件和固件庫。在www.st.com網(wǎng)站和其它開(kāi)源軟件工程社區,有一些Arduino電路板配合STM32 Nucleo擴展板的直接可用的現成項目:圖11所示是一個(gè)典型的Adafruit TFT觸屏shield板與STM32 Nucleo擴展板相連的演示 示例, STM32CubeF4軟件包提供該軟件項目。 ![]() 圖11 – Adafruit 1.8” TFT觸屏Shield板與STM32 Nucleo擴展板相連的演示示例 釋放你的創(chuàng )造力 五年來(lái),軟硬件開(kāi)發(fā)環(huán)境變化巨大,市場(chǎng)需要更短的研發(fā)周期,越來(lái)越多的傳統消費產(chǎn)品技術(shù)(例如:MEMS、 NFC、低能耗藍牙)被用于工業(yè)設備。從3D建模到PCB電路圖,更完備的工程項目出現在開(kāi)源軟件工程社區(無(wú)人機、3D打印機、傳感器數據整合、復雜的音頻功能和USB供電等)。 STM32開(kāi)放式開(kāi)發(fā)環(huán)境專(zhuān)注于讓開(kāi)發(fā)者的生活更輕松,提供易于定制的基本的和復雜的軟硬件功能模塊。在系統設計內增加一個(gè)射頻模塊,用于遙控設備或傳送數據,不再要求開(kāi)發(fā)者有深厚的射頻專(zhuān)業(yè)背景,只需將STM32 Nucleo擴展板連接到系統,按照系統要求設置軟件項目,幾分鐘即可完成。 STM32開(kāi)放式開(kāi)發(fā)環(huán)境是業(yè)內獨一無(wú)二的軟硬件開(kāi)發(fā)平臺,整合基于尖端商用產(chǎn)品的各種擴展板,模塊化軟件覆蓋從驅動(dòng)程序到應用層的全部軟件,幫助設計人員將創(chuàng )意快速變成產(chǎn)品原型,順利轉化成最終設計。 |