第4章 初識STM32


本章參考資料:1、《STM8STM32產品選型手冊》2SetupSTM32CubeMX-4.16.0.exe

4.1  什么是STM32

STM32,從字面上來理解,ST是意法半導體,MMicroelectronics的縮寫,32表示32位,合起來理解,STM32就是指ST公司開發的32位微控制器。在如今的32位控制器當中,STM32可以說是最璀璨的新星,它受寵若嬌,大受工程師和市場的青睞,無芯能出其右。

4.1.1  STM32誕生的背景

51 是嵌入式學習中一款入門級的 MCU,因其結構簡單,易於教學,且可以通過串口編程而不需要額外的仿真器,所以在教學時被大量采用,至今很多大學在嵌入式教學 中用的還是 5151 誕生於 70 年代,屬於傳統的 8 位單片機,如今,久經歲月的洗禮,既 有其輝煌又有其不足。現在的市場產品競爭越來越激烈,對成本極其敏感,相應地對 MCU 性能要求也更苛刻:更多功能,更低功耗,易用界面和多任務。面對這些要求,51 現有的 資源就顯得得抓襟見肘。所以無論是高校教學還是市場需求,都急需一款新的 MCU 來 為這個領域注入新的活力。

基於這樣的市場需求, ARM 公司推出了其全新的基於 ARMv7 架構的 32 Cortex-M微控制器內核。緊隨其后,ST(意法半導體)公司就推出了基於 Cortex-M3 內核的 MCU—STM32STM32 憑借其產品線的多樣化、極高的性價比、簡單易用的庫開發方式,迅速在眾多 Cortex-M3 MCU 中脫穎而出,成為最閃亮的一顆新星。STM32 一上市就迅速占領了中低端 MCU 市場,受到了市場和工程師的無比青睞,頗有星火燎原之勢。

作為一名合格的嵌入式工程師,面對新出現的技術,我們不是充耳不聞,而是要盡快 吻合市場的需要,跟上技術的潮流。如今 STM32 的出現就是一種趨勢,一種潮流,我們要 做的就是搭上這趟快車,讓自己的技術更有競爭力

4.2  STM32能做什么

STM32屬於一個微控制器,自帶了各種常用通信接口,比如USARTI2CSPI等,可接非常多的傳感器,可以控制很多的設備。現實生活中,我們接觸到的很多電器產品都有STM32的身影,比如智能手環,微型四軸飛行器,平衡車、移動POST機,智能電飯鍋,3D打印機等等。下面我們以最近最為火爆的兩個產品來講解下,一個是手環,一個是飛行器。

1.2.1  智能手環

 

4-1 三星 GearFit 智能手環

紅圈:STM32F439ZIY6S處理器,2048KB FLASH 256KB RAM ,WLCSP143封裝。

橙圈:Macronix MX69V28F64 16 MB閃存,基於MCP封裝的存儲器,是一種包含了NORSRAM的閃存,這在手環手機這種移動設備中經常使用,優點是體積小,可以減小PCB的尺寸。這個閃存用的439FSMC接口驅動。

黃圈:InvenSense MPU-6500陀螺儀/加速度計,用439I2C接口驅動。

綠圈:博通BCM4334WKUBG芯片,支持802.11n,藍牙4.0+HS以及FM接收芯片,用439SDIO或者SPI接口驅動。

顯示:1.84"可彎曲屏幕(Super AMOLED)432 x 128像素。觸摸部分用439I2C接口驅動,OLED顯示部分用LTDC接口驅動。

表格 41 三星Gear Fit 和秉火STM32F767挑戰者資源對比

資源

三星Gear Fit

秉火STM32F767挑戰者

CPU

STM32F439ZIY6SWLCSP143封裝

STM32F767IGT6LQPF176 封裝

存儲

NOR+SRAM  16MBFSMC接口

SDRAM  8MBFMC接口

顯示

1.84寸的 AMOLEDRGB接口,LTDC驅動

5寸電容屏,RGB接口,LTDC驅動

陀螺儀

MPU6050I2C接口

MPU6050I2C接口

無線通信

藍牙:博通BCM4334SDIO或者SPI接口

WIFI: 博通BCM43362SDIO接口

除了這幾個重要資源的對比,我們的767開發板上還集成了以太網,音頻,CAN485232USB轉串口,蜂鳴器,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-M0M3M4M7這幾種,每個內核又大概分為主流、高性能和低功耗。具體的見表格 42。

單純從學習的角度出發,可以選擇F1F4F7F1代表了基礎型,基於Cortex-M3內核,主頻為72MHZF4代表了高性能,基於Cortex-M4內核,主頻180MF7代表了高性能,基於Cortex-M7內核,主頻216M

之於F1F4429系列以上)和F7746系列以上)除了內核不同和主頻的提升外,升級的明顯特色就是帶了LCD控制器和攝像頭接口,支持SDRAM,這個區別在項目選型上會被優先考慮。

表格 4-2 STM8STM32分類

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 表示32bitMCU

產品類型

F表示基礎型

具體特性

767表示高性能且帶DSPFPU和硬解JPEG,支持雙浮點

引腳數目

I表示176pin,其他常用的為C表示48R表示64V表示100Z表示144B表示208N表示216

FLASH大小

G表示1024KB,其他常用的為C表示256E表示512I表示2048

封裝

T表示QFP封裝,這個是最常用的封裝

溫度

6表示溫度等級為A -40~85°

有關更詳細的命名方法見 4-6。

 

4-6 STM8STM32命名方法,摘自《STM8STM32選型手冊》

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

主晶振IORTC晶振IO

下載IO

用於JTAG下載的IOJTMSJTCKJTDIJTDONJTRST

BOOT IO

BOOT0BOOT1,用於設置系統的啟動方式

復位IO

NRST,用於外部復位

上面5部分IO組成的系統我們也叫做最小系統

GPIO

專用器件接到專用的總線,比如I2CSPISDIOFSMCDCMI這些總線的器件需要接到專用的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM