肖艷軍,毛 哲,溫 博,周 圍,孫凌宇,孟召宗,劉偉玲
儀器設備研制與應用
基于STM32的綜合實驗平臺設計
肖艷軍,毛 哲,溫 博,周 圍,孫凌宇,孟召宗,劉偉玲
(河北工業大學機械工程學院,天津 300131)
設計了以STM32單片機為核心的單片機實驗平臺,作為對51單片機學習的補充。采用模塊化設計,考慮到學生學習能力以及需對STM32片上外設的掌握程度,設計了相應模塊以及對應的17個實驗。插孔式連接方式使實驗模塊之間連接更加可靠穩定。該實驗平臺已在單片機教學中使用,提高了學生對單片機的學習興趣,鍛煉了學生的自主創新能力以及工程實踐能力。
STM32;模塊化設計;實驗平臺
單片機作為儀器類專業本科生的必修內容,而且在各行各業中應用廣泛[1-4]。目前本科階段所教授的微控制器對象一般為51單片機[5-6]。隨著嵌入式技術的發展,傳統的8位單片機無論在片上資源及功能上都漸漸無法滿足市場需求。所以,單片機實驗教學課程急需改革,需要注入新的活力[7-9]。
STM32系列單片機是ST(意法半導體)公司推出的基于ARMv7架構的32位單片機,與51單片機相比,STM32片上資源豐富,功能更加強大,具有極高的性價比[10-11]。在學習過51單片機的基礎上,通過庫函數開發的方式,可以快速地學習并掌握STM32[12]。目前市面雖有很多STM32的開發板,但這些開發板為減小PCB面積、減小生產成本,其外設與單片機引腳的連接方式已經固定,不能根據具體需要來隨意支配單片機的I/O口,不能最大程度地鍛煉學生的實踐與操作能力。且I/O口都以插針的形式引出,連接不可靠。基于以上原因,本文設計了基于STM32F1系列單片機的綜合實驗平臺并設計了相關實驗。
以使學生通過實驗能夠熟練掌握STM32各種片上外設為原則,以實現理論教學與實踐訓練相結合為目標,結合我校“工學并舉”的辦學特色,基于模塊化理念,設計了各種功能模塊。
基本功能模塊為保證實驗板正常工作的模塊,包括單片機最小系統、電壓轉換模塊、BOOT模塊以及USB轉TTL模塊。
1.1.1 單片機最小系統
STM32的最小系統與51單片機的類似,都包括晶振、復位、電源以及單片機。區別是STM32晶振一般為8 MHz,電源電壓為3.3 V。此外,在單片機OSC32_IN以及OSC32_OUT之間還需接入一振蕩頻率為32.768 kHz的晶振,該晶振可作為STM32-RTC(實時時鐘)的外部時鐘源。在VBAT引腳接入備用電源,單片機掉電后,實時時鐘可繼續計時。最小系統原理圖如圖1所示。

圖1 單片機最小系統原理圖
1.1.2 電壓轉換模塊
由圖1可知,單片機所需工作電壓都為3.3 V,實驗板通過USB口供電,USB所提供的電壓為5 V,所以通過電壓轉換模塊將電壓轉換為3.3 V,電壓轉換模塊通過ASM1117-3.3 V芯片將5 V電壓輸入轉換為3.3 V電壓輸出,為單片機提供工作電源。
1.1.3 BOOT模塊
STM32單片機有2個引腳BOOT0與BOOT1,單片機在上電時通過檢測這2個引腳電平的高低以決定其啟動方式,啟動方式的不同決定啟動區域的不同。具體啟動方式見表1。
內部Flash啟動即正常啟動方式,程序下載到單片機內部即存儲到內部Flash中,該啟動模式下,單片機將自動執行內部Flash中所存儲的程序。
系統存儲器為單片機中一塊特殊的存儲區域,在出廠時就被固化了一段啟動程序。在系統存儲器被 選為啟動區域時,程序燒錄軟件可以通過,可以通 過該程序與單片機進行通信,將程序下載到內部 Flash中。

