本章參考資料:1、《STM8和STM32產品選型手冊》2、SetupSTM32CubeMX-4.16.0.exe
4.1 什么是STM32
STM32,從字面上來理解,ST是意法半導體,M是Microelectronics的縮寫,32表示32位,合起來理解,STM32就是指ST公司開發的32位微控制器。在如今的32位控制器當中,STM32可以說是最璀璨的新星,它受寵若嬌,大受工程師和市場的青睞,無芯能出其右。
4.1.1 STM32誕生的背景
51 是嵌入式學習中一款入門級的經典 MCU,因其結構簡單,易於教學,且可以通過串口編程而不需要額外的仿真器,所以在教學時被大量采用,至今很多大學在嵌入式教學 中用的還是 51。51 誕生於 70 年代,屬於傳統的 8 位單片機,如今,久經歲月的洗禮,既 有其輝煌又有其不足。現在的市場產品競爭越來越激烈,對成本極其敏感,相應地對 MCU 的 性能要求也更苛刻:更多功能,更低功耗,易用界面和多任務。面對這些要求,51 現有的 資源就顯得得抓襟見肘。所以無論是高校教學還是市場需求,都急需一款新的 MCU 來 為這個領域注入新的活力。
基於這樣的市場需求, ARM 公司推出了其全新的基於 ARMv7 架構的 32 位 Cortex-M3 微控制器內核。緊隨其后,ST(意法半導體)公司就推出了基於 Cortex-M3 內核的 MCU—STM32。STM32 憑借其產品線的多樣化、極高的性價比、簡單易用的庫開發方式,迅速在眾多 Cortex-M3 MCU 中脫穎而出,成為最閃亮的一顆新星。STM32 一上市就迅速占領了中低端 MCU 市場,受到了市場和工程師的無比青睞,頗有星火燎原之勢。
作為一名合格的嵌入式工程師,面對新出現的技術,我們不是充耳不聞,而是要盡快 吻合市場的需要,跟上技術的潮流。如今 STM32 的出現就是一種趨勢,一種潮流,我們要 做的就是搭上這趟快車,讓自己的技術更有競爭力。
4.2 STM32能做什么
STM32屬於一個微控制器,自帶了各種常用通信接口,比如USART、I2C、SPI等,可接非常多的傳感器,可以控制很多的設備。現實生活中,我們接觸到的很多電器產品都有STM32的身影,比如智能手環,微型四軸飛行器,平衡車、移動POST機,智能電飯鍋,3D打印機等等。下面我們以最近最為火爆的兩個產品來講解下,一個是手環,一個是飛行器。
1.2.1 智能手環
圖 4-1 三星 GearFit 智能手環
紅圈:STM32F439ZIY6S處理器,2048KB FLASH ,256KB RAM ,WLCSP143封裝。
橙圈:Macronix MX69V28F64 16 MB閃存,基於MCP封裝的存儲器,是一種包含了NOR和SRAM的閃存,這在手環手機這種移動設備中經常使用,優點是體積小,可以減小PCB的尺寸。這個閃存用的439的FSMC接口驅動。
黃圈:InvenSense MPU-6500陀螺儀/加速度計,用439的I2C接口驅動。
綠圈:博通BCM4334WKUBG芯片,支持802.11n,藍牙4.0+HS以及FM接收芯片,用439的SDIO或者SPI接口驅動。
顯示:1.84"可彎曲屏幕(Super AMOLED),432 x 128像素。觸摸部分用439的I2C接口驅動,OLED顯示部分用LTDC接口驅動。
表格 41 三星Gear Fit 和秉火STM32F767挑戰者資源對比
資源 |
三星Gear Fit |
秉火STM32F767挑戰者 |
CPU |
STM32F439ZIY6S,WLCSP143封裝 |
STM32F767IGT6,LQPF176 封裝 |
存儲 |
NOR+SRAM 16MB,FSMC接口 |
SDRAM 8MB,FMC接口 |
顯示 |
1.84寸的 AMOLED,RGB接口,LTDC驅動 |
5寸電容屏,RGB接口,LTDC驅動 |
陀螺儀 |
MPU6050,I2C接口 |
MPU6050,I2C接口 |
無線通信 |
藍牙:博通BCM4334,SDIO或者SPI接口 |
WIFI: 博通BCM43362,SDIO接口 |
除了這幾個重要資源的對比,我們的767開發板上還集成了以太網,音頻,CAN,485,232,USB轉串口,蜂鳴器,LED,電容按鍵等外設資源,可以充分的學習767這個芯片。在板子上面,還可以跑系統ucosiii,學習圖形界面emwin。如果功夫所至,學完之后,自己都可以做一個類似Gear Fit這樣的手環。可很多人又會說,Gear Fit 涉及硬件和軟件,整個系統這么復雜,並不是一個人可以完成的。說的沒錯,我們可以做不了,但是我們的能力可以無限接近,多學點,技多不壓身嘛。
圖 4-2 ucosiii+emwin 做的系統界面(767開發板的開機界面)
4.2.2 微型四軸飛行器
現在無人機非常火熱,高端的無人機用STM32做不來,但是小型的四軸飛行器用STM32還是綽綽有余的。如圖 43所示飛行器的基本都可以用STM32搞定。
圖 4-3 微型四軸飛行器
上面的是屬於產品,如果想自己DIY,可以在入門STM32之后,買一本飛行器DIY的書,邊做邊學。入門級的書籍推薦《四軸飛行器DIY—基於STM32微控制器》,見圖 4-4。
圖 4-4 四軸飛行器DIY —基於STM32微控制器
4.2.3 淘寶眾籌
學會了STM32,想自己做產品,如何實現自己的夢想,淘寶眾籌吧。做出產品原型,用別人的錢為自己的夢想買單。
淘寶眾籌科技類網址:這里面有很多小玩意都可以用STM32實現,只要你的創意到了,就會有人買單,前提是我們要先學會STM32。
https://hi.taobao.com/market/hi/list.php?spm=a215p.1596646.1.8.LbVyJk#type=121288001
圖 4-5 淘寶眾籌科技類
4.3 STM32怎么選型
4.3.1 STM32分類
STM32有很多系列,可以滿足市場的各種需求,從內核上分有Cortex-M0、M3、M4和M7這幾種,每個內核又大概分為主流、高性能和低功耗。具體的見表格 42。
單純從學習的角度出發,可以選擇F1、F4和F7,F1代表了基礎型,基於Cortex-M3內核,主頻為72MHZ,F4代表了高性能,基於Cortex-M4內核,主頻180M,F7代表了高性能,基於Cortex-M7內核,主頻216M。
之於F1,F4(429系列以上)和F7(746系列以上)除了內核不同和主頻的提升外,升級的明顯特色就是帶了LCD控制器和攝像頭接口,支持SDRAM,這個區別在項目選型上會被優先考慮。
表格 4-2 STM8和STM32分類
CPU位數 |
內核 |
系列 |
描述 |
32 |
Cortex-M0 |
STM32-F0 |
入門級 |
STM32-L0 |
低功耗 |
||
Cortex-M3 |
STM32-F1 |
基礎型,主頻72M |
|
STM32-F2 |
高性能 |
||
STM32-L1 |
低功耗 |
||
Cortex-M4 |
STM32-F3 |
混和信號 |
|
STM32-F4 |
高性能,主頻180M |
||
STM32-L4 |
低功耗 |
||
Cortex-M7 |
STM32-F7 |
高性能,主頻216M |
|
8 |
超級版6502 |
STM8S |
標准系列 |
STM8AF |
標准系列的汽車應用 |
||
STM8AL |
低功耗的汽車應用 |
||
STM8L |
低功耗 |
4.3.2 STM32 命名方法
這里我們以秉火F767挑戰者用的型號STM32F767IGT6來講解下STM32的命名方法。
表格 43 STM32F767IGT6命名解釋
— |
STM32 |
F |
767 |
I |
G |
T |
6 |
家族 |
STM32 表示32bit的MCU |
||||||
產品類型 |
F表示基礎型 |
||||||
具體特性 |
767表示高性能且帶DSP、FPU和硬解JPEG,支持雙浮點 |
||||||
引腳數目 |
I表示176pin,其他常用的為C表示48,R表示64,V表示100,Z表示144,B表示208,N表示216 |
||||||
FLASH大小 |
G表示1024KB,其他常用的為C表示256,E表示512,I表示2048 |
||||||
封裝 |
T表示QFP封裝,這個是最常用的封裝 |
||||||
溫度 |
6表示溫度等級為A :-40~85° |
有關更詳細的命名方法見圖 4-6。
圖 4-6 STM8和STM32命名方法,摘自《STM8和STM32選型手冊》
4.3.3 選擇合適的MCU
了解了STM32的分類和命名方法之后,就可以根據項目的具體需求先大概選擇哪類內核的MCU,普通應用,不需要接大屏幕的一般選擇Cortex-M3內核的F1系列,如果要追求高性能,需要大量的數據運算,且需要外接RGB大屏幕的則選擇Cortex-M4內核的F429系列。如果需要硬解JEPG圖片和雙浮點計算則選用Cortex-M7內核的F767系列.
明確了大方向之后,接下來就是細分選型,先確定引腳,引腳多的功能就多,價格也貴,具體得根據實際項目中需要使用到什么功能,夠用就好。確定好了引腳數目之后再選擇FLASH大小,相同引腳數的MCU會有不同的FLASH大小可供選擇,這個也是根據實際需要選擇,程序大的就選擇大點的FLASH,要是產品一量產,這些省下來的都是錢啊。有些月出貨量以KK(百萬數量級)為單位的產品,不僅是MCU,連電阻電容能少用就少用,更甚者連PCB的過孔的多少都有講究。項目中的元器件的選型的水深着啊,很多學問。
1. 如何分配原理圖IO
在畫原理圖之前,一般的做法是先把引腳分類好,然后才開始畫原理圖,引腳分類具體見表格 44。
表格 4-4 畫原理圖時的引腳分類
引腳分類 |
引腳說明說明 |
電源 |
(VBAT)、(VDD VSS)、(VDDA VSSA)、(VREF+ VREF-)等 |
晶振IO |
主晶振IO,RTC晶振IO |
下載IO |
用於JTAG下載的IO:JTMS、JTCK、JTDI、JTDO、NJTRST |
BOOT IO |
BOOT0、BOOT1,用於設置系統的啟動方式 |
復位IO |
NRST,用於外部復位 |
上面5部分IO組成的系統我們也叫做最小系統 |
|
GPIO |
專用器件接到專用的總線,比如I2C,SPI,SDIO,FSMC,DCMI這些總線的器件需要接到專用的IO |
普通的元器件接到GPIO,比如蜂鳴器,LED,按鍵等元器件用普通的GPIO即 |
|
如果還有剩下的IO,可根據項目需要引出或者不引出 |
2. 如何尋找IO的功能說明
要想根據功能來分配IO,那就得先知道每個IO的功能說明,這個我們可以從官方的數據手冊里面找到。在學習的時候,有兩個官方資料我們會經常用到,一個是參考手冊(英文叫Reference manual),另外一個是數據手冊(英文叫Data Sheet)。兩者的具體區別見表格 45。
表格 45 參考手冊和數據手冊的內容區別
手冊 |
主要內容 |
說明 |
參考手冊 |
片上外設的功能說明和寄存器描述 |
對片上每一個外設的功能和使用做了詳細的說明,包含寄存器的詳細描述。編程的時候需要反復查詢這個手冊。 |
數據手冊 |
功能概覽 |
主要講這個芯片有哪些功能,屬於概括性的介紹。芯片選型的時候首先看這個部分。 |
引腳說明 |
詳細描述每一個引腳的功能,設計原理圖的時候和寫程序的時候需要參考這部分。 |
|
內存映射 |
講解該芯片的內存映射,列舉每個總線的地址和包含有哪些外設。 |
|
封裝特性 |
講解芯片的封裝,包含每個引腳的長度寬度等,我們畫PCB封裝的時候需要參考這部分的參數。 |
一句話概括:數據手冊主要用於芯片選型和設計原理圖時參考,參考手冊主要用於在編程的時候查閱。官方的這兩個文檔可以從官方網址里面下載:http://www.stmcu.org/document/list/index/category-877,也可以從我們配置的光盤資料里面找到。
在數據手冊中,有關引腳定義的部分在Pinouts and pin description這個小節中,具體定義見表格 4-6。
表格 4-6 數據手冊中對引腳定義
表格 4-7 對引腳定義的解讀
名稱 |
縮寫 |
說明 |
① 引腳序號 |
阿拉伯數字表示LQFP封裝,英文字母開頭的表示BGA封裝。引腳序號這里列出了有6種封裝型號,具體使用哪一種要根據實際情況來選擇。 |
|
② 引腳名稱 |
指復位狀態下的引腳名稱 |
|
③ 引腳類型 |
S |
電源引腳 |
I |
輸入引腳 |
|
I/O |
輸入/輸出引腳 |
|
④ I/O結構 |
FT |
兼容5V |
TTa |
只支持3V3,且直接到ADC |
|
B |
BOOT引腳 |
|
RST |
復位引腳,內部帶弱上拉 |
|
⑤ 注意事項 |
對某些IO要注意的事項的特別說明 |
|
⑥ 復用功能 |
IO的復用功能,過GPIOx_AFR寄存器來配置選擇。一個IO口可以復用為多個功能,即一腳多用,這個在設計原理圖和編程的時候要靈活選擇。 |
|
⑦ 額外功能 |
IO的額外功能,通過直連的外設寄存器配置來選擇。個人覺得在使用上跟復用功能差不多。 |
3. 開始分配原理圖IO
比如我們的F767挑戰者使用的MCU型號是STM32F767IGT6,封裝為LQFP176,我們在數據手冊中找到這個封裝的引腳定義,然后根據引腳序號,一個一個復制出來,整理成excel表。具體整理方法按照表格 44 畫原理圖時的引腳分類即可。分配好之后就開始畫原理圖。
4.3.4 PCB哪里打樣
設計好原理圖,畫好PCB之后,需要把板子做出來,進行軟硬件聯調。首先得PCB打樣,這里我推薦一家我經常打樣的廠家,深圳嘉立創(JLC),行業標桿,良心價格,網址:http://www.sz-jlc.com。一塊10CM*10CM以內的板子,三天做好,50塊就可以搞定,還包郵,簡直便宜到掉渣。如果你足夠懶,不想自己焊接電阻電容二三極管什么的,嘉立創還可以幫你把PCB樣板上的阻容貼好給你,打樣貼片一條龍。
樣品做好了,軟硬件什么都OK,要小批量怎么辦?還是找JLC。