表1 STM32啟動模式表
內部SRAM沒有存儲功能,掉電后數據消失,但其速度較Flash快,且無需擦除,所以可以在程序調試時使用該啟動項,將程序下載到SRAM中進行調試,調試完成后再將程序下載到Flash中。
1.1.4 USB轉TTL模塊
在整個實驗平臺中,USB既是電源又是與PC進行通信的通信接口,所以,通過CH340芯片實現USB轉TTL,這樣單片機就可以通過USB接口與PC進行通信,實現串口下載程序。
1.1.5 JTAG/SWD下載接口
通過該接口可以使用下載/仿真器進行程序下載與硬件仿真。
其他功能模塊主要為依據STM32片上外設所設計,以體現其功能與用法。
(1)LED燈模塊。可通過LED燈的亮滅判斷I/O口輸出電平的高低。
(2)數碼管模塊。通過I/O口控制數碼管顯示。
(3)蜂鳴器模塊。通過I/O口控制蜂鳴器發聲。
(4)按鍵模塊。通過I/O口檢測高低電平來判斷按鍵是否被按下。
(5)光敏電阻、熱電阻模塊。光敏電阻以及熱電阻分別可根據光強的大小以及溫度的高低改變自身阻值,再通過A/D轉換得到其阻值,即可得到光強與溫度的大小,同時,STM32芯片內部集成有溫度傳感器,可將兩者測得的溫度值進行對比。
(6)串口通信模塊(RS485與RS232通信接口)。集成了工業上常用RS232與RS485通信接口,通過MAX232芯片以及MAX3485芯片將TTL電平與232與485電平之間進行轉換,使單片機能夠與支持232與485接口的設備進行通信,如組態觸摸屏等。
(7)外部存儲器模塊,包括Flash與EEPROM。采用AT24C20 EEPROM芯片,可通過I2C接口與芯片通信實現數據存取。Flash采用W25X16芯片,可通過SPI接口與芯片進行通信實現數據存取。
(8)無線射頻模塊。使用NRF24L01芯片,可通過I2C通信控制。
(9)藍牙模塊。使用HC-05芯片,單片機通過串口與之通信收發數據。
(10)紅外接收模塊。可與遙控器等紅外設備進行通信。
(11)音頻模塊。使用VS1053芯片,單片機可通過SPI接口與其通信實現音頻播放與錄音保存的功能。
(12)SD卡模塊。通過STM32的SDIO與之通信實現數據存取。
(13)高精度AD轉換模塊。采用HX711 芯片,該芯片為24位高精度A/D轉換芯片。配合稱重傳感器可實現高精度測量。
(14)LCD模塊。用于連接液晶屏進行顯示。
圖2為該實驗箱實物圖。

圖2 實驗箱實物圖
編程軟件使用Keil MDK軟件,Keil軟件是一款單片機C語言開發軟件,且同時支持匯編語言開發。根據所支持的單片機的種類分為4種:Keil C51、Keil MDK、Keil C251以及Keil C166(見圖3)。Keil MDK支持的是ARM系列的單片機。

圖3 KEIL官網提供的4款Keil軟件下載
STM32作為32位單片機,其內部的寄存器數量多且大都為32位,若仍直接通過編程對寄存器操作進行編程,則不僅編程工作量大,而且可移植性較差。為此,ST公司提供了STM32的標準固件庫,開發者只需調用固件庫中的函數即可實現對寄存器的操作,這樣就使程序的編寫更加高效且可移植性好,不同的STM32芯片所編寫的程序只需稍加修改甚至不必修改便可互相移植。
既然需要庫函數,那么在創建工程時就需要添加所需要用到的庫函數文件,在使用的STM32芯片型號不經常變更的情況下,比如實驗板上的芯片型號是不會變化的,為了避免每次創建工程時都需要添加庫函數文件,可以直接創建一個具有完整庫函數文件的工程模板,在需要建立新工程時,只需將模板復制1份即可。在官方提供的庫函數文件Project文件夾中,提供了一個芯片型號為STM32F100系列的工程模板,見圖4,可參照該模板建立自己的工程模板。

圖4 固件庫中提供的工程模板
2.3.1 ISP下載與調試
ISP下載是通過USB轉TTL模塊將程序下載到芯片。在程序下載前,需配置BOOT引腳電平,使單片機進入內部存儲器啟動模式,下載完成后再更改BOOT引腳電平使單片機進入內部Flash啟動模式并開始執行程序。該過程較為繁瑣,所以,在USB轉TTL模塊中,通過CH340芯片的DTR與RTS控制BOOT引腳,如圖5所示,不同的電路選擇不同的方式進入內部存儲器啟動模式。這樣,只需在程序下載上位機配置DTR與RTS 2個引腳即可,實現一鍵下載。程序編寫完成且編譯出HEX文件后,在ISP下載軟件中選擇要下載的文件下載即可。
ISP下載沒有調試的功能,只能將程序下載到單片機后觀察單片機的程序運行情況。但在下載程序之前,可以在Keil軟件中進行軟件模擬,不通過單片機,直接在Keil軟件中觀察程序運行的情況。

圖5 ISP下載軟件中的DTR與RTS選項
2.3.2 仿真器下載與調試
與ISP下載相比,仿真器下載不需要配置BOOT引腳,只需在Keil軟件中進行與仿真器相關配置即可。配置完成后,也不需要專用的下載軟件,點擊Keil軟件中LOAD按鈕即可下載,見圖6。若需要硬件調試,在程序編譯完成之后,點擊Keil軟件中DEBUG按鈕即可,程序會自動通過仿真器下載到單片機中。調試時可以實現單步運行,復位等功能,還可具體追蹤某一參數的數值變化等。

圖6 Keil軟件中的LOAD與DEBUG選項
為使學生能夠充分理解學習STM32單片機,配合所設計模塊,設計了基礎實驗項目,如表2所示,高級實驗項目見表3。

表2 實驗箱基礎實驗項目表

表3 實驗箱高級實驗項目表
基礎實驗是為學習STM32片上外設所設計的,一般只涉及單一外設的實驗,由于GPIO外設的特殊性,所有實驗都要使用到。高級實驗是綜合多個外設所形成的綜合性實驗,或者是實驗難度較大的實驗。其中自主設計實驗為開放性實驗,不限實驗所用器件,學生根據所學知識與實驗平臺資源和外部資源,設計出一個完整的測控系統。
圖7為學生自主搭建的溫度檢測與控制系統,檢測環境溫度并通過STM32的高級定時器輸出不同占空比的PWM波經L298N控制直流電機的轉速。同時通過示波器觀察STM32輸出的波形變化。

圖7 學生搭建的溫度檢測與控制系統
本文圍繞STM32單片機的片上外設以及單片機本科教學,設計了STM32實驗平臺與配套的實驗,使本科階段的單片機教學能夠追趕嵌入式技術發展的潮流。新的教學內容與新的單片機也激發了學生對于單片機學習的興趣,對儀器類專業綜合實驗平臺的建設具有重要意義。
[1] 許京雷.嵌入式系統課程內容設置[J].中國教育技術裝備,2017(8): 85–86.
[2] 張萍,馬樹軍,史可福.基于51單片機的指紋電子密碼鎖的設計與實現[J].實驗室研究與探索,2018, 37(8): 141–145, 168.
[3] 侯衛周,顧玉宗.一款單片機系統控制的溫控智能水杯設計[J].實驗室研究與探索,2017, 36(3): 70–74.
[4] 張仲明,郭東偉,呂巍,等.基于DS18B20溫度傳感器的溫度測量系統設計[J].實驗技術與管理,2018, 35(5): 82–85, 94.
[5] 王琳霖,王偉,曹國強,等.基于單片機的機電控制實訓平臺設計[J].實驗技術與管理,2018, 35(4): 82–85.
[6] 朱向慶,黎東濤,蘇超益,等.適合于項目教學法的三合一單片機實驗箱設計[J].實驗技術與管理,2013, 30(7): 55–59.
[7] 肖艷軍,周圍,楊澤青,等.測控專業單片機實驗教學模式的探索[J].教育教學論壇,2016(46): 265–266.
[8] 肖艷軍,楊澤青,周圍,等.測控專業人才培養目標及培養模式創新性研究[J].實驗技術與管理,2016, 33(3): 20–22.
[9] 肖艷軍,孫英培,孟憲樂,等.關于單片機原理及應用和PLC課程的教學改革[J].科技信息,2014(8): 23–23.
[10] 滿紅,鄭富榮,胡偉華,等.基于STM32單片機的教學用尋跡平衡車的設計與實現[J].機器人技術與應用,2018(4): 39–42.
[11] 楊剛,千博,陳建安,等.四軸飛行器嵌入式教學實驗平臺的構建[J].實驗科學與技術,2018, 16(1): 132–136, 140.
[12] 盛慶華,杜永均,羅飛,等.基于STM32機械臂解魔方算法研究[J].實驗室研究與探索,2017, 36(4): 29–32.
Design of comprehensive experimental platform based on STM32
XIAO Yanjun, MAO Zhe, WEN Bo, ZHOU Wei, SUN Lingyu, MENG Zhaozong, LIU Weiling
(School of Mechanical Engineering, Hebei University of Technology, Tianjin 300131, China)
The experimental platform of the SCM with STM32 as the core is designed as a supplement to the learning of 51 SCM. With the modular design and in consideration of students’ learning ability and the need to master the peripherals of STM32 chip, the corresponding modules and 17 corresponding experiments are designed. The socket connection mode makes the connection between the experimental modules more reliable and stable. The experimental platform has been used in the teaching of SCM, which improves students’ interest in learning SCM and trains their ability of independent innovation and engineering practice.
STM32; modular design; experimental platform
TP368.2;G484
A
1002-4956(2019)12-0072-05
10.16791/j.cnki.sjg.2019.12.017
2019-04-16
教育部產學研協同育人項目(201801013016);河北省高等學校教育改革研究與實踐項目(2017GJJG026)
肖艷軍(1976—),男,河北滄州,博士,教授,從事嵌入式系統應用、余熱利用技術、新能源裝備及其關鍵技術等研究。E-mail: x_yanjun2009@163.com
劉偉玲(1973—),女,河北邢臺,博士,副教授,主要研究方向為測控儀器設計